{ pkgs, ... }: { imports = [ ../../home-manager/base.nix ../../home-manager/development/all.nix ../../home-manager/gaming.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 # media jellyfin-media-player haruna fooyin strawberry # misc electrum gpu-screen-recorder-gtk syncthing ]; home.file = { # # Building this configuration will create a copy of 'dotfiles/screenrc' in # # the Nix store. Activating the configuration will then make '~/.screenrc' a # # symlink to the Nix store copy. # ".screenrc".source = dotfiles/screenrc; # # You can also set the file content immediately. # ".gradle/gradle.properties".text = '' # org.gradle.console=verbose # org.gradle.daemon.idletimeout=3600000 # ''; }; # 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"; }; }; }; # install the shaders from anime4k directory for this to work mpv = { enable = true; config = { profile = "gpu-hq"; vo = "gpu-next"; gpu-api = "vulkan"; hwdec = "vulkan"; screenshot-directory = "/mnt/HDD1/Pictures/"; screenshot-template = "%F/%F_snapshot_%P"; 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"; }; }; 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/HDD1/Videos/"; After = [ "network.target" "mnt-HDD1.mount" ]; }; Install = { WantedBy = [ "default.target" ]; }; Service = { 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/HDD1/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/HDD1/Videos/ | while read -r file; do rclonecopy "$file" done ''; }}/bin/rclone-media"; }; }; }; }; }