{ config, lib, pkgs, pkgs-stable, ... }: let inherit (pkgs) anime4k; # Use writeText instead of writeLua luacheck can't cry about the long lines autoAnime4k = pkgs.writeText "auto-anime4k-switcher.lua" '' local function get_nearest(x, numbers) local min_index = nil local min_dist = math.huge for i, n in ipairs(numbers) do local d = math.abs(n - x) if d < min_dist then min_index = i min_dist = d end end return numbers[min_index] end -- Fast -- local shader_map = { -- [1080] = "${anime4k}/Anime4K_Clamp_Highlights.glsl:${anime4k}/Anime4K_Restore_CNN_M.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_M.glsl:${anime4k}/Anime4K_AutoDownscalePre_x2.glsl:${anime4k}/Anime4K_AutoDownscalePre_x4.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_S.glsl", -- [720] = "${anime4k}/Anime4K_Clamp_Highlights.glsl:${anime4k}/Anime4K_Restore_CNN_Soft_M.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_M.glsl:${anime4k}/Anime4K_AutoDownscalePre_x2.glsl:${anime4k}/Anime4K_AutoDownscalePre_x4.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_S.glsl", -- [480] = "${anime4k}/Anime4K_Clamp_Highlights.glsl:${anime4k}/Anime4K_Upscale_Denoise_CNN_x2_M.glsl:${anime4k}/Anime4K_AutoDownscalePre_x2.glsl:${anime4k}/Anime4K_AutoDownscalePre_x4.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_S.glsl" -- } -- HQ local shader_map = { [1080] = "${anime4k}/Anime4K_Clamp_Highlights.glsl:${anime4k}/Anime4K_Restore_CNN_VL.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_VL.glsl:${anime4k}/Anime4K_AutoDownscalePre_x2.glsl:${anime4k}/Anime4K_AutoDownscalePre_x4.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_M.glsl", [720] = "${anime4k}/Anime4K_Clamp_Highlights.glsl:${anime4k}/Anime4K_Restore_CNN_Soft_VL.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_VL.glsl:${anime4k}/Anime4K_AutoDownscalePre_x2.glsl:${anime4k}/Anime4K_AutoDownscalePre_x4.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_M.glsl", [480] = "${anime4k}/Anime4K_Clamp_Highlights.glsl:${anime4k}/Anime4K_Upscale_Denoise_CNN_x2_VL.glsl:${anime4k}/Anime4K_AutoDownscalePre_x2.glsl:${anime4k}/Anime4K_AutoDownscalePre_x4.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_M.glsl" } local resolutions = { 1080, 720, 480 } mp.register_event("file-loaded", function() local height = mp.get_property_number("video-params/h") local shaders = shader_map[height] if not shaders then height = get_nearest(height, resolutions) shaders = shader_map[height] end mp.osd_message("Using " .. height .. "p Anime4K shaders") mp.commandv("change-list", "glsl-shaders", "set", shaders) end) ''; in { nixpkgs.config = { allowUnfree = true; }; nixpkgs.overlays = [ (self: super: { mpv = super.wrapMpv (super.mpv.unwrapped.override { sixelSupport = true; }) { scripts = [ self.mpvScripts.mpris ]; }; }) ]; # Some programs need SUID wrappers, can be configured further or are # started in user sessions. # programs.mtr.enable = true; # programs.gnupg.agent = { # enable = true; # enableSSHSupport = true; # }; programs.direnv = { enable = true; enableZshIntegration = true; nix-direnv.enable = true; silent = true; }; programs.virt-manager.enable = true; programs.zsh.enable = true; programs.corectrl.enable = true; programs.steam = { enable = true; remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server }; # enable dynamic bin executables programs.nix-ld.enable = true; programs.nix-ld.libraries = with pkgs; [ # add libraries here libGL ]; #backlight tool programs.light.enable = true; programs.nm-applet.enable = true; # List packages installed in system profile. To search, run: # $ nix search wget environment.systemPackages = with pkgs; [ vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. neovim wl-clipboard bat anime4k socat eza wget foot spaceship-prompt git bitwarden zip xclip fd fzf zotero jdk11 hunspell hunspellDicts.en_US pavucontrol zoxide xcp polkit_gnome unzip rocmPackages.rccl ffmpeg libva-utils nixfmt-rfc-style nil kdePackages.qt6ct ripgrep xwayland-satellite ]; }