diff --git a/configuration.nix b/configuration.nix index c750833..80c9f52 100644 --- a/configuration.nix +++ b/configuration.nix @@ -181,8 +181,8 @@ # services.openssh.enable = true; # Open ports in the firewall. - # networking.firewall.allowedTCPPorts = [ ... ]; - # networking.firewall.allowedUDPPorts = [ ... ]; + networking.firewall.allowedTCPPorts = [ ]; + networking.firewall.allowedUDPPorts = [ ]; # Or disable the firewall altogether. # networking.firewall.enable = false; diff --git a/flake.lock b/flake.lock index 47ae228..cd67d8a 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1734343412, - "narHash": "sha256-b7G8oFp0Nj01BYUJ6ENC9Qf/HsYAIZvN9k/p0Kg/PFU=", + "lastModified": 1735048446, + "narHash": "sha256-Tc35Y8H+krA6rZeOIczsaGAtobSSBPqR32AfNTeHDRc=", "owner": "nix-community", "repo": "disko", - "rev": "a08bfe06b39e94eec98dd089a2c1b18af01fef19", + "rev": "3a4de9fa3a78ba7b7170dda6bd8b4cdab87c0b21", "type": "github" }, "original": { @@ -61,11 +61,11 @@ ] }, "locked": { - "lastModified": 1734344598, - "narHash": "sha256-wNX3hsScqDdqKWOO87wETUEi7a/QlPVgpC/Lh5rFOuA=", + "lastModified": 1735053786, + "narHash": "sha256-Gm+0DcbUS338vvkwyYWms5jsWlx8z8MeQBzcnIDuIkw=", "owner": "nix-community", "repo": "home-manager", - "rev": "83ecd50915a09dca928971139d3a102377a8d242", + "rev": "35b98d20ca8f4ca1f6a2c30b8a2c8bb305a36d84", "type": "github" }, "original": { @@ -81,11 +81,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1734400565, - "narHash": "sha256-vfyvUlF1wVVXy/Au3fQpa8NMQbocg/oTgNuPS7MoesA=", + "lastModified": 1735177600, + "narHash": "sha256-I51oo2juXWvbBHBwuisXlDelwPzSBghDc3hI/feRDk0=", "owner": "nix-community", "repo": "nix-vscode-extensions", - "rev": "c2efba4b42988d8573f914cad6431b5bd614935d", + "rev": "abc6bc047bffc62632c043708ee23091bc500611", "type": "github" }, "original": { @@ -112,11 +112,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1734119587, - "narHash": "sha256-AKU6qqskl0yf2+JdRdD0cfxX4b9x3KKV5RqA6wijmPM=", + "lastModified": 1734649271, + "narHash": "sha256-4EVBRhOjMDuGtMaofAIqzJbg4Ql7Ai0PSeuVZTHjyKQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "3566ab7246670a43abd2ffa913cc62dad9cdf7d5", + "rev": "d70bd19e0a38ad4790d3913bf08fcbfc9eeca507", "type": "github" }, "original": { diff --git a/tuxedo/home-manager/firefox-profile.nix b/home-manager/firefox/firefox-profile.nix similarity index 100% rename from tuxedo/home-manager/firefox-profile.nix rename to home-manager/firefox/firefox-profile.nix diff --git a/home-manager/firefox/firefox.nix b/home-manager/firefox/firefox.nix new file mode 100644 index 0000000..ed64631 --- /dev/null +++ b/home-manager/firefox/firefox.nix @@ -0,0 +1,20 @@ +{ inputs, config, pkgs, ... }: + +{ + programs = { + firefox = { + enable = true; + languagePacks = [ + "en-GB" + ]; + policies = { + "DisplayMenuBar" = true; + }; + profiles.default = import ./firefox-profile.nix // { + id = 0; + name = "default"; + isDefault = true; + }; + }; + }; +} diff --git a/home-manager/terminal.nix b/home-manager/terminal.nix new file mode 100644 index 0000000..4ee916c --- /dev/null +++ b/home-manager/terminal.nix @@ -0,0 +1,119 @@ +{ lib, inputs, config, pkgs, ... }: + +with lib; + +let + cfg = config.programs.atuin; +in +{ + options.terminal = { + nixUpdateLocation = mkOption { + type = types.str; + }; + flakeUpdateLocation = mkOption { + type = types.str; + }; + }; + + config = { + home.packages = with pkgs;[ + blesh + nerd-fonts.space-mono + ]; + + programs = { + bash = { + enable = true; + bashrcExtra = '' + source $(blesh-share)/ble.sh + bleopt canvas_winch_action=redraw-prev + ''; + }; + + starship.enable = true; + + atuin.enable = true; + + zellij = { + enable = true; + enableBashIntegration = true; + settings = { + theme = "dracula"; + }; + }; + + direnv = { + enable = true; + enableBashIntegration = true; + nix-direnv.enable = true; + }; + + git = { + enable = true; + delta.enable = true; + }; + + gitui = { + enable = true; + }; + + helix.enable = true; + + bat = { + enable = true; + }; + + eza = { + enable = true; + enableBashIntegration = true; + git = true; + extraOptions = [ + "--color=auto" + "--icons=always" + "--group-directories-first" + "--header" + ]; + }; + + bottom = { + enable = true; + }; + + fd = { + enable = true; + }; + + ripgrep = { + enable = true; + }; + + topgrade = { + enable = true; + settings = { + misc = { + assume_yes = true; + }; + linux = { + nix_arguments = "--flake ${config.terminal.nixUpdateLocation}"; + }; + pre_commands = { + nix-flake-update = "sudo nix flake update --flake ${config.terminal.flakeUpdateLocation}"; + }; + }; + }; + + alacritty = { + enable = true; + settings = { + font = { + normal = { + family = "SpaceMono Nerd Font"; + style = "Regular"; + }; + size = 14; + }; + }; + }; + }; + }; +} diff --git a/home-manager/vscode.nix b/home-manager/vscode.nix new file mode 100644 index 0000000..4dbd108 --- /dev/null +++ b/home-manager/vscode.nix @@ -0,0 +1,45 @@ +{ inputs, config, pkgs, ... }: + +let + vs-extensions = inputs.nix-vscode-extensions.extensions.x86_64-linux.open-vsx; +in +{ + home.packages = with pkgs;[ + nerd-fonts.space-mono + ]; + + programs = { + vscode = { + enable = true; + package = pkgs.vscodium; + mutableExtensionsDir = false; + extensions = [ + vs-extensions.biomejs.biome + vs-extensions.mkhl.direnv + vs-extensions.dracula-theme.theme-dracula + vs-extensions.dbaeumer.vscode-eslint + vs-extensions.eamodio.gitlens + vs-extensions.pkief.material-icon-theme + vs-extensions.jnoortheen.nix-ide + vs-extensions.esbenp.prettier-vscode + vs-extensions.bradlc.vscode-tailwindcss + ]; + userSettings = { + "workbench.iconTheme" = "material-icon-theme"; + "window.titleBarStyle" = "custom"; + "workbench.colorTheme" = "Dracula Theme"; + + "editor.fontFamily" = "'SpaceMono Nerd Font', 'monospace', monospace"; + "editor.fontSize" = 16; + + "files.autoSave" = "onWindowChange"; + "editor.formatOnSave" = true; + "editor.codeActionsOnSave" = { + "source.organizeImports" = "always"; + }; + + "typescript.preferences.preferTypeOnlyAutoImports" = true; + }; + }; + }; +} diff --git a/tuxedo/configuration.nix b/tuxedo/configuration.nix index 349fd8f..daf7e5e 100644 --- a/tuxedo/configuration.nix +++ b/tuxedo/configuration.nix @@ -45,35 +45,10 @@ }; }; - # [Unit] - # Description=Systemd unit to watch a folder for new files - - # [Path] - # PathChanged=/path/to/folder/you/want/to/monitor/ - - # [Install] - # WantedBy=multi-user.target - - # systemd.user.paths.rclone-media = { - # enable = true; - # description = "rclone unit path for /mnt/HDD1/Videos/"; - # after = [ "network.target" "mnt-HDD1.mount" ]; - # wantedBy = [ "default.target" ]; - # pathConfig = { - # PathChanged = "/mnt/HDD1/Videos/"; - # }; - # }; - - # systemd.user.services.rclone-media = { - # description = "rclone unit service for /mnt/HDD1/Videos/"; - # serviceConfig = { - # Type = "oneshot"; - # }; - # path = [ pkgs.libnotify pkgs.rclone ]; - # script = '' - # notify-send -a "rclone-media" "rclone for /mnt/HDD1/Videos/ triggered" - # rclone copy --max-age 24h --no-traverse "/mnt/HDD1/Videos/" media:"media-7gM2gcrxRjXqfj" -P --dry-run - # notify-send -a "rclone-media" "rclone for /mnt/HDD1/Videos/ complete" - # ''; - # }; + # Open ports in the firewall. + # 443 Helldivers crashes internet otherwise + # 1900 UPNP discovery + # 5001 Universal Media Server + networking.firewall.allowedTCPPorts = [ 443 1900 5001 ]; + networking.firewall.allowedUDPPorts = [ 443 1900 ]; } diff --git a/tuxedo/home-manager/home.nix b/tuxedo/home-manager/home.nix index 7a3586a..066781d 100644 --- a/tuxedo/home-manager/home.nix +++ b/tuxedo/home-manager/home.nix @@ -1,9 +1,15 @@ { inputs, config, pkgs, ... }: -let - vs-extensions = inputs.nix-vscode-extensions.extensions.x86_64-linux.open-vsx; -in { + imports = [ + ../../home-manager/terminal.nix + ../../home-manager/firefox/firefox.nix + ../../home-manager/vscode.nix + ]; + + terminal.nixUpdateLocation = "/home/worble/Projects/nixos#tuxedo"; + terminal.flakeUpdateLocation = "/home/worble/Projects/nixos"; + # Home Manager needs a bit of information about you and the paths it should # manage. home.username = "worble"; @@ -37,7 +43,6 @@ in # (pkgs.writeShellScriptBin "my-hello" '' # echo "Hello, ${config.home.username}!" # '') - blesh nextcloud-client ubuntu-sans ubuntu-sans-mono @@ -52,7 +57,10 @@ in thunderbird git-credential-manager # dotnetCorePackages.sdk_8_0_4xx - dotnetCorePackages.dotnet_9.sdk + (with dotnetCorePackages; combinePackages [ + sdk_8_0 + sdk_9_0 + ]) gimp-with-plugins ffmpeg-full protonup-qt @@ -69,6 +77,8 @@ in jellyfin-media-player haruna azuredatastudio + inotify-tools + libnotify ]; fonts.fontconfig = { @@ -119,45 +129,8 @@ in programs = { home-manager.enable = true; - bat = { - enable = true; - }; - - eza = { - enable = true; - enableBashIntegration = true; - git = true; - extraOptions = [ - "--color=auto" - "--icons=always" - "--group-directories-first" - "--header" - ]; - }; - - git = { - enable = true; - delta.enable = true; - }; - - gitui = { - enable = true; - }; - firefox = { - enable = true; - languagePacks = [ - "en-GB" - ]; - policies = { - "DisplayMenuBar" = true; - }; - profiles.default = import ./firefox-profile.nix // { - id = 0; - name = "default"; - isDefault = true; - }; - profiles.work = import ./firefox-profile.nix // { + profiles.work = import ../../home-manager/firefox/firefox-profile.nix // { id = 1; name = "work"; isDefault = false; @@ -175,95 +148,6 @@ in package = pkgs.brave; }; - bash = { - enable = true; - bashrcExtra = '' - source $(blesh-share)/ble.sh - bleopt canvas_winch_action=redraw-prev - ''; - }; - - starship.enable = true; - - atuin.enable = true; - - zellij = { - enable = true; - enableBashIntegration = true; - settings = { - theme = "dracula"; - }; - }; - - helix.enable = true; - - alacritty = { - enable = true; - settings = { - font = { - normal = { - family = "SpaceMono Nerd Font"; - style = "Regular"; - }; - size = 14; - }; - }; - }; - - direnv = { - enable = true; - enableBashIntegration = true; - nix-direnv.enable = true; - }; - - vscode = { - enable = true; - package = pkgs.vscodium; - mutableExtensionsDir = false; - extensions = [ - vs-extensions.biomejs.biome - vs-extensions.mkhl.direnv - vs-extensions.dracula-theme.theme-dracula - vs-extensions.dbaeumer.vscode-eslint - vs-extensions.eamodio.gitlens - vs-extensions.pkief.material-icon-theme - vs-extensions.jnoortheen.nix-ide - vs-extensions.esbenp.prettier-vscode - vs-extensions.bradlc.vscode-tailwindcss - ]; - userSettings = { - "workbench.iconTheme" = "material-icon-theme"; - "window.titleBarStyle" = "custom"; - "workbench.colorTheme" = "Dracula Theme"; - - "editor.fontFamily" = "'SpaceMono Nerd Font', 'monospace', monospace"; - "editor.fontSize" = 16; - - "files.autoSave" = "onWindowChange"; - "editor.formatOnSave" = true; - "editor.codeActionsOnSave" = { - "source.organizeImports" = "always"; - }; - - "typescript.preferences.preferTypeOnlyAutoImports" = true; - }; - }; - - topgrade = { - enable = true; - settings = { - misc = { - assume_yes = true; - }; - linux = { - nix_arguments = "--flake /home/worble/Projects/nixos#tuxedo"; - }; - pre_commands = { - nix-flake-update = "sudo nix flake update --flake /home/worble/Projects/nixos"; - }; - }; - }; - # install the shaders from anime4k directory for this to work mpv = { enable = true; @@ -272,7 +156,7 @@ in vo = "gpu-next"; gpu-api = "vulkan"; hwdec = "vulkan"; - screenshot-directory = "/mnt/HDD1/Pictures/"; + screenshot-directory = "~/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"; }; @@ -287,45 +171,61 @@ in }; }; - # systemd.user = { - # enable = true; - # paths = { - # rclone-media = { - # Unit = { - # Description = "rclone unit path for /mnt/HDD1/Videos/"; - # After = [ "network.target" "mnt-HDD1.mount" ]; - # }; + systemd.user = { + # enable = true; + # paths = { + # rclone-media = { + # Unit = { + # Description = "rclone unit path for /mnt/HDD1/Videos/"; + # After = [ "network.target" "mnt-HDD1.mount" ]; + # }; - # Path = { - # PathChanged = "/mnt/HDD1/Videos/"; - # }; + # Path = { + # PathChanged = "/mnt/HDD1/Videos/"; + # }; - # Install = { - # WantedBy = [ "default.target" ]; - # }; - # }; - # }; - # services = { - # rclone-media = { - # Unit = { - # Description = "rclone unit service for /mnt/HDD1/Videos/"; - # }; + # Install = { + # WantedBy = [ "default.target" ]; + # }; + # }; + # }; + services = { + rclone-media = { + Unit = { + Description = "rclone-media /mnt/HDD1/Videos/"; + After = [ "network.target" "mnt-HDD1.mount" ]; + }; - # Service = { - # Type = "oneshot"; - # ExecStart = "${pkgs.writeShellApplication { - # name = "rclone-media"; - # runtimeInputs = [ pkgs.libnotify pkgs.rclone ]; - # text = '' - # notify-send -a "rclone-media" "rclone for /mnt/HDD1/Videos/ triggered" - # rclone copy --max-age 24h --no-traverse "/mnt/HDD1/Videos/" media:"media-7gM2gcrxRjXqfj" -P --dry-run - # notify-send -a "rclone-media" "rclone for /mnt/HDD1/Videos/ complete" - # ''; - # }}/bin/rclone-media"; - # }; - # }; - # }; - # }; + Install = { + WantedBy = [ "default.target" ]; + }; + + Service = { + Type = "exec"; + ExecStart = "${pkgs.writeShellApplication { + name = "rclone-media"; + runtimeInputs = [ pkgs.inotify-tools pkgs.libnotify pkgs.rclone ]; + text = '' + inotifywait -mr \ + --format '%w%f' \ + -e close_write \ + /mnt/HDD1/Videos/ | + while read -r file; do + 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 for $file complete" + else + notify-send -a "rclone-media" "rclone for $file failed" + fi + done + ''; + }}/bin/rclone-media"; + }; + }; + }; + }; } +