{ pkgs, ... }: { imports = [ ../../home-manager ../../home-manager/development ../../home-manager/gaming.nix ../../home-manager/streamlink.nix ]; terminal.nixUpdateLocation = "/home/worble/Projects/nixos#tuxedo"; terminal.flakeUpdateLocation = "/home/worble/Projects/nixos"; helix.fullInstall = true; home.username = "worble"; home.homeDirectory = "/home/worble"; home.stateVersion = "24.05"; home.packages = with pkgs;[ # general gimp-with-plugins obsidian # cmd line tools rclone inotify-tools libnotify ffmpeg-full # comms teams-for-linux teamspeak6-client # media jellyfin-media-player haruna # misc electrum syncthing dbeaver-bin ruffle popsicle # for headset tune headsetcontrol ]; home.file = { # shaders for mpv ".config/mpv/shaders".source = pkgs.fetchzip { url = "https://github.com/bloc97/Anime4K/releases/download/v4.0.1/Anime4K_v4.0.zip"; sha256 = "sha256-9B6U+KEVlhUIIOrDauIN3aVUjZ/gQHjFArS4uf/BpaM="; stripRoot = false; }; }; # Let Home Manager install and manage itself. programs = { firefox = { profiles.work = import ../../home-manager/firefox/firefox-profile.nix // { id = 1; name = "work"; isDefault = false; settings = { # allow fonts "browser.display.use_document_fonts" = 1; # home page "browser.startup.homepage" = "https://outlook.office.com|https://teams.microsoft.com/v2|https://dev.azure.com/binhsps/Connect/_boards/board/t/Development%20Team/Stories"; }; }; }; mpv = { config = { profile = "gpu-hq"; vo = "gpu-next"; gpu-api = "auto"; gpu-context = "auto"; hwdec = "auto"; screenshot-directory = "/mnt/HDD2/Pictures/"; glsl-shaders = "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; }; extraInput = '' # Optimized shaders for higher-end GPU: CTRL+1 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode A (HQ)" CTRL+2 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode B (HQ)" CTRL+3 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Upscale_Denoise_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode C (HQ)" CTRL+4 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_Restore_CNN_M.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode A+A (HQ)" CTRL+5 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_M.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode B+B (HQ)" CTRL+6 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Upscale_Denoise_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Restore_CNN_M.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode C+A (HQ)" CTRL+0 no-osd change-list glsl-shaders clr ""; show-text "GLSL shaders cleared" ''; }; mangohud = { enable = true; settings = { preset = 1; }; }; kodi = { enable = true; package = pkgs.kodi.withPackages (exts: [ exts.pvr-iptvsimple ]); }; }; systemd.user = { services = { rclone-media = { Unit = { Description = "rclone-media /mnt/HDD2/Videos/"; After = [ "network.target" "mnt-HDD2.mount" ]; # Maybe? https://unix.stackexchange.com/questions/281650/systemd-unit-requiresmountsfor-vs-conditionpathisdirectory # RequiresMountsFor = "/mnt/HDD2/Videos/"; }; Install = { WantedBy = [ "default.target" ]; }; Service = { RestartSec = 10; Restart = "on-failure"; Type = "exec"; ExecStart = "${pkgs.writeShellApplication { name = "rclone-media"; runtimeInputs = [ pkgs.inotify-tools pkgs.libnotify pkgs.rclone ]; text = '' function rclonecopy { file=$1 changed_rel=''${file#"/mnt/HDD2/Videos"} notify-send -a "rclone-media" "rclone for $file triggered" if rclone copyto "$file" media:"media-7gM2gcrxRjXqfj$changed_rel" ; then notify-send -a "rclone-media" "rclone complete for $file" else notify-send -u critical -a "rclone-media" "rclone failed for $file" fi } inotifywait -mr \ --format '%w%f' \ -e close_write \ /mnt/HDD2/Videos/ | while read -r file; do rclonecopy "$file" done ''; }}/bin/rclone-media"; }; }; }; }; }