From d257cd9bf58e8920658b0de70a1c7f69a08e5c4d Mon Sep 17 00:00:00 2001 From: Bun Date: Sat, 10 May 2025 11:27:52 -0400 Subject: [PATCH 01/98] Systemd-ify Waybar, move aliases to individualized places, more Sway and Jovian changes --- flake.lock | 42 ++++- flake.nix | 58 +++--- hosts/jupiter/jovian/default.nix | 9 +- modules/home/programs/misc/school/default.nix | 3 + .../home/programs/terminal/direnv/default.nix | 4 +- .../programs/terminal/fastfetch/default.nix | 5 +- modules/home/programs/terminal/nh/default.nix | 5 + modules/home/settings/aliases/default.nix | 2 - .../home/settings/fonts/packages/default.nix | 4 +- .../wms/programs/rofi/scripts/default.nix | 8 + modules/home/wms/programs/waybar/default.nix | 176 ++++++++++-------- modules/home/wms/sway/autostart/default.nix | 31 ++- modules/home/wms/sway/outputs/default.nix | 6 +- modules/home/wms/sway/theme/default.nix | 2 + 14 files changed, 212 insertions(+), 143 deletions(-) diff --git a/flake.lock b/flake.lock index 67ff2a5c..09b9b6ae 100644 --- a/flake.lock +++ b/flake.lock @@ -171,6 +171,24 @@ "inputs": { "systems": "systems" }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "inputs": { + "systems": "systems_2" + }, "locked": { "lastModified": 1710146030, "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", @@ -185,9 +203,9 @@ "type": "github" } }, - "flake-utils_2": { + "flake-utils_3": { "inputs": { - "systems": "systems_2" + "systems": "systems_3" }, "locked": { "lastModified": 1731533236, @@ -287,7 +305,7 @@ "crane": "crane", "flake-compat": "flake-compat", "flake-parts": "flake-parts", - "flake-utils": "flake-utils", + "flake-utils": "flake-utils_2", "nixpkgs": [ "stable" ], @@ -336,7 +354,7 @@ "minecraft": { "inputs": { "flake-compat": "flake-compat_3", - "flake-utils": "flake-utils_2", + "flake-utils": "flake-utils_3", "nixpkgs": "nixpkgs_2" }, "locked": { @@ -490,6 +508,7 @@ "inputs": { "blender": "blender", "disko": "disko", + "flake-utils": "flake-utils", "hm": "hm", "impermanence": "impermanence", "jovian": "jovian", @@ -571,6 +590,21 @@ "type": "github" } }, + "systems_3": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "treefmt-nix": { "inputs": { "nixpkgs": [ diff --git a/flake.nix b/flake.nix index 48728d61..756073b5 100644 --- a/flake.nix +++ b/flake.nix @@ -4,6 +4,9 @@ stable.url = "nixpkgs/nixos-24.11"; unstable.url = "nixpkgs/nixos-unstable"; + # Flake helpers + flake-utils.url = "github:numtide/flake-utils"; + # System inputs disko = { url = "github:nix-community/disko"; @@ -48,6 +51,8 @@ stable, unstable, + flake-utils, + disko, impermanence, lanzaboote, @@ -63,34 +68,31 @@ ... }@inputs: - let - mkNix = modules: channel: channel.lib.nixosSystem { - inherit modules; - specialArgs = inputs; - }; - mkHome = modules: channel: arch: hm.lib.homeManagerConfiguration { - inherit modules; - pkgs = builtins.getAttr arch channel.legacyPackages; - extraSpecialArgs = inputs; - }; - in { - # nh os switch /path -H host - nixosConfigurations = { - tower = mkNix [ ./hosts/tower ] stable; # Main Desktop + inputs.flake-utils.lib.eachDefaultSystemPassThrough (system: + let + mkNix = modules: channel: channel.lib.nixosSystem { + inherit modules; + specialArgs = inputs; + }; + mkHome = modules: channel: hm.lib.homeManagerConfiguration { + inherit modules; + pkgs = channel.legacyPackages.${system}; + extraSpecialArgs = inputs; + }; + in { + nixosConfigurations = { + tower = mkNix [ ./hosts/tower ] stable; - intuos = mkNix [ ./hosts/intuos ] stable; # Wacom Intuos Tablet - jupiter = mkNix [ ./hosts/jupiter ] unstable; # Steam Deck - redmond = mkNix [ ./hosts/redmond ] stable; # Lenovo Dual-Boot + intuos = mkNix [ ./hosts/intuos ] stable; + jupiter = mkNix [ ./hosts/jupiter ] unstable; + redmond = mkNix [ ./hosts/redmond ] stable; - midas = mkNix [ ./hosts/midas ] stable; # Dell Optiplex 5040 - kitty = mkNix [ ./hosts/kitty ] stable; # Dell Optiplex 7010 - prophet = mkNix [ ./hosts/prophet ] stable; # Oracle Neoverse-N1 - }; - - # nh home switch /path -c arch - homeConfigurations = { - x86 = mkHome [ ./modules/home ] stable "x86_64-linux"; - aarch = mkHome [ ./modules/home ] stable "aarch64-linux"; - }; - }; + midas = mkNix [ ./hosts/midas ] stable; + kitty = mkNix [ ./hosts/kitty ] stable; + prophet = mkNix [ ./hosts/prophet ] stable; + }; + + homeConfigurations.bun = mkHome [ ./modules/home ] stable; + } + ); } diff --git a/hosts/jupiter/jovian/default.nix b/hosts/jupiter/jovian/default.nix index fa5ecf0c..f827574b 100644 --- a/hosts/jupiter/jovian/default.nix +++ b/hosts/jupiter/jovian/default.nix @@ -24,11 +24,7 @@ boot.kernelPackages = lib.mkForce pkgs.linuxPackages_jovian; - programs.steam = { - extest.enable = true; - localNetworkGameTransfers.openFirewall = true; - remotePlay.openFirewall = true; - }; + programs.steam.extest.enable = true; services = { keyd.enable = lib.mkForce false; @@ -36,6 +32,8 @@ xserver.desktopManager.gnome.enable = true; }; + hardware.xone.enable = true; + networking = { networkmanager.enable = true; wireless.enable = lib.mkForce false; @@ -94,6 +92,7 @@ "steam-jupiter-unwrapped" "steamdeck-firmware" "steamdeck-hw-theme" + "xow_dongle-firmware" ]; specialisation.desktop.configuration.config.system.steamdeck.enable = lib.mkForce false; diff --git a/modules/home/programs/misc/school/default.nix b/modules/home/programs/misc/school/default.nix index 35452156..d46dc396 100644 --- a/modules/home/programs/misc/school/default.nix +++ b/modules/home/programs/misc/school/default.nix @@ -8,6 +8,9 @@ remmina teams-for-linux ]; + + shellAliases.seneca = "ssh jhampton1@matrix.senecapolytechnic.ca"; + persistence."/persist${config.home.homeDirectory}".directories = [ ".cache/gpclient" ".config/com.yuezk.qt" diff --git a/modules/home/programs/terminal/direnv/default.nix b/modules/home/programs/terminal/direnv/default.nix index b71ece6d..1ccc3c68 100644 --- a/modules/home/programs/terminal/direnv/default.nix +++ b/modules/home/programs/terminal/direnv/default.nix @@ -1,7 +1,9 @@ -{ ... }: +{ config, ... }: { programs.direnv = { enable = true; nix-direnv.enable = true; }; + + home.persistence."/persist${config.home.homeDirectory}".directories = [ ".local/share/direnv" ]; } diff --git a/modules/home/programs/terminal/fastfetch/default.nix b/modules/home/programs/terminal/fastfetch/default.nix index ecaf8e3b..a89c46fa 100644 --- a/modules/home/programs/terminal/fastfetch/default.nix +++ b/modules/home/programs/terminal/fastfetch/default.nix @@ -2,7 +2,10 @@ { programs.fastfetch.enable = true; - home.packages = with pkgs; [ (writeScriptBin "smallfetch" "fastfetch --config ~/.config/fastfetch/small.jsonc") ]; + home = { + shellAliases.ff = "clear && fastfetch"; + packages = with pkgs; [ (writeScriptBin "smallfetch" "fastfetch --config ~/.config/fastfetch/small.jsonc") ]; + }; xdg.configFile."fastfetch".source = ./configs; } diff --git a/modules/home/programs/terminal/nh/default.nix b/modules/home/programs/terminal/nh/default.nix index 52aa9908..387f8bd8 100644 --- a/modules/home/programs/terminal/nh/default.nix +++ b/modules/home/programs/terminal/nh/default.nix @@ -4,4 +4,9 @@ enable = true; flake = "${config.home.homeDirectory}/Projects/nixos-config"; }; + + home.shellAliases = { + nhs = "nh os switch"; + nht = "nh os test"; + }; } diff --git a/modules/home/settings/aliases/default.nix b/modules/home/settings/aliases/default.nix index ff62e202..ea6336c7 100644 --- a/modules/home/settings/aliases/default.nix +++ b/modules/home/settings/aliases/default.nix @@ -2,12 +2,10 @@ { home.shellAliases = { # NixOS - nhs = "nh os switch"; nixclean = "nix store gc; nix store optimise"; nixpurge = "sudo nix-collect-garbage --delete-old"; # Shortcuts - ff = "clear && fastfetch"; myip = "curl ifconfig.co"; seneca = "ssh jhampton1@matrix.senecapolytechnic.ca"; }; diff --git a/modules/home/settings/fonts/packages/default.nix b/modules/home/settings/fonts/packages/default.nix index d7cae882..9107f0b5 100644 --- a/modules/home/settings/fonts/packages/default.nix +++ b/modules/home/settings/fonts/packages/default.nix @@ -2,10 +2,10 @@ { home.packages = lib.mkIf config.home.desktop.enable (with pkgsStable; [ liberation_ttf - twitter-color-emoji noto-fonts sarasa-gothic - ubuntu_font_family + twitter-color-emoji + ubuntu-classic (nerdfonts.override { fonts = [ "UbuntuMono" ]; }) ]); } diff --git a/modules/home/wms/programs/rofi/scripts/default.nix b/modules/home/wms/programs/rofi/scripts/default.nix index 95efb373..cfc82d5b 100644 --- a/modules/home/wms/programs/rofi/scripts/default.nix +++ b/modules/home/wms/programs/rofi/scripts/default.nix @@ -2,18 +2,26 @@ { home.packages = with pkgs; lib.mkIf config.programs.rofi.enable [ (writeScriptBin "rofiscratch" '' + #!/bin/sh + SCRATCHPADS=$(echo -e "Btop\nMusic\nSound\nEasyEffects" | rofi -dmenu -i -p "Scratchpads") + case $SCRATCHPADS in Btop) foot -a btop -T Btop btop;; Music) foot -a music -T Music ncmpcpp;; Sound) foot -a sound -T Sound pulsemixer;; esac '') + (writeScriptBin "rofipower" '' + #!/bin/sh + POWER=$(echo -e "Shutdown\nReboot\nLock\nSleep\nKill" | rofi -dmenu -i -p "Power") + case $POWER in Shutdown) poweroff;; Reboot) reboot;; + Lock) swaylock;; Sleep) systemctl suspend;; Kill) pkill -9 $XDG_CURRENT_DESKTOP;; esac diff --git a/modules/home/wms/programs/waybar/default.nix b/modules/home/wms/programs/waybar/default.nix index da9d4eff..05db4928 100644 --- a/modules/home/wms/programs/waybar/default.nix +++ b/modules/home/wms/programs/waybar/default.nix @@ -21,7 +21,7 @@ }; }; - pulseModule = { + pulseModule = with pkgs; { format = "{icon} {volume}%"; format-bluetooth = "{icon} {volume}%"; format-muted = " muted"; @@ -33,9 +33,9 @@ " " ]; }; - on-click = "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; - on-click-middle = "wpctl set-volume @DEFAULT_AUDIO_SINK@ 100%"; - on-click-right = "wpctl set-volume @DEFAULT_AUDIO_SINK@ 60%"; + on-click = "${wireplumber}/bin/wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; + on-click-middle = "${wireplumber}/bin/wpctl set-volume @DEFAULT_AUDIO_SINK@ 100%"; + on-click-right = "${wireplumber}/bin/wpctl set-volume @DEFAULT_AUDIO_SINK@ 60%"; ignored-sinks = [ "Easy Effects Sink" ]; }; @@ -52,32 +52,42 @@ }; vramModule = { - exec = pkgs.writeScript "vramScript" '' - # Don't run the script if running on integrated graphics - gpu_driver=$(${pkgs.pciutils}/bin/lspci -k | grep -Eo "in use: (nvidia|amdgpu)" | awk '{print $3}') + exec = with pkgs; pkgs.writeScript "vramScript.sh" '' + #!/bin/sh - if [ -n "$gpu_driver" ]; then - if [ "$gpu_driver" == "nvidia" ]; then - vram_usage_mb=$(nvidia-smi --query-gpu=memory.used --format=csv,noheader,nounits) - temperature=$(nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader,nounits) + LSPCI="${pciutils}/bin/lspci" + GREP="${gnugrep}/bin/grep" + AWK="${gawk}/bin/awk" + BC="${bc}/bin/bc" + HEAD="${uutils-coreutils-noprefix}/bin/head" + CAT="${uutils-coreutils-noprefix}/bin/cat" - elif [ "$gpu_driver" == "amdgpu" ]; then - vram_usage_mb=$(echo "$(cat /sys/class/drm/card0/device/mem_info_vram_used || cat /sys/class/drm/card1/device/mem_info_vram_used) / 1024 / 1024" | bc) - temperature=$(${pkgs.lm_sensors}/bin/sensors | grep 'edge' | awk '{print $2}' | sed 's/[^0-9.-]//g') - fi - - # Check if VRAM usage is under 1GB - if [ $vram_usage_mb -lt 1024 ]; then - vram_usage_display="$(echo $vram_usage_mb)M" - else - # Convert MB to GiB - vram_usage_gib=$(bc <<< "scale=2; $vram_usage_mb / 1024") - vram_usage_display="$(echo $vram_usage_gib)G" - fi - - # Print the VRAM usage and temperature - echo "{\"text\":\"󰢮 $(echo $vram_usage_display)\",\"tooltip\":\"$(echo $temperature)°C\"}" + # Detect the active GPU driver + gpu_driver="$($LSPCI -k | $GREP -Eo 'in use: (nvidia|amdgpu)' | $AWK '{print $3}')" + + # Exit if no supported GPU driver is in use + if [[ -z "$gpu_driver" ]]; then + exit 0 fi + + # Get VRAM usage in MB + if [[ "$gpu_driver" == "nvidia" ]]; then + vram_usage_mb="$(nvidia-smi --query-gpu=memory.used --format=csv,noheader,nounits | $HEAD -n1)" + elif [[ "$gpu_driver" == "amdgpu" ]]; then + vram_bytes="$($CAT /sys/class/drm/card*/device/mem_info_vram_used 2>/dev/null | $HEAD -n1)" + vram_usage_mb="$($BC <<< "$vram_bytes / 1024 / 1024")" + fi + + # Format VRAM usage for display + if [[ "$vram_usage_mb" -lt 1024 ]]; then + vram_usage_display="''${vram_usage_mb}M" + else + vram_usage_gib="$($BC <<< "scale=2; $vram_usage_mb / 1024")" + vram_usage_display="''${vram_usage_gib}G" + fi + + # Output the VRAM usage + echo "{\"text\": \"󰢮 ''${vram_usage_display}\"}" ''; format = "{}"; return-type = "json"; @@ -94,6 +104,7 @@ # Misc trayModule.spacing = 5; + # Wireless networkModule = { format-ethernet = "󰈀"; format-wifi = ""; @@ -144,21 +155,28 @@ icon-size = 15; }; - mpdModule = { + mprisModule = { + player = "mpd"; format = " {title}"; format-paused = " {artist}"; format-stopped = ""; - format-disconnected = ""; - tooltip-format = "{artist} - {title}"; + tooltip-format = lib.concatStrings [ + "{title} - {artist} - {album}\n" + "{position}/{length}" + ]; interval = 2; max-length = 30; - on-click = "playerctl -p mpd play-pause"; }; - notificationModule = { - exec = pkgs.writeScript "notificationScript" '' + notificationModule = with pkgs; { + exec = pkgs.writeScript "notificationScript.sh" '' + #!/bin/sh + + SED="${gnused}/bin/sed" + MAKOCTL="${mako}/bin/makoctl" + # Extract the second line after "default" - mode=$(echo "$(makoctl mode)" | sed -n '/default/{n;p}') + mode=$(echo "$($MAKOCTL mode)" | $SED -n '/default/{n;p}') # Print the notification status with the tooltip if [[ "$mode" == "do-not-disturb" ]]; then @@ -170,7 +188,17 @@ format = "{}"; return-type = "json"; interval = 2; - on-click = "makotoggle"; + on-click = "${mako}/bin/makoctl mode -t do-not-disturb"; + }; + + idleModule = { + format = "{icon}"; + format-icons = { + activated = " On"; + deactivated = "󰾫 Off"; + tooltip-format-activated = "Sleep inhibited."; + tooltip-format-deactivated = "Sleep uninhibited."; + }; }; weatherModule = { @@ -208,6 +236,7 @@ }; in { enable = config.home.desktop.enable; + systemd.enable = true; settings = { displayPrimary = { name = "bar1"; @@ -225,9 +254,10 @@ ]; modules-right = [ "pulseaudio" - "mpd" + "mpris" "custom/notifs" - "custom/weather2" + "idle_inhibitor" + "custom/weather" "cpu" "memory" "custom/vram" @@ -244,9 +274,10 @@ "sway/workspaces" = workspaceModule; "sway/window" = windowModule; "pulseaudio" = pulseModule; - "mpd" = mpdModule; + "mpris" = mprisModule; "custom/notifs" = notificationModule; - "custom/weather2" = weatherModule; + "idle_inhibitor" = idleModule; + "custom/weather" = weatherModule; "cpu" = cpuModule; "memory" = ramModule; "custom/vram" = vramModule; @@ -283,8 +314,6 @@ "sway/workspaces" = workspaceModule; "sway/window" = windowModule; "pulseaudio" = pulseModule; - "mpd" = mpdModule; - "custom/notifs" = notificationModule; "cpu" = cpuModule; "memory" = ramModule; "custom/vram" = vramModule; @@ -297,7 +326,7 @@ border: 0; border-radius: 0; min-height: 0; - font-family: ${config.look.fonts.main}, ${config.look.fonts.mono}; + font-family: ${config.look.fonts.main}, ${config.look.fonts.mono}; font-size: 15.5px; color: #${config.look.colors.text}; } @@ -313,9 +342,6 @@ #network { padding: 0 10px 0 4px; } - #network.disconnected,#bluetooth.off { - color: #424242; - } #bluetooth { margin: 0 6px 0 4px; font-size: 13.4px; @@ -337,17 +363,34 @@ box-shadow: none; background: #${config.look.colors.light}; } - #scratchpad { + #scratchpad, #privacy { margin-left: 4px; } - #privacy { - margin-left: 4px; - } - #cpu, #memory, #custom-vram, #mpd, #backlight, #battery, #custom-weather, #custom-weather2, #custom-notifs { + #mpris, #custom-notifs, #idle_inhibitor, #custom-weather, #cpu, #memory, #custom-vram, #backlight, #battery { margin: 0 5px 0 2px; } - #clock { - margin: 0 2px 0 2px; + #pulseaudio { + margin-right: 5px; + } + + #mpris.paused, #custom-notifs.disabled, #idle_inhibitor.deactivated { + color: #888; + } + #pulseaudio.muted, #network.disconnected, #bluetooth.off { + color: #424242; + } + + #mpris { + border-bottom: 3px solid #ffb066; + } + #custom-notifs { + border-bottom: 3px solid #3823C4; + } + #idle_inhibitor { + border-bottom: 3px solid #941efc; + } + #custom-weather { + border-bottom: 3px solid #c75bd3; } #cpu { border-bottom: 3px solid #f90000; @@ -358,38 +401,15 @@ #custom-vram { border-bottom: 3px solid #33FF00; } - #mpd { - border-bottom: 3px solid #ffb066; - } - #mpd.paused { - color: #888; - } - #clock { - border-bottom: 3px solid #0a6cf5; - } #backlight { border-bottom: 3px solid #5ffca3; } #battery { border-bottom: 3px solid #fcfc16; } - #custom-weather { - border-bottom: 3px solid #3823C4; - } - #custom-weather2 { - border-bottom: 3px solid #c75bd3; - } - #custom-notifs { - border-bottom: 3px solid #3823C4; - } - #custom-notifs.disabled { - color: #888; - } - #pulseaudio { - margin-right: 5px; - } - #pulseaudio.muted { - color: #424242; + #clock { + border-bottom: 3px solid #0a6cf5; + margin: 0 2px 0 2px; } ''; }; diff --git a/modules/home/wms/sway/autostart/default.nix b/modules/home/wms/sway/autostart/default.nix index ddb9303e..f0570187 100644 --- a/modules/home/wms/sway/autostart/default.nix +++ b/modules/home/wms/sway/autostart/default.nix @@ -1,24 +1,17 @@ { ... }: { - wayland.windowManager.sway.config = { - bars = [{ command = "waybar"; }]; + wayland.windowManager.sway.config.startup = [ + # Scratchpads + { command = "foot -a btop -T Gotop btop"; } + { command = "foot -a music -T Music ncmpcpp"; } + { command = "foot -a sound -T Sound pulsemixer"; } - startup = [ - # Scratchpads - { command = "foot -a btop -T Gotop btop"; } - { command = "foot -a music -T Music ncmpcpp"; } - { command = "foot -a sound -T Sound pulsemixer"; } + # Daemons and tray + { command = "kanshictl reload"; always = true; } + { command = "wayland-pipewire-idle-inhibit"; } - # Daemons and tray - { - command = "kanshictl reload"; - always = true; - } - { command = "wayland-pipewire-idle-inhibit"; } - - # Foreground - { command = "thunderbird"; } - { command = "vesktop"; } - ]; - }; + # Foreground + { command = "thunderbird"; } + { command = "vesktop"; } + ]; } diff --git a/modules/home/wms/sway/outputs/default.nix b/modules/home/wms/sway/outputs/default.nix index a287851f..eddb7965 100644 --- a/modules/home/wms/sway/outputs/default.nix +++ b/modules/home/wms/sway/outputs/default.nix @@ -38,11 +38,11 @@ (assign "${config.displays.tower1}" workspaces1) ++ (assign "${config.displays.tower2}" workspaces2) ++ (assign "${config.displays.tower3}" workspaces3) ++ - (assign "${config.displays.tower3}" workspaces4) ++ + (assign "${config.displays.tower4}" workspaces4) ++ (assign "${config.displays.estradiol1}" workspaces1) ++ (assign "${config.displays.estradiol1}" workspaces2) ++ - (assign "${config.displays.estradiol1}" workspaces4) ++ - (assign "${config.displays.estradiol2}" workspaces3); + (assign "${config.displays.estradiol2}" workspaces3) ++ + (assign "${config.displays.estradiol2}" workspaces4); }; } diff --git a/modules/home/wms/sway/theme/default.nix b/modules/home/wms/sway/theme/default.nix index a5eb5980..f50c87dc 100644 --- a/modules/home/wms/sway/theme/default.nix +++ b/modules/home/wms/sway/theme/default.nix @@ -32,6 +32,8 @@ }; }; + bars = [ ]; + fonts = { names = [ config.look.fonts.main ]; size = 10.5; From 20707d250ee89eb9cdd10ffd1849f715cf46aef2 Mon Sep 17 00:00:00 2001 From: Bun Date: Sat, 10 May 2025 13:55:27 -0400 Subject: [PATCH 02/98] Simplify flake further --- flake.nix | 23 ++--------------------- 1 file changed, 2 insertions(+), 21 deletions(-) diff --git a/flake.nix b/flake.nix index 756073b5..15317913 100644 --- a/flake.nix +++ b/flake.nix @@ -47,29 +47,10 @@ blender.url = "github:edolstra/nix-warez?dir=blender"; }; - outputs = { - stable, - unstable, - - flake-utils, - - disko, - impermanence, - lanzaboote, - - mailserver, - minecraft, - - jovian, - - hm, - nur, - blender, - ... - }@inputs: + outputs = inputs: inputs.flake-utils.lib.eachDefaultSystemPassThrough (system: - let + with inputs; let mkNix = modules: channel: channel.lib.nixosSystem { inherit modules; specialArgs = inputs; From 2d9dcf079a339aa99ad519fc27e585b5b654d5a0 Mon Sep 17 00:00:00 2001 From: Bun Date: Sun, 11 May 2025 00:01:07 -0400 Subject: [PATCH 03/98] Reduce redundancy in flake.nix, add new hm profile for desktops --- flake.lock | 36 ++++++++++++++-------------- flake.nix | 40 ++++++++++++++++++------------- hosts/jupiter/user/default.nix | 4 +--- hosts/tower/user/default.nix | 4 +--- modules/home/default.nix | 8 +------ modules/home/profiles/default.nix | 18 ++++++++++++++ modules/system/default.nix | 2 +- 7 files changed, 64 insertions(+), 48 deletions(-) create mode 100644 modules/home/profiles/default.nix diff --git a/flake.lock b/flake.lock index 09b9b6ae..378fbe8f 100644 --- a/flake.lock +++ b/flake.lock @@ -64,11 +64,11 @@ ] }, "locked": { - "lastModified": 1746411114, - "narHash": "sha256-mLlkVX1kKbAa/Ns5u26wDYw4YW4ziMFM21fhtRmfirU=", + "lastModified": 1746729224, + "narHash": "sha256-9R4sOLAK1w3Bq54H3XOJogdc7a6C2bLLmatOQ+5pf5w=", "owner": "nix-community", "repo": "disko", - "rev": "b5d1320ebc2f34dbea4655f95167f55e2130cdb3", + "rev": "85555d27ded84604ad6657ecca255a03fd878607", "type": "github" }, "original": { @@ -287,11 +287,11 @@ ] }, "locked": { - "lastModified": 1746158343, - "narHash": "sha256-i/1os9oEq0m/Da4FTdSqKUdI4+wzrvoDTuk1/dHSVDc=", + "lastModified": 1746681524, + "narHash": "sha256-c5kDVFh+vVfQSEXdVIudFRzPH3LO8j2ImgsBeo8v+Eo=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "8b45a8efb2829adf2996b51965ada1e4620631ac", + "rev": "14eb8f7d2b0cca74691db620292037bdb813ceb7", "type": "github" }, "original": { @@ -358,11 +358,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1746324578, - "narHash": "sha256-VUSIQ2W1Q3YgGvX3M4jPwIi3iIApdPHabhdrVjVgnwE=", + "lastModified": 1746842210, + "narHash": "sha256-bGJ3q4BEJEEz9MNo2QwXgQULmSUItxn52lMQLNImZ+w=", "owner": "Infinidoge", "repo": "nix-minecraft", - "rev": "9e7fd83ba3b25b6f03561a5b7f8ea74b70296816", + "rev": "9acdd362e10b50cb36234544b5b80b3d0372456d", "type": "github" }, "original": { @@ -464,11 +464,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1746568792, - "narHash": "sha256-e3QkOhtYJUlMLGCVUmQWULtVDokSJqud0VmPZoRj4s0=", + "lastModified": 1746906291, + "narHash": "sha256-dX85SDSt4h7281Dkox9NnTPjCIDs5JxkJQB9Czd7ajc=", "owner": "nix-community", "repo": "NUR", - "rev": "29d16321b0f48ad0d24c3eaf5656adfaaf99d19e", + "rev": "7c77c4255a4cda029257090a72806dbd48ea14e3", "type": "github" }, "original": { @@ -547,11 +547,11 @@ }, "stable": { "locked": { - "lastModified": 1746422338, - "narHash": "sha256-NTtKOTLQv6dPfRe00OGSywg37A1FYqldS6xiNmqBUYc=", + "lastModified": 1746557022, + "narHash": "sha256-QkNoyEf6TbaTW5UZYX0OkwIJ/ZMeKSSoOMnSDPQuol0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5b35d248e9206c1f3baf8de6a7683fee126364aa", + "rev": "1d3aeb5a193b9ff13f63f4d9cc169fb88129f860", "type": "github" }, "original": { @@ -628,11 +628,11 @@ }, "unstable": { "locked": { - "lastModified": 1746461020, - "narHash": "sha256-7+pG1I9jvxNlmln4YgnlW4o+w0TZX24k688mibiFDUE=", + "lastModified": 1746663147, + "narHash": "sha256-Ua0drDHawlzNqJnclTJGf87dBmaO/tn7iZ+TCkTRpRc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3730d8a308f94996a9ba7c7138ede69c1b9ac4ae", + "rev": "dda3dcd3fe03e991015e9a74b22d35950f264a54", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 15317913..7a1266af 100644 --- a/flake.nix +++ b/flake.nix @@ -51,29 +51,37 @@ inputs.flake-utils.lib.eachDefaultSystemPassThrough (system: with inputs; let - mkNix = modules: channel: channel.lib.nixosSystem { - inherit modules; + mkNix = name: channel: channel.lib.nixosSystem { + modules = [ (./hosts + "/${name}") ]; specialArgs = inputs; }; - mkHome = modules: channel: hm.lib.homeManagerConfiguration { + mkHome = channel: modules: hm.lib.homeManagerConfiguration { inherit modules; - pkgs = channel.legacyPackages.${system}; extraSpecialArgs = inputs; + pkgs = builtins.getAttr system channel.legacyPackages; + }; + + hostChannels = { + tower = stable; + + intuos = stable; + jupiter = unstable; + redmond = stable; + + midas = stable; + kitty = stable; + prophet = stable; }; in { - nixosConfigurations = { - tower = mkNix [ ./hosts/tower ] stable; - - intuos = mkNix [ ./hosts/intuos ] stable; - jupiter = mkNix [ ./hosts/jupiter ] unstable; - redmond = mkNix [ ./hosts/redmond ] stable; - - midas = mkNix [ ./hosts/midas ] stable; - kitty = mkNix [ ./hosts/kitty ] stable; - prophet = mkNix [ ./hosts/prophet ] stable; - }; + nixosConfigurations = builtins.mapAttrs (name: channel: mkNix name channel) hostChannels; - homeConfigurations.bun = mkHome [ ./modules/home ] stable; + homeConfigurations = { + default = mkHome stable [ ./modules/home ]; + full = mkHome stable [ + ./modules/home + { home.guifull.enable = true; } + ]; + }; } ); } diff --git a/hosts/jupiter/user/default.nix b/hosts/jupiter/user/default.nix index e4b30d0b..94de4373 100644 --- a/hosts/jupiter/user/default.nix +++ b/hosts/jupiter/user/default.nix @@ -1,9 +1,7 @@ { config, lib, ... }: { home-manager.users."${config.sysusers.main}".home = { - desktop.enable = true; - gaming.enable = true; - production.enable = true; + guifull.enable = true; school.enable = true; enableNixpkgsReleaseCheck = false; stateVersion = lib.mkForce config.system.stateVersion; diff --git a/hosts/tower/user/default.nix b/hosts/tower/user/default.nix index 9c6469d4..3ca3a690 100644 --- a/hosts/tower/user/default.nix +++ b/hosts/tower/user/default.nix @@ -1,9 +1,7 @@ { config, lib, ... }: { home-manager.users."${config.sysusers.main}".home = { - desktop.enable = true; - gaming.enable = true; - production.enable = true; + guifull.enable = true; stateVersion = lib.mkForce config.system.stateVersion; }; } diff --git a/modules/home/default.nix b/modules/home/default.nix index ed97b6a8..526c689a 100644 --- a/modules/home/default.nix +++ b/modules/home/default.nix @@ -1,6 +1,7 @@ { lib, ... }: { imports = [ + ./profiles ./programs ./services ./settings @@ -9,12 +10,5 @@ ./wms ]; - options.home = with lib; { - desktop.enable = mkEnableOption "Desktop programs and services"; - gaming.enable = mkEnableOption "Gaming apps and programs"; - production.enable = mkEnableOption "Apps for visual productivity"; - school.enable = mkEnableOption "Apps for school and college"; - }; - config.home.stateVersion = "24.11"; } diff --git a/modules/home/profiles/default.nix b/modules/home/profiles/default.nix new file mode 100644 index 00000000..5bd9361a --- /dev/null +++ b/modules/home/profiles/default.nix @@ -0,0 +1,18 @@ +{ config, lib, ... }: +{ + options.home = with lib; { + guifull.enable = mkEnableOption "Enable most other GUI profiles"; + + desktop.enable = mkEnableOption "Desktop programs and services"; + gaming.enable = mkEnableOption "Gaming apps and programs"; + production.enable = mkEnableOption "Apps for visual productivity"; + + school.enable = mkEnableOption "Apps for school and college"; + }; + + config.home = lib.mkIf config.home.guifull.enable { + desktop.enable = true; + gaming.enable = true; + production.enable = true; + }; +} diff --git a/modules/system/default.nix b/modules/system/default.nix index 4d9fa244..1e750aaf 100644 --- a/modules/system/default.nix +++ b/modules/system/default.nix @@ -1,4 +1,4 @@ -{ lib, ... }: +{ config, lib, ... }: { imports = [ ./devices From f8ba0f45147f7d036dde82d841d89ce8b6e91122 Mon Sep 17 00:00:00 2001 From: Bun Date: Sun, 11 May 2025 00:06:12 -0400 Subject: [PATCH 04/98] Add target for generic Linux distros --- flake.nix | 5 ++++- modules/home/settings/impermanence/default.nix | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 7a1266af..3d9b3197 100644 --- a/flake.nix +++ b/flake.nix @@ -79,7 +79,10 @@ default = mkHome stable [ ./modules/home ]; full = mkHome stable [ ./modules/home - { home.guifull.enable = true; } + { + home.guifull.enable = true; + targets.genericLinux.enable = true; + } ]; }; } diff --git a/modules/home/settings/impermanence/default.nix b/modules/home/settings/impermanence/default.nix index 39181199..c91b1216 100644 --- a/modules/home/settings/impermanence/default.nix +++ b/modules/home/settings/impermanence/default.nix @@ -3,6 +3,7 @@ imports = [ impermanence.homeManagerModules.impermanence ]; home.persistence."/persist${config.home.homeDirectory}" = { + enable = !config.targets.genericLinux.enable; directories = [ "Keepers" "Projects" From f8cbfda0488d517dccd0fbd26c552a9c2aec7362 Mon Sep 17 00:00:00 2001 From: Bun Date: Sun, 11 May 2025 01:48:37 -0400 Subject: [PATCH 05/98] Fix folder paths, set Tower back to stable, remove Nix channels for system for now --- flake.nix | 7 ++-- hosts/tower/boot/default.nix | 4 +-- .../home/programs/terminal/ranger/default.nix | 2 +- modules/home/settings/default.nix | 1 + .../home/settings/gtk/bookmarks/default.nix | 3 +- .../home/settings/nix/channels/default.nix | 2 +- modules/home/settings/nix/unfree/default.nix | 4 +-- modules/home/settings/nixgl/default.nix | 10 ++++++ modules/home/settings/xdg/folders/default.nix | 2 ++ modules/home/wms/programs/waybar/default.nix | 34 +++++++++---------- .../system/settings/nix/channels/default.nix | 11 ------ modules/system/settings/nix/default.nix | 1 - 12 files changed, 42 insertions(+), 39 deletions(-) create mode 100644 modules/home/settings/nixgl/default.nix delete mode 100644 modules/system/settings/nix/channels/default.nix diff --git a/flake.nix b/flake.nix index 3d9b3197..db09545b 100644 --- a/flake.nix +++ b/flake.nix @@ -44,13 +44,14 @@ inputs.nixpkgs.follows = "unstable"; }; + # Specific apps blender.url = "github:edolstra/nix-warez?dir=blender"; }; - outputs = inputs: + outputs = inputs: with inputs; - inputs.flake-utils.lib.eachDefaultSystemPassThrough (system: - with inputs; let + flake-utils.lib.eachDefaultSystemPassThrough (system: + let mkNix = name: channel: channel.lib.nixosSystem { modules = [ (./hosts + "/${name}") ]; specialArgs = inputs; diff --git a/hosts/tower/boot/default.nix b/hosts/tower/boot/default.nix index 8c5668af..9f0c2504 100644 --- a/hosts/tower/boot/default.nix +++ b/hosts/tower/boot/default.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgsUnstable, ... }: +{ config, lib, pkgs, ... }: let commonKernelParams = [ # VM/GPU passthrough @@ -13,7 +13,7 @@ let in { boot = { # Latest kernel and IOMMU isolation - kernelPackages = pkgsUnstable.linuxPackages_latest; + kernelPackages = pkgs.linuxPackages_latest; kernelParams = commonKernelParams ++ [ "vfio-pci.ids=10de:1f82,10de:10fa" ]; # Load into GPU before video driver diff --git a/modules/home/programs/terminal/ranger/default.nix b/modules/home/programs/terminal/ranger/default.nix index d6d55b5d..9590fe17 100644 --- a/modules/home/programs/terminal/ranger/default.nix +++ b/modules/home/programs/terminal/ranger/default.nix @@ -99,7 +99,7 @@ # Local files h:${config.home.homeDirectory} k:${config.home.homeDirectory}/Keepers - j:${config.home.homeDirectory}/Downloads + d:${config.home.homeDirectory}/Downloads j:${config.home.homeDirectory}/Documents p:${config.home.homeDirectory}/Photos v:${config.home.homeDirectory}/Videos diff --git a/modules/home/settings/default.nix b/modules/home/settings/default.nix index ffe0fbb4..c34510b7 100644 --- a/modules/home/settings/default.nix +++ b/modules/home/settings/default.nix @@ -9,6 +9,7 @@ ./impermanence ./locale ./nix + ./nixgl ./qt ./xdg ]; diff --git a/modules/home/settings/gtk/bookmarks/default.nix b/modules/home/settings/gtk/bookmarks/default.nix index 57d2d2c7..f4c9c95a 100644 --- a/modules/home/settings/gtk/bookmarks/default.nix +++ b/modules/home/settings/gtk/bookmarks/default.nix @@ -5,7 +5,8 @@ "file://${config.home.homeDirectory}/Downloads" "file://${config.home.homeDirectory}/Documents" "file://${config.home.homeDirectory}/Videos" - "file://${config.home.homeDirectory}/Pictures/Screenshots" + "file://${config.home.homeDirectory}/Photos" + "file://${config.home.homeDirectory}/Photos/Screenshots" "file:///etc/nixos" ]; } diff --git a/modules/home/settings/nix/channels/default.nix b/modules/home/settings/nix/channels/default.nix index 499e5afd..0273e22d 100644 --- a/modules/home/settings/nix/channels/default.nix +++ b/modules/home/settings/nix/channels/default.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, stable, unstable, ... }: +{ config, pkgs, stable, unstable, ... }: with pkgs; { nix.registry.stable.flake = stable; nix.registry.unstable.flake = unstable; diff --git a/modules/home/settings/nix/unfree/default.nix b/modules/home/settings/nix/unfree/default.nix index 8c0a288a..41d21c96 100644 --- a/modules/home/settings/nix/unfree/default.nix +++ b/modules/home/settings/nix/unfree/default.nix @@ -1,6 +1,6 @@ { config, lib, ... }: -with lib; { - options.nixpkgs.allowUnfreePackages = mkOption { +{ + options.nixpkgs.allowUnfreePackages = with lib; mkOption { type = types.listOf types.str; default = []; }; diff --git a/modules/home/settings/nixgl/default.nix b/modules/home/settings/nixgl/default.nix new file mode 100644 index 00000000..ebf9c3d2 --- /dev/null +++ b/modules/home/settings/nixgl/default.nix @@ -0,0 +1,10 @@ +{ config, lib, ... }: +{ + nixGL = lib.mkIf config.targets.genericLinux.enable { + installScripts = [ + "mesa" + "nvidia" + ]; + vulkan.enable = true; + }; +} diff --git a/modules/home/settings/xdg/folders/default.nix b/modules/home/settings/xdg/folders/default.nix index 470cd693..fbd3f6fe 100644 --- a/modules/home/settings/xdg/folders/default.nix +++ b/modules/home/settings/xdg/folders/default.nix @@ -3,11 +3,13 @@ xdg.userDirs = { enable = config.home.desktop.enable; createDirectories = true; + desktop = null; pictures = "${config.home.homeDirectory}/Photos"; music = null; publicShare = null; templates = null; + extraConfig.XDG_SCREENSHOTS_DIR = "${config.xdg.userDirs.pictures}/Screenshots"; }; } diff --git a/modules/home/wms/programs/waybar/default.nix b/modules/home/wms/programs/waybar/default.nix index 05db4928..7eea309e 100644 --- a/modules/home/wms/programs/waybar/default.nix +++ b/modules/home/wms/programs/waybar/default.nix @@ -352,6 +352,16 @@ border-bottom: 3px solid transparent; min-width: 20px; } + #scratchpad, #privacy { + margin-left: 4px; + } + #mpris, #custom-notifs, #idle_inhibitor, #custom-weather, #cpu, #memory, #custom-vram, #backlight, #battery { + margin: 0 5px 0 2px; + } + #pulseaudio { + margin-right: 5px; + } + #workspaces button.visible, #workspaces button.active { border-bottom: 3px solid #${config.look.colors.prime}; background: #${config.look.colors.mid}; @@ -363,23 +373,6 @@ box-shadow: none; background: #${config.look.colors.light}; } - #scratchpad, #privacy { - margin-left: 4px; - } - #mpris, #custom-notifs, #idle_inhibitor, #custom-weather, #cpu, #memory, #custom-vram, #backlight, #battery { - margin: 0 5px 0 2px; - } - #pulseaudio { - margin-right: 5px; - } - - #mpris.paused, #custom-notifs.disabled, #idle_inhibitor.deactivated { - color: #888; - } - #pulseaudio.muted, #network.disconnected, #bluetooth.off { - color: #424242; - } - #mpris { border-bottom: 3px solid #ffb066; } @@ -411,6 +404,13 @@ border-bottom: 3px solid #0a6cf5; margin: 0 2px 0 2px; } + + #mpris.paused, #custom-notifs.disabled, #idle_inhibitor.deactivated { + color: #888; + } + #pulseaudio.muted, #network.disconnected, #bluetooth.off { + color: #424242; + } ''; }; } diff --git a/modules/system/settings/nix/channels/default.nix b/modules/system/settings/nix/channels/default.nix deleted file mode 100644 index 965eafe3..00000000 --- a/modules/system/settings/nix/channels/default.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ config, lib, pkgs, stable, unstable, ... }: -with pkgs; { - _module.args.pkgsStable = import stable { - inherit (stdenv.hostPlatform) system; - inherit (config.nixpkgs) config; - }; - _module.args.pkgsUnstable = import unstable { - inherit (stdenv.hostPlatform) system; - inherit (config.nixpkgs) config; - }; -} diff --git a/modules/system/settings/nix/default.nix b/modules/system/settings/nix/default.nix index c1115185..73fb0248 100644 --- a/modules/system/settings/nix/default.nix +++ b/modules/system/settings/nix/default.nix @@ -1,7 +1,6 @@ { pkgs, ... }: { imports = [ - ./channels ./gc ./unfree ]; From af605502d00ce5f03d2172e0a1e7e9c1738239d8 Mon Sep 17 00:00:00 2001 From: Bun Date: Mon, 12 May 2025 02:44:11 -0400 Subject: [PATCH 06/98] Update color of weather module on waybar --- modules/home/wms/programs/waybar/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/home/wms/programs/waybar/default.nix b/modules/home/wms/programs/waybar/default.nix index 7eea309e..1ce093b2 100644 --- a/modules/home/wms/programs/waybar/default.nix +++ b/modules/home/wms/programs/waybar/default.nix @@ -383,7 +383,7 @@ border-bottom: 3px solid #941efc; } #custom-weather { - border-bottom: 3px solid #c75bd3; + border-bottom: 3px solid #ea60e3; } #cpu { border-bottom: 3px solid #f90000; From f50b90ba94be5dc56769ff292082679e8a2b6a6e Mon Sep 17 00:00:00 2001 From: Bun Date: Mon, 12 May 2025 04:07:39 -0400 Subject: [PATCH 07/98] Push an ugly dumb hm standardization --- flake.nix | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/flake.nix b/flake.nix index db09545b..6c46828e 100644 --- a/flake.nix +++ b/flake.nix @@ -56,10 +56,10 @@ modules = [ (./hosts + "/${name}") ]; specialArgs = inputs; }; - mkHome = channel: modules: hm.lib.homeManagerConfiguration { - inherit modules; + mkHome = extraModules: hm.lib.homeManagerConfiguration { + modules = [ ./modules/home ] ++ extraModules; extraSpecialArgs = inputs; - pkgs = builtins.getAttr system channel.legacyPackages; + pkgs = builtins.getAttr system stable.legacyPackages; }; hostChannels = { @@ -77,14 +77,14 @@ nixosConfigurations = builtins.mapAttrs (name: channel: mkNix name channel) hostChannels; homeConfigurations = { - default = mkHome stable [ ./modules/home ]; - full = mkHome stable [ - ./modules/home - { - home.guifull.enable = true; - targets.genericLinux.enable = true; - } - ]; + default = mkHome [ ]; + desktop = mkHome [{ home.guifull.enable = true; }]; + + generic = mkHome [{ targets.genericLinux.enable = true; }]; + genericDesktop = mkHome [{ + home.guifull.enable = true; + targets.genericLinux.enable = true; + }]; }; } ); From a791dd0583e5390e41f0156da0346285b301958c Mon Sep 17 00:00:00 2001 From: Bun Date: Mon, 12 May 2025 11:19:54 -0400 Subject: [PATCH 08/98] Fix waybar Nvidia module --- flake.nix | 11 ++++------- hosts/tower/boot/default.nix | 4 ++-- modules/home/wms/programs/waybar/default.nix | 3 ++- modules/system/settings/nix/channels/default.nix | 11 +++++++++++ modules/system/settings/nix/default.nix | 1 + 5 files changed, 20 insertions(+), 10 deletions(-) create mode 100644 modules/system/settings/nix/channels/default.nix diff --git a/flake.nix b/flake.nix index 6c46828e..99e7f0c2 100644 --- a/flake.nix +++ b/flake.nix @@ -57,7 +57,10 @@ specialArgs = inputs; }; mkHome = extraModules: hm.lib.homeManagerConfiguration { - modules = [ ./modules/home ] ++ extraModules; + modules = [ + ./modules/home + { targets.genericLinux.enable = true; } + ] ++ extraModules; extraSpecialArgs = inputs; pkgs = builtins.getAttr system stable.legacyPackages; }; @@ -79,12 +82,6 @@ homeConfigurations = { default = mkHome [ ]; desktop = mkHome [{ home.guifull.enable = true; }]; - - generic = mkHome [{ targets.genericLinux.enable = true; }]; - genericDesktop = mkHome [{ - home.guifull.enable = true; - targets.genericLinux.enable = true; - }]; }; } ); diff --git a/hosts/tower/boot/default.nix b/hosts/tower/boot/default.nix index 9f0c2504..8c5668af 100644 --- a/hosts/tower/boot/default.nix +++ b/hosts/tower/boot/default.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ config, lib, pkgsUnstable, ... }: let commonKernelParams = [ # VM/GPU passthrough @@ -13,7 +13,7 @@ let in { boot = { # Latest kernel and IOMMU isolation - kernelPackages = pkgs.linuxPackages_latest; + kernelPackages = pkgsUnstable.linuxPackages_latest; kernelParams = commonKernelParams ++ [ "vfio-pci.ids=10de:1f82,10de:10fa" ]; # Load into GPU before video driver diff --git a/modules/home/wms/programs/waybar/default.nix b/modules/home/wms/programs/waybar/default.nix index 1ce093b2..94a9d228 100644 --- a/modules/home/wms/programs/waybar/default.nix +++ b/modules/home/wms/programs/waybar/default.nix @@ -61,6 +61,7 @@ BC="${bc}/bin/bc" HEAD="${uutils-coreutils-noprefix}/bin/head" CAT="${uutils-coreutils-noprefix}/bin/cat" + NVIDIA="/run/current-system/sw/bin/nvidia-smi" # Detect the active GPU driver gpu_driver="$($LSPCI -k | $GREP -Eo 'in use: (nvidia|amdgpu)' | $AWK '{print $3}')" @@ -72,7 +73,7 @@ # Get VRAM usage in MB if [[ "$gpu_driver" == "nvidia" ]]; then - vram_usage_mb="$(nvidia-smi --query-gpu=memory.used --format=csv,noheader,nounits | $HEAD -n1)" + vram_usage_mb="$($NVIDIA --query-gpu=memory.used --format=csv,noheader,nounits | $HEAD -n1)" elif [[ "$gpu_driver" == "amdgpu" ]]; then vram_bytes="$($CAT /sys/class/drm/card*/device/mem_info_vram_used 2>/dev/null | $HEAD -n1)" vram_usage_mb="$($BC <<< "$vram_bytes / 1024 / 1024")" diff --git a/modules/system/settings/nix/channels/default.nix b/modules/system/settings/nix/channels/default.nix new file mode 100644 index 00000000..b81caa1f --- /dev/null +++ b/modules/system/settings/nix/channels/default.nix @@ -0,0 +1,11 @@ +{ config, pkgs, stable, unstable, ... }: +with pkgs; { + _module.args.pkgsStable = import stable { + inherit (stdenv.hostPlatform) system; + inherit (config.nixpkgs) config; + }; + _module.args.pkgsUnstable = import unstable { + inherit (stdenv.hostPlatform) system; + inherit (config.nixpkgs) config; + }; +} diff --git a/modules/system/settings/nix/default.nix b/modules/system/settings/nix/default.nix index 73fb0248..c1115185 100644 --- a/modules/system/settings/nix/default.nix +++ b/modules/system/settings/nix/default.nix @@ -1,6 +1,7 @@ { pkgs, ... }: { imports = [ + ./channels ./gc ./unfree ]; From fd2d9b18a042148f0bb24bc376149ba227d6971c Mon Sep 17 00:00:00 2001 From: Bun Date: Mon, 12 May 2025 14:52:28 -0400 Subject: [PATCH 09/98] Update flake.lock --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 378fbe8f..1e36a78b 100644 --- a/flake.lock +++ b/flake.lock @@ -547,11 +547,11 @@ }, "stable": { "locked": { - "lastModified": 1746557022, - "narHash": "sha256-QkNoyEf6TbaTW5UZYX0OkwIJ/ZMeKSSoOMnSDPQuol0=", + "lastModified": 1746957726, + "narHash": "sha256-k9ut1LSfHCr0AW82ttEQzXVCqmyWVA5+SHJkS5ID/Jo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1d3aeb5a193b9ff13f63f4d9cc169fb88129f860", + "rev": "a39ed32a651fdee6842ec930761e31d1f242cb94", "type": "github" }, "original": { @@ -628,11 +628,11 @@ }, "unstable": { "locked": { - "lastModified": 1746663147, - "narHash": "sha256-Ua0drDHawlzNqJnclTJGf87dBmaO/tn7iZ+TCkTRpRc=", + "lastModified": 1746904237, + "narHash": "sha256-3e+AVBczosP5dCLQmMoMEogM57gmZ2qrVSrmq9aResQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "dda3dcd3fe03e991015e9a74b22d35950f264a54", + "rev": "d89fc19e405cb2d55ce7cc114356846a0ee5e956", "type": "github" }, "original": { From a60084f77c3b21e21e8e3b688048801d74d44c02 Mon Sep 17 00:00:00 2001 From: Bun Date: Mon, 12 May 2025 16:34:00 -0400 Subject: [PATCH 10/98] Add a few more rules to Kanshi --- .../home/settings/impermanence/default.nix | 3 +- modules/home/wms/programs/kanshi/default.nix | 37 +++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/modules/home/settings/impermanence/default.nix b/modules/home/settings/impermanence/default.nix index c91b1216..aab0cd23 100644 --- a/modules/home/settings/impermanence/default.nix +++ b/modules/home/settings/impermanence/default.nix @@ -8,8 +8,9 @@ "Keepers" "Projects" - ".ssh" ".gnupg" + ".local/state/nix/profiles" + ".ssh" ] ++ (if config.home.desktop.enable then [ "Documents" "Photos" diff --git a/modules/home/wms/programs/kanshi/default.nix b/modules/home/wms/programs/kanshi/default.nix index d592d646..52b8ac3b 100644 --- a/modules/home/wms/programs/kanshi/default.nix +++ b/modules/home/wms/programs/kanshi/default.nix @@ -3,12 +3,15 @@ services.kanshi = { enable = config.home.desktop.enable; settings = [ + # Outputs { output = { criteria = config.displays.tower1; + adaptiveSync = true; mode = "1920x1080@143.979996Hz"; }; } + { output = { criteria = config.displays.jupiter; @@ -17,6 +20,8 @@ scale = 1.15; }; } + + # Profiles { profile = { name = "primary"; @@ -41,6 +46,7 @@ ]; }; } + { profile = { name = "estradiol"; @@ -61,6 +67,24 @@ ]; }; } + + { + profile = { + name = "byod"; + outputs = [ + { + criteria = "Dell Inc. DELL U3423WE H8LGMP3"; + scale = 1.15; + status = "enable"; + } + { + criteria = "eDP-1"; + status = "disable"; + } + ]; + }; + } + { profile = { name = "docked"; @@ -76,6 +100,19 @@ ]; }; } + + { + profile = { + name = "deck"; + outputs = [ + { + criteria = config.displays.jupiter; + status = "enable"; + } + ]; + }; + } + { profile = { name = "undocked"; From e62bea822a6ae5f195d73a66546576053df57669 Mon Sep 17 00:00:00 2001 From: Bun Date: Mon, 12 May 2025 16:41:18 -0400 Subject: [PATCH 11/98] Remove unnecessary display variables --- modules/home/variables/displays/default.nix | 2 -- modules/home/wms/programs/kanshi/default.nix | 14 ++++---------- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/modules/home/variables/displays/default.nix b/modules/home/variables/displays/default.nix index 8d1fc828..99f17bf3 100644 --- a/modules/home/variables/displays/default.nix +++ b/modules/home/variables/displays/default.nix @@ -10,8 +10,6 @@ tower3 = "Eizo Nanao Corporation CG223W 23252050"; tower4 = "Samsung Electric Company SAMSUNG Unknown"; - jupiter = "Valve Corporation ANX7530 U 0x00000001"; - estradiol1 = "Dell Inc. DELL P2214H KW14V4965YKS"; estradiol2 = "HannStar Display Corp iP192A 051AW1WY03797"; }; diff --git a/modules/home/wms/programs/kanshi/default.nix b/modules/home/wms/programs/kanshi/default.nix index 52b8ac3b..7676b241 100644 --- a/modules/home/wms/programs/kanshi/default.nix +++ b/modules/home/wms/programs/kanshi/default.nix @@ -12,15 +12,6 @@ }; } - { - output = { - criteria = config.displays.jupiter; - mode = "800x1280@59.99900"; - transform = "270"; - scale = 1.15; - }; - } - # Profiles { profile = { @@ -106,8 +97,11 @@ name = "deck"; outputs = [ { - criteria = config.displays.jupiter; + criteria = "Valve Corporation ANX7530 U 0x00000001"; status = "enable"; + mode = "800x1280@59.99900"; + transform = "270"; + scale = 1.15; } ]; }; From f0bd401ef475cd7146132d127cfed03cc1e6ed98 Mon Sep 17 00:00:00 2001 From: Bun Date: Mon, 12 May 2025 18:10:51 -0400 Subject: [PATCH 12/98] Standardize impermanence import --- modules/home/settings/impermanence/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/home/settings/impermanence/default.nix b/modules/home/settings/impermanence/default.nix index aab0cd23..d22b1f4b 100644 --- a/modules/home/settings/impermanence/default.nix +++ b/modules/home/settings/impermanence/default.nix @@ -1,6 +1,6 @@ { config, lib, impermanence, ... }: { - imports = [ impermanence.homeManagerModules.impermanence ]; + imports = [ impermanence.homeManagerModules.default ]; home.persistence."/persist${config.home.homeDirectory}" = { enable = !config.targets.genericLinux.enable; From 822fa6eae26d4dc18f0a71a029943f625861f92a Mon Sep 17 00:00:00 2001 From: Bun Date: Mon, 12 May 2025 20:07:11 -0400 Subject: [PATCH 13/98] Change what power keys do, set new xdg default apps --- modules/home/settings/xdg/defaults/default.nix | 15 +++++++++++---- modules/system/settings/default.nix | 1 + modules/system/settings/logind/default.nix | 8 ++++++++ 3 files changed, 20 insertions(+), 4 deletions(-) create mode 100644 modules/system/settings/logind/default.nix diff --git a/modules/home/settings/xdg/defaults/default.nix b/modules/home/settings/xdg/defaults/default.nix index b8ba593b..1646ea18 100644 --- a/modules/home/settings/xdg/defaults/default.nix +++ b/modules/home/settings/xdg/defaults/default.nix @@ -1,11 +1,18 @@ { ... }: { xdg.mimeApps.defaultApplications = { - "inode/directory" = [ "pcmanfm-qt.desktop" ]; - "text/plain" = [ "nvim.desktop" ]; - "image/png" = [ "imv.desktop" ]; - "image/jpeg" = [ "imv.desktop" ]; + # Media + "image/*" = [ "imv.desktop" ]; "image/gif" = [ "mpv.desktop" ]; "video/*" = [ "mpv.desktop" ]; + + # Apps + "inode/directory" = [ "pcmanfm-qt.desktop" ]; + "text/plain" = [ "nvim.desktop" ]; + + # Browser + "application/x-mswinurl" = [ "librewolf.desktop" ]; + "x-scheme-handler/http" = [ "librewolf.desktop" ]; + "x-scheme-handler/https" = [ "librewolf.desktop" ]; }; } diff --git a/modules/system/settings/default.nix b/modules/system/settings/default.nix index 5a196fae..12467a0c 100644 --- a/modules/system/settings/default.nix +++ b/modules/system/settings/default.nix @@ -3,6 +3,7 @@ imports = [ ./font ./locale + ./logind ./minimal ./nix ./security diff --git a/modules/system/settings/logind/default.nix b/modules/system/settings/logind/default.nix new file mode 100644 index 00000000..a5b4471f --- /dev/null +++ b/modules/system/settings/logind/default.nix @@ -0,0 +1,8 @@ +{ config, lib, ... }: +{ + services.logind = { + killUserProcesses = true; + powerKey = lib.mkIf config.system.desktop.enable "suspend"; + powerKeyLongPress = "reboot"; + }; +} From ca2d6e409115b3589f339a1797441ab83961d489 Mon Sep 17 00:00:00 2001 From: Bun Date: Tue, 13 May 2025 04:12:46 +0000 Subject: [PATCH 14/98] Add Detritus --- flake.nix | 1 + hosts/detritus/boot/default.nix | 12 +++ hosts/detritus/default.nix | 18 ++++ hosts/detritus/disko/default.nix | 106 +++++++++++++++++++ hosts/detritus/filesystems/default.nix | 33 ++++++ hosts/detritus/hardware/default.nix | 21 ++++ hosts/detritus/user/default.nix | 7 ++ hosts/redmond/boot/default.nix | 2 +- hosts/tower/disko/default.nix | 1 - modules/home/variables/displays/default.nix | 4 +- modules/home/wms/programs/kanshi/default.nix | 6 +- modules/home/wms/programs/waybar/default.nix | 4 +- modules/home/wms/sway/outputs/default.nix | 8 +- modules/home/wms/sway/theme/default.nix | 2 +- 14 files changed, 211 insertions(+), 14 deletions(-) create mode 100644 hosts/detritus/boot/default.nix create mode 100644 hosts/detritus/default.nix create mode 100644 hosts/detritus/disko/default.nix create mode 100644 hosts/detritus/filesystems/default.nix create mode 100644 hosts/detritus/hardware/default.nix create mode 100644 hosts/detritus/user/default.nix diff --git a/flake.nix b/flake.nix index 99e7f0c2..05eb6b53 100644 --- a/flake.nix +++ b/flake.nix @@ -67,6 +67,7 @@ hostChannels = { tower = stable; + detritus = stable; intuos = stable; jupiter = unstable; diff --git a/hosts/detritus/boot/default.nix b/hosts/detritus/boot/default.nix new file mode 100644 index 00000000..225455a3 --- /dev/null +++ b/hosts/detritus/boot/default.nix @@ -0,0 +1,12 @@ +{ pkgs, ... }: +{ + boot = { + kernelPackages = pkgs.linuxPackages_latest; + kernelParams = [ + "amdgpu.cik_support=1" + "radeon.cik_support=0" + ]; + loader.grub.enable = true; + plymouth.enable = true; + }; +} diff --git a/hosts/detritus/default.nix b/hosts/detritus/default.nix new file mode 100644 index 00000000..261c98a0 --- /dev/null +++ b/hosts/detritus/default.nix @@ -0,0 +1,18 @@ +{ ... }: +{ + imports = [ + ./boot + ./disko + ./filesystems + ./hardware + ./user + ../../modules/system + ]; + + networking.hostName = "detritus"; + + system = { + desktop.enable = true; + stateVersion = "24.11"; + }; +} diff --git a/hosts/detritus/disko/default.nix b/hosts/detritus/disko/default.nix new file mode 100644 index 00000000..b4d328cf --- /dev/null +++ b/hosts/detritus/disko/default.nix @@ -0,0 +1,106 @@ +{ config, disko, ... }: +{ + imports = [ disko.nixosModules.disko ]; + + disko.devices = { + disk = { + "${config.networking.hostName}" = { + type = "disk"; + device = "/dev/nvme0n1"; + content = { + type = "gpt"; + partitions = { + boot = { + size = "1M"; + type = "EF02"; + }; + ESP = { + size = "2G"; + type = "EF00"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + mountOptions = [ "umask=0077" ]; + }; + }; + luks = { + size = "100%"; + content = { + type = "luks"; + name = "${config.networking.hostName}-disk"; + settings.allowDiscards = true; + passwordFile = "/tmp/secret.key"; + content = { + type = "lvm_pv"; + vg = "${config.networking.hostName}"; + }; + }; + }; + }; + }; + }; + }; + + lvm_vg = { + "${config.networking.hostName}" = { + type = "lvm_vg"; + lvs = { + root = { + size = "100%"; + content = { + type = "btrfs"; + extraArgs = [ "-f" ]; + subvolumes = { + "/root" = { + mountpoint = "/"; + mountOptions = [ + "compress=zstd" + "ssd" + ]; + }; + "/prev" = { + mountpoint = "/prev"; + mountOptions = [ + "compress=zstd" + "noexec" + "ssd" + ]; + }; + "/nix" = { + mountpoint = "/nix"; + mountOptions = [ + "compress=zstd" + "ssd" + ]; + }; + + # Impermanence + "/persist" = { + mountpoint = "/persist"; + mountOptions = [ + "compress=zstd" + "ssd" + ]; + }; + "/persist/.snapshots" = { }; + "/persist/home" = { }; + "/persist/home/.snapshots" = { }; + }; + }; + }; + swap = { + size = "8G"; + content = { + type = "swap"; + discardPolicy = "both"; + }; + }; + }; + }; + }; + }; + + # Needed for impermanence + fileSystems."/persist".neededForBoot = true; +} diff --git a/hosts/detritus/filesystems/default.nix b/hosts/detritus/filesystems/default.nix new file mode 100644 index 00000000..e9186cac --- /dev/null +++ b/hosts/detritus/filesystems/default.nix @@ -0,0 +1,33 @@ +{ config, ... }: +{ + fileSystems = { + # Network mounts + "/home/${config.sysusers.main}/Network/Midas" = { + device = "sv.nixfox.ca:/storage"; + fsType = "nfs4"; + options = [ + "noauto" + "soft" + "x-systemd.automount" + ]; + }; + "/home/${config.sysusers.main}/Network/Kitty" = { + device = "sv.nixfox.ca:/storage/bun"; + fsType = "nfs4"; + options = [ + "noauto" + "soft" + "x-systemd.automount" + ]; + }; + "/home/${config.sysusers.main}/Network/Prophet" = { + device = "mx.nixfox.ca:/storage"; + fsType = "nfs4"; + options = [ + "noauto" + "soft" + "x-systemd.automount" + ]; + }; + }; +} diff --git a/hosts/detritus/hardware/default.nix b/hosts/detritus/hardware/default.nix new file mode 100644 index 00000000..15af2604 --- /dev/null +++ b/hosts/detritus/hardware/default.nix @@ -0,0 +1,21 @@ +{ config, lib, modulesPath, ... }: +{ + imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; + + boot = { + initrd = { + availableKernelModules = [ + "ahci" + "ehci_pci" + "firewire_ohci" + "sd_mod" + "xhci_pci" + ]; + kernelModules = [ "dm-snapshot" ]; + }; + kernelModules = [ "kvm-intel" ]; + }; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/hosts/detritus/user/default.nix b/hosts/detritus/user/default.nix new file mode 100644 index 00000000..3ca3a690 --- /dev/null +++ b/hosts/detritus/user/default.nix @@ -0,0 +1,7 @@ +{ config, lib, ... }: +{ + home-manager.users."${config.sysusers.main}".home = { + guifull.enable = true; + stateVersion = lib.mkForce config.system.stateVersion; + }; +} diff --git a/hosts/redmond/boot/default.nix b/hosts/redmond/boot/default.nix index 9a94a6b2..d91be35e 100644 --- a/hosts/redmond/boot/default.nix +++ b/hosts/redmond/boot/default.nix @@ -3,8 +3,8 @@ boot = { kernelPackages = pkgs.linuxPackages_latest; kernelParams = [ - "radeon.cik_support=0" "amdgpu.cik_support=1" + "radeon.cik_support=0" ]; loader.systemd-boot.enable = true; plymouth.enable = true; diff --git a/hosts/tower/disko/default.nix b/hosts/tower/disko/default.nix index a5d6345a..b4d328cf 100644 --- a/hosts/tower/disko/default.nix +++ b/hosts/tower/disko/default.nix @@ -7,7 +7,6 @@ "${config.networking.hostName}" = { type = "disk"; device = "/dev/nvme0n1"; - imageSize = "32G"; content = { type = "gpt"; partitions = { diff --git a/modules/home/variables/displays/default.nix b/modules/home/variables/displays/default.nix index 99f17bf3..883ae4d6 100644 --- a/modules/home/variables/displays/default.nix +++ b/modules/home/variables/displays/default.nix @@ -10,7 +10,7 @@ tower3 = "Eizo Nanao Corporation CG223W 23252050"; tower4 = "Samsung Electric Company SAMSUNG Unknown"; - estradiol1 = "Dell Inc. DELL P2214H KW14V4965YKS"; - estradiol2 = "HannStar Display Corp iP192A 051AW1WY03797"; + detritus1 = "Dell Inc. DELL P2214H KW14V4965YKS"; + detritus2 = "HannStar Display Corp iP192A 051AW1WY03797"; }; } diff --git a/modules/home/wms/programs/kanshi/default.nix b/modules/home/wms/programs/kanshi/default.nix index 7676b241..0aeb5e8f 100644 --- a/modules/home/wms/programs/kanshi/default.nix +++ b/modules/home/wms/programs/kanshi/default.nix @@ -40,14 +40,14 @@ { profile = { - name = "estradiol"; + name = "detritus"; outputs = [ { - criteria = config.displays.estradiol1; + criteria = config.displays.detritus1; position = "0,0"; } { - criteria = config.displays.estradiol2; + criteria = config.displays.detritus2; position = "1920,0"; scale = 0.85; } diff --git a/modules/home/wms/programs/waybar/default.nix b/modules/home/wms/programs/waybar/default.nix index 94a9d228..35aadb64 100644 --- a/modules/home/wms/programs/waybar/default.nix +++ b/modules/home/wms/programs/waybar/default.nix @@ -246,7 +246,7 @@ output = [ "!${config.displays.tower2}" "!${config.displays.tower3}" - "!${config.displays.estradiol2}" + "!${config.displays.detritus2}" "*" ]; modules-left = [ @@ -299,7 +299,7 @@ output = [ config.displays.tower2 config.displays.tower3 - config.displays.estradiol2 + config.displays.detritus2 ]; modules-left = [ "sway/workspaces" diff --git a/modules/home/wms/sway/outputs/default.nix b/modules/home/wms/sway/outputs/default.nix index eddb7965..e44120f2 100644 --- a/modules/home/wms/sway/outputs/default.nix +++ b/modules/home/wms/sway/outputs/default.nix @@ -40,9 +40,9 @@ (assign "${config.displays.tower3}" workspaces3) ++ (assign "${config.displays.tower4}" workspaces4) ++ - (assign "${config.displays.estradiol1}" workspaces1) ++ - (assign "${config.displays.estradiol1}" workspaces2) ++ - (assign "${config.displays.estradiol2}" workspaces3) ++ - (assign "${config.displays.estradiol2}" workspaces4); + (assign "${config.displays.detritus1}" workspaces1) ++ + (assign "${config.displays.detritus1}" workspaces2) ++ + (assign "${config.displays.detritus2}" workspaces3) ++ + (assign "${config.displays.detritus2}" workspaces4); }; } diff --git a/modules/home/wms/sway/theme/default.nix b/modules/home/wms/sway/theme/default.nix index f50c87dc..b28ebae3 100644 --- a/modules/home/wms/sway/theme/default.nix +++ b/modules/home/wms/sway/theme/default.nix @@ -60,7 +60,7 @@ "${config.displays.tower2}".bg = "${builtins.toString ./wallpapers/2.png} fill"; "${config.displays.tower3}".bg = "${builtins.toString ./wallpapers/3.png} fill"; - "${config.displays.estradiol2}".bg = "${builtins.toString ./wallpapers/2.png} fill"; + "${config.displays.detritus2}".bg = "${builtins.toString ./wallpapers/2.png} fill"; }; }; } From b7c565130619e04b59a7f2c320e6b42c584939f0 Mon Sep 17 00:00:00 2001 From: Bun Date: Tue, 13 May 2025 04:04:30 -0400 Subject: [PATCH 15/98] Add more Detritus --- hosts/detritus/boot/default.nix | 5 ++--- hosts/detritus/default.nix | 2 ++ hosts/detritus/disko/default.nix | 2 +- hosts/detritus/hardware/default.nix | 5 +++-- hosts/detritus/id_ed25519.pub | 1 + hosts/detritus/user/default.nix | 10 +++++++--- modules/home/settings/cursor/default.nix | 5 +++-- modules/home/wms/programs/kanshi/default.nix | 6 +----- modules/home/wms/sway/extra/default.nix | 1 - modules/system/users/main/default.nix | 1 + 10 files changed, 21 insertions(+), 17 deletions(-) create mode 100644 hosts/detritus/id_ed25519.pub diff --git a/hosts/detritus/boot/default.nix b/hosts/detritus/boot/default.nix index 225455a3..e493a266 100644 --- a/hosts/detritus/boot/default.nix +++ b/hosts/detritus/boot/default.nix @@ -3,10 +3,9 @@ boot = { kernelPackages = pkgs.linuxPackages_latest; kernelParams = [ - "amdgpu.cik_support=1" - "radeon.cik_support=0" + "amdgpu.si_support=1" + "radeon.si_support=0" ]; loader.grub.enable = true; - plymouth.enable = true; }; } diff --git a/hosts/detritus/default.nix b/hosts/detritus/default.nix index 261c98a0..04eda225 100644 --- a/hosts/detritus/default.nix +++ b/hosts/detritus/default.nix @@ -15,4 +15,6 @@ desktop.enable = true; stateVersion = "24.11"; }; + + services.xserver.videoDrivers = [ "amdgpu" ]; } diff --git a/hosts/detritus/disko/default.nix b/hosts/detritus/disko/default.nix index b4d328cf..4d195170 100644 --- a/hosts/detritus/disko/default.nix +++ b/hosts/detritus/disko/default.nix @@ -6,7 +6,7 @@ disk = { "${config.networking.hostName}" = { type = "disk"; - device = "/dev/nvme0n1"; + device = "/dev/sda"; content = { type = "gpt"; partitions = { diff --git a/hosts/detritus/hardware/default.nix b/hosts/detritus/hardware/default.nix index 15af2604..7b58ab61 100644 --- a/hosts/detritus/hardware/default.nix +++ b/hosts/detritus/hardware/default.nix @@ -7,9 +7,10 @@ availableKernelModules = [ "ahci" "ehci_pci" - "firewire_ohci" "sd_mod" - "xhci_pci" + "usb_storage" + "usbhid" + "xhci_pci_renesas" ]; kernelModules = [ "dm-snapshot" ]; }; diff --git a/hosts/detritus/id_ed25519.pub b/hosts/detritus/id_ed25519.pub new file mode 100644 index 00000000..c35b9e57 --- /dev/null +++ b/hosts/detritus/id_ed25519.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBQE+a1E88+ELJ5cDOMPlc9lnV1ysVndchgJ4MxCjeWd diff --git a/hosts/detritus/user/default.nix b/hosts/detritus/user/default.nix index 3ca3a690..7db60010 100644 --- a/hosts/detritus/user/default.nix +++ b/hosts/detritus/user/default.nix @@ -1,7 +1,11 @@ { config, lib, ... }: { - home-manager.users."${config.sysusers.main}".home = { - guifull.enable = true; - stateVersion = lib.mkForce config.system.stateVersion; + home-manager.users."${config.sysusers.main}" = { + home = { + guifull.enable = true; + stateVersion = lib.mkForce config.system.stateVersion; + }; + + wayland.windowManager.sway.extraSessionCommands = lib.mkForce "export ELECTRON_OZONE_PLATFORM_HINT=wayland"; }; } diff --git a/modules/home/settings/cursor/default.nix b/modules/home/settings/cursor/default.nix index b6ff65ef..4d547cc2 100644 --- a/modules/home/settings/cursor/default.nix +++ b/modules/home/settings/cursor/default.nix @@ -1,10 +1,11 @@ { config, lib, pkgs, ... }: { home.pointerCursor = lib.mkIf config.home.desktop.enable { - gtk.enable = true; - x11.enable = true; name = "Simp1e-Dark"; package = pkgs.simp1e-cursors; size = 24; + + gtk.enable = true; + x11.enable = true; }; } diff --git a/modules/home/wms/programs/kanshi/default.nix b/modules/home/wms/programs/kanshi/default.nix index 0aeb5e8f..112de47a 100644 --- a/modules/home/wms/programs/kanshi/default.nix +++ b/modules/home/wms/programs/kanshi/default.nix @@ -15,7 +15,7 @@ # Profiles { profile = { - name = "primary"; + name = "tower"; outputs = [ { criteria = config.displays.tower1; @@ -51,10 +51,6 @@ position = "1920,0"; scale = 0.85; } - { - criteria = "eDP-1"; - status = "disable"; - } ]; }; } diff --git a/modules/home/wms/sway/extra/default.nix b/modules/home/wms/sway/extra/default.nix index 9a0ae172..2a879219 100644 --- a/modules/home/wms/sway/extra/default.nix +++ b/modules/home/wms/sway/extra/default.nix @@ -2,6 +2,5 @@ { wayland.windowManager.sway.extraConfig = '' titlebar_padding 10 1 - primary_selection disabled ''; } diff --git a/modules/system/users/main/default.nix b/modules/system/users/main/default.nix index f15624ec..2bb89a17 100644 --- a/modules/system/users/main/default.nix +++ b/modules/system/users/main/default.nix @@ -13,6 +13,7 @@ hashedPassword = config.secrets.accPass.main; openssh.authorizedKeys.keyFiles = [ ../../../../hosts/tower/id_ed25519.pub + ../../../../hosts/detritus/id_ed25519.pub ../../../../hosts/intuos/id_ed25519.pub ../../../../hosts/jupiter/id_ed25519.pub From 86a180de0c0de21cb523b3d4d9e5505313d23d63 Mon Sep 17 00:00:00 2001 From: Bun Date: Tue, 13 May 2025 12:18:30 -0400 Subject: [PATCH 16/98] Make Detritus work by any means necessary --- hosts/detritus/user/default.nix | 4 ++-- hosts/midas/network/default.nix | 5 ++--- modules/home/wms/sway/rules/default.nix | 1 + 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/hosts/detritus/user/default.nix b/hosts/detritus/user/default.nix index 7db60010..07de9f2a 100644 --- a/hosts/detritus/user/default.nix +++ b/hosts/detritus/user/default.nix @@ -1,4 +1,4 @@ -{ config, lib, ... }: +{ config, lib, pkgs, ... }: { home-manager.users."${config.sysusers.main}" = { home = { @@ -6,6 +6,6 @@ stateVersion = lib.mkForce config.system.stateVersion; }; - wayland.windowManager.sway.extraSessionCommands = lib.mkForce "export ELECTRON_OZONE_PLATFORM_HINT=wayland"; + wayland.windowManager.sway.package = pkgs.swayfx; }; } diff --git a/hosts/midas/network/default.nix b/hosts/midas/network/default.nix index 17b47f4f..ed0f8b14 100644 --- a/hosts/midas/network/default.nix +++ b/hosts/midas/network/default.nix @@ -26,11 +26,10 @@ type nat hook prerouting priority dstnat; policy accept; tcp dport 2211 dnat ip to 11.0.0.100:22 comment "Tower SSH" tcp dport 2222 dnat ip to 11.0.0.2:22 comment "Kitty SSH" + + tcp dport 2050 dnat ip to 11.0.0.2:2049 comment "Kitty NFS" udp dport { 27005, 27015 } dnat ip to 11.0.0.100 comment "PC Hosted Games" - - tcp dport { 48010, 47989, 47984 } dnat ip to 11.0.0.100 comment "PC Sunshine TCP" - udp dport { 47998, 47999, 48000 } dnat ip to 11.0.0.100 comment "PC Sunshine UDP" } chain forward { diff --git a/modules/home/wms/sway/rules/default.nix b/modules/home/wms/sway/rules/default.nix index 392dbe0f..7eab9375 100644 --- a/modules/home/wms/sway/rules/default.nix +++ b/modules/home/wms/sway/rules/default.nix @@ -63,6 +63,7 @@ "7:${config.ws.w7}" = [ { app_id = "teams-for-linux"; } { app_id = "vesktop"; } + { class = "vesktop"; } ]; "9:${config.ws.w9}" = [{ app_id = "thunderbird"; }]; From 968ae4631ce580171880cacadc7fc1d375da663f Mon Sep 17 00:00:00 2001 From: Bun Date: Tue, 13 May 2025 12:45:52 -0400 Subject: [PATCH 17/98] Remove some firewall rules --- hosts/detritus/filesystems/default.nix | 1 + hosts/midas/network/default.nix | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/hosts/detritus/filesystems/default.nix b/hosts/detritus/filesystems/default.nix index e9186cac..4fcab792 100644 --- a/hosts/detritus/filesystems/default.nix +++ b/hosts/detritus/filesystems/default.nix @@ -16,6 +16,7 @@ fsType = "nfs4"; options = [ "noauto" + "port=2050" "soft" "x-systemd.automount" ]; diff --git a/hosts/midas/network/default.nix b/hosts/midas/network/default.nix index ed0f8b14..332d8b2e 100644 --- a/hosts/midas/network/default.nix +++ b/hosts/midas/network/default.nix @@ -27,8 +27,6 @@ tcp dport 2211 dnat ip to 11.0.0.100:22 comment "Tower SSH" tcp dport 2222 dnat ip to 11.0.0.2:22 comment "Kitty SSH" - tcp dport 2050 dnat ip to 11.0.0.2:2049 comment "Kitty NFS" - udp dport { 27005, 27015 } dnat ip to 11.0.0.100 comment "PC Hosted Games" } From 66502988ef3095c925b270fd68f4b9879f1ef6ea Mon Sep 17 00:00:00 2001 From: Bun Date: Wed, 14 May 2025 00:12:33 -0400 Subject: [PATCH 18/98] Update home impermanence to be in the style of GNU Stow --- .nvimlog | 0 hosts/detritus/filesystems/default.nix | 21 ++++++------ hosts/jupiter/jovian/default.nix | 5 ++- hosts/kitty/filesystems/default.nix | 2 ++ .../home/programs/gui/librewolf/default.nix | 2 +- modules/home/programs/gui/obs/default.nix | 2 +- .../home/programs/gui/thunderbird/default.nix | 2 +- .../misc/gaming/launchers/default.nix | 8 ++--- .../home/programs/misc/general/default.nix | 6 ++-- .../home/programs/misc/production/default.nix | 8 ++--- modules/home/programs/misc/school/default.nix | 10 +++--- .../home/programs/terminal/direnv/default.nix | 2 +- .../programs/terminal/lazygit/default.nix | 2 +- .../home/programs/terminal/neovim/default.nix | 2 +- .../programs/terminal/nix-index/default.nix | 2 +- .../home/programs/terminal/zoxide/default.nix | 2 +- .../home/programs/terminal/zsh/default.nix | 2 +- modules/home/services/gpg/default.nix | 4 ++- modules/home/services/mpd/default.nix | 2 +- modules/home/settings/dconf/default.nix | 14 +++----- .../home/settings/impermanence/default.nix | 33 ++++++++++--------- modules/home/settings/xdg/folders/default.nix | 5 ++- 22 files changed, 72 insertions(+), 64 deletions(-) create mode 100644 .nvimlog diff --git a/.nvimlog b/.nvimlog new file mode 100644 index 00000000..e69de29b diff --git a/hosts/detritus/filesystems/default.nix b/hosts/detritus/filesystems/default.nix index 4fcab792..f25a8d19 100644 --- a/hosts/detritus/filesystems/default.nix +++ b/hosts/detritus/filesystems/default.nix @@ -1,30 +1,31 @@ { config, ... }: { fileSystems = { + "/persist/storage" = { + device = "/dev/disk/by-uuid/d0d6783f-ad51-4d85-b8a9-3374f6460ef6"; + fsType = "btrfs"; + options = [ + "nofail" + "nosuid" + ]; + }; + # Network mounts "/home/${config.sysusers.main}/Network/Midas" = { device = "sv.nixfox.ca:/storage"; fsType = "nfs4"; options = [ + "noatime" "noauto" "soft" "x-systemd.automount" ]; }; - "/home/${config.sysusers.main}/Network/Kitty" = { - device = "sv.nixfox.ca:/storage/bun"; - fsType = "nfs4"; - options = [ - "noauto" - "port=2050" - "soft" - "x-systemd.automount" - ]; - }; "/home/${config.sysusers.main}/Network/Prophet" = { device = "mx.nixfox.ca:/storage"; fsType = "nfs4"; options = [ + "noatime" "noauto" "soft" "x-systemd.automount" diff --git a/hosts/jupiter/jovian/default.nix b/hosts/jupiter/jovian/default.nix index f827574b..db24a2b3 100644 --- a/hosts/jupiter/jovian/default.nix +++ b/hosts/jupiter/jovian/default.nix @@ -45,7 +45,10 @@ "/etc/NetworkManager/system-connections" "/var/lib/decky-loader" ]; - users.${config.sysusers.main}.directories = [ ".steam" ]; + users.${config.sysusers.main}.directories = [ + ".config/dconf" + ".steam" + ]; }; gnome.excludePackages = with pkgs; [ adwaita-icon-theme diff --git a/hosts/kitty/filesystems/default.nix b/hosts/kitty/filesystems/default.nix index 29880794..8354a0ab 100644 --- a/hosts/kitty/filesystems/default.nix +++ b/hosts/kitty/filesystems/default.nix @@ -9,6 +9,8 @@ "nosuid" ]; }; + + # Network mounts "/home/${config.sysusers.main}/Network/Midas" = { device = "11.0.0.1:/storage"; fsType = "nfs4"; diff --git a/modules/home/programs/gui/librewolf/default.nix b/modules/home/programs/gui/librewolf/default.nix index 8f5291be..954d8875 100644 --- a/modules/home/programs/gui/librewolf/default.nix +++ b/modules/home/programs/gui/librewolf/default.nix @@ -242,7 +242,7 @@ ".librewolf".source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/.mozilla/firefox"; ".mozilla/librewolf".source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/.mozilla/firefox"; }; - persistence."/persist${config.home.homeDirectory}".directories = [ ".mozilla" ]; + persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ "browser/.mozilla" ]; }; }; } diff --git a/modules/home/programs/gui/obs/default.nix b/modules/home/programs/gui/obs/default.nix index 950c8bb8..15381818 100644 --- a/modules/home/programs/gui/obs/default.nix +++ b/modules/home/programs/gui/obs/default.nix @@ -12,6 +12,6 @@ ]; }; - home.persistence."/persist${config.home.homeDirectory}".directories = [ ".config/obs-studio" ]; + home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ "data/.config/obs-studio" ]; }; } diff --git a/modules/home/programs/gui/thunderbird/default.nix b/modules/home/programs/gui/thunderbird/default.nix index 21c23773..47404be1 100644 --- a/modules/home/programs/gui/thunderbird/default.nix +++ b/modules/home/programs/gui/thunderbird/default.nix @@ -59,6 +59,6 @@ }; }; - home.persistence."/persist${config.home.homeDirectory}".directories = [ ".thunderbird" ]; + home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ "browser/.thunderbird" ]; }; } diff --git a/modules/home/programs/misc/gaming/launchers/default.nix b/modules/home/programs/misc/gaming/launchers/default.nix index 9f0a8e44..f937135e 100644 --- a/modules/home/programs/misc/gaming/launchers/default.nix +++ b/modules/home/programs/misc/gaming/launchers/default.nix @@ -8,10 +8,10 @@ steam steam-run-free ]; - persistence."/persist${config.home.homeDirectory}".directories = [ - ".config/heroic" - ".local/share/PrismLauncher" - ".local/share/Steam" + persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ + "games/.config/heroic" + "games/.local/share/PrismLauncher" + "games/.local/share/Steam" ]; }; diff --git a/modules/home/programs/misc/general/default.nix b/modules/home/programs/misc/general/default.nix index 6c023524..7419dde3 100644 --- a/modules/home/programs/misc/general/default.nix +++ b/modules/home/programs/misc/general/default.nix @@ -6,9 +6,9 @@ qbittorrent vesktop ]; - persistence."/persist${config.home.homeDirectory}".directories = [ - ".config/qBittorrent" - ".config/vesktop" + persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ + "data/.config/qBittorrent" + "data/.config/vesktop" ]; }; } diff --git a/modules/home/programs/misc/production/default.nix b/modules/home/programs/misc/production/default.nix index ea3a1c3b..a9fea8b9 100644 --- a/modules/home/programs/misc/production/default.nix +++ b/modules/home/programs/misc/production/default.nix @@ -8,10 +8,10 @@ blender_4_4 krita ]; - persistence."/persist${config.home.homeDirectory}".directories = [ - ".config/audacity" - ".config/blender" - ".local/share/krita" + persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ + "data/.config/audacity" + "data/.config/blender" + "data/.local/share/krita" ]; }; } diff --git a/modules/home/programs/misc/school/default.nix b/modules/home/programs/misc/school/default.nix index d46dc396..aba9de2a 100644 --- a/modules/home/programs/misc/school/default.nix +++ b/modules/home/programs/misc/school/default.nix @@ -11,11 +11,11 @@ shellAliases.seneca = "ssh jhampton1@matrix.senecapolytechnic.ca"; - persistence."/persist${config.home.homeDirectory}".directories = [ - ".cache/gpclient" - ".config/com.yuezk.qt" - ".config/remmina" - ".config/teams-for-linux" + persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ + "school/.cache/gpclient" + "school/.config/com.yuezk.qt" + "school/.config/remmina" + "school/.config/teams-for-linux" ]; }; } diff --git a/modules/home/programs/terminal/direnv/default.nix b/modules/home/programs/terminal/direnv/default.nix index 1ccc3c68..51eac95e 100644 --- a/modules/home/programs/terminal/direnv/default.nix +++ b/modules/home/programs/terminal/direnv/default.nix @@ -5,5 +5,5 @@ nix-direnv.enable = true; }; - home.persistence."/persist${config.home.homeDirectory}".directories = [ ".local/share/direnv" ]; + home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ "data/.local/share/direnv" ]; } diff --git a/modules/home/programs/terminal/lazygit/default.nix b/modules/home/programs/terminal/lazygit/default.nix index 45a9411d..243ff7f3 100644 --- a/modules/home/programs/terminal/lazygit/default.nix +++ b/modules/home/programs/terminal/lazygit/default.nix @@ -1,5 +1,5 @@ { config, ... }: { programs.lazygit.enable = true; - home.persistence."/persist${config.home.homeDirectory}".directories = [ ".local/state/lazygit" ]; + home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ "state/.local/state/lazygit" ]; } diff --git a/modules/home/programs/terminal/neovim/default.nix b/modules/home/programs/terminal/neovim/default.nix index 3040b096..695c7491 100644 --- a/modules/home/programs/terminal/neovim/default.nix +++ b/modules/home/programs/terminal/neovim/default.nix @@ -115,6 +115,6 @@ home = { sessionVariables.MANPAGER = "nvim +Man!"; - persistence."/persist${config.home.homeDirectory}".directories = [ ".local/share/nvim/undo" ]; + persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ "state/.local/share/nvim/undo" ]; }; } diff --git a/modules/home/programs/terminal/nix-index/default.nix b/modules/home/programs/terminal/nix-index/default.nix index 58f33a55..e82e0dd3 100644 --- a/modules/home/programs/terminal/nix-index/default.nix +++ b/modules/home/programs/terminal/nix-index/default.nix @@ -2,5 +2,5 @@ { programs.nix-index.enable = true; - home.persistence."/persist${config.home.homeDirectory}".directories = [ ".cache/nix-index" ]; + home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ "nix/.cache/nix-index" ]; } diff --git a/modules/home/programs/terminal/zoxide/default.nix b/modules/home/programs/terminal/zoxide/default.nix index ee6e4704..36c56d59 100644 --- a/modules/home/programs/terminal/zoxide/default.nix +++ b/modules/home/programs/terminal/zoxide/default.nix @@ -4,6 +4,6 @@ home = { shellAliases.cd = "z"; - persistence."/persist${config.home.homeDirectory}".directories = [ ".local/share/zoxide" ]; + persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ "state/.local/share/zoxide" ]; }; } diff --git a/modules/home/programs/terminal/zsh/default.nix b/modules/home/programs/terminal/zsh/default.nix index b9f9780b..b81f3851 100644 --- a/modules/home/programs/terminal/zsh/default.nix +++ b/modules/home/programs/terminal/zsh/default.nix @@ -26,5 +26,5 @@ ''; }; - home.persistence."/persist${config.home.homeDirectory}".directories = [ ".config/zsh" ]; + home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ "state/.config/zsh" ]; } diff --git a/modules/home/services/gpg/default.nix b/modules/home/services/gpg/default.nix index a6cbd32b..72dcbe1b 100644 --- a/modules/home/services/gpg/default.nix +++ b/modules/home/services/gpg/default.nix @@ -1,7 +1,9 @@ -{ ... }: +{ config, ... }: { services.gpg-agent = { enable = true; enableSshSupport = true; }; + + home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ "secure/.gnupg" ]; } diff --git a/modules/home/services/mpd/default.nix b/modules/home/services/mpd/default.nix index e862bd2b..c84ac9a7 100644 --- a/modules/home/services/mpd/default.nix +++ b/modules/home/services/mpd/default.nix @@ -18,6 +18,6 @@ mpd-discord-rpc.enable = true; }; - home.persistence."/persist${config.home.homeDirectory}".directories = [ ".local/share/mpd" ]; + home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ "state/.local/share/mpd" ]; }; } diff --git a/modules/home/settings/dconf/default.nix b/modules/home/settings/dconf/default.nix index 38cda938..005a1a89 100644 --- a/modules/home/settings/dconf/default.nix +++ b/modules/home/settings/dconf/default.nix @@ -1,14 +1,10 @@ { config, lib, ... }: { - config = lib.mkIf config.home.desktop.enable { - dconf.settings = { - "org/gnome/desktop/interface/color-scheme".color-scheme = "prefer-dark"; - "org/virt-manager/virt-manager/connections" = { - autoconnect = [ "qemu:///system" ]; - uris = [ "qemu:///system" ]; - }; + dconf.settings = lib.mkIf config.home.desktop.enable { + "org/gnome/desktop/interface/color-scheme".color-scheme = "prefer-dark"; + "org/virt-manager/virt-manager/connections" = { + autoconnect = [ "qemu:///system" ]; + uris = [ "qemu:///system" ]; }; - - home.persistence."/persist${config.home.homeDirectory}".directories = [ ".config/dconf" ]; }; } diff --git a/modules/home/settings/impermanence/default.nix b/modules/home/settings/impermanence/default.nix index d22b1f4b..77bb60b6 100644 --- a/modules/home/settings/impermanence/default.nix +++ b/modules/home/settings/impermanence/default.nix @@ -2,23 +2,24 @@ { imports = [ impermanence.homeManagerModules.default ]; - home.persistence."/persist${config.home.homeDirectory}" = { + home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}" = { enable = !config.targets.genericLinux.enable; - directories = [ - "Keepers" - "Projects" - - ".gnupg" - ".local/state/nix/profiles" - ".ssh" - ] ++ (if config.home.desktop.enable then [ - "Documents" - "Photos" - "Videos" - "Games" - - ".local/state/wireplumber" - ] else []); allowOther = false; + removePrefixDirectory = true; + directories = [ + "home/Keepers" + "home/Projects" + + "nix/.local/state/nix/profiles" + "secure/.ssh" + ] ++ (if config.home.desktop.enable then [ + "home/Documents" + "home/Games" + "home/Photos" + "home/Videos" + + "secure/.pki" + "state/.local/state/wireplumber" + ] else []); }; } diff --git a/modules/home/settings/xdg/folders/default.nix b/modules/home/settings/xdg/folders/default.nix index fbd3f6fe..0bd155ae 100644 --- a/modules/home/settings/xdg/folders/default.nix +++ b/modules/home/settings/xdg/folders/default.nix @@ -10,6 +10,9 @@ publicShare = null; templates = null; - extraConfig.XDG_SCREENSHOTS_DIR = "${config.xdg.userDirs.pictures}/Screenshots"; + extraConfig = { + XDG_SCREENSHOTS_DIR = "${config.xdg.userDirs.pictures}/Screenshots"; + XDG_PERSIST_DIR = "/persist${config.home.homeDirectory}"; + }; }; } From 161c11c23a445e57dd857cc244b13fe450a55299 Mon Sep 17 00:00:00 2001 From: Bun Date: Wed, 14 May 2025 01:09:16 -0400 Subject: [PATCH 19/98] Use Stow on generic distros also --- flake.lock | 24 +++++++++---------- hosts/detritus/filesystems/default.nix | 12 +++++++++- .../home/programs/gui/librewolf/default.nix | 2 +- .../home/settings/impermanence/default.nix | 1 - modules/home/settings/xdg/folders/default.nix | 2 +- 5 files changed, 25 insertions(+), 16 deletions(-) diff --git a/flake.lock b/flake.lock index 1e36a78b..f603a025 100644 --- a/flake.lock +++ b/flake.lock @@ -250,11 +250,11 @@ ] }, "locked": { - "lastModified": 1746171682, - "narHash": "sha256-EyXUNSa+H+YvGVuQJP1nZskXAowxKYp79RNUsNdQTj4=", + "lastModified": 1747020534, + "narHash": "sha256-D/6rkiC6w2p+4SwRiVKrWIeYzun8FBg7NlMKMwQMxO0=", "owner": "nix-community", "repo": "home-manager", - "rev": "50eee705bbdbac942074a8c120e8194185633675", + "rev": "b4bbdc6fde16fc2051fcde232f6e288cd22007ca", "type": "github" }, "original": { @@ -287,11 +287,11 @@ ] }, "locked": { - "lastModified": 1746681524, - "narHash": "sha256-c5kDVFh+vVfQSEXdVIudFRzPH3LO8j2ImgsBeo8v+Eo=", + "lastModified": 1747109298, + "narHash": "sha256-v6P2Lm2ucRhFpVdY2feQKxJIGfaud3CVHV5GWoCNji8=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "14eb8f7d2b0cca74691db620292037bdb813ceb7", + "rev": "7ceb01d01e02fa55699db1ecb99df1295b47b499", "type": "github" }, "original": { @@ -358,11 +358,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1746842210, - "narHash": "sha256-bGJ3q4BEJEEz9MNo2QwXgQULmSUItxn52lMQLNImZ+w=", + "lastModified": 1747188102, + "narHash": "sha256-h/J6hSskrsR+YFCjWW4x4qXm1oGcUUvXH8TEZDZnLqk=", "owner": "Infinidoge", "repo": "nix-minecraft", - "rev": "9acdd362e10b50cb36234544b5b80b3d0372456d", + "rev": "cc53b6b79022c9dd31b9d426bb5a5f39246196e1", "type": "github" }, "original": { @@ -464,11 +464,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1746906291, - "narHash": "sha256-dX85SDSt4h7281Dkox9NnTPjCIDs5JxkJQB9Czd7ajc=", + "lastModified": 1747196235, + "narHash": "sha256-41VHCKCevxL7Luqwc9A2r3DPTOz6Ky+nRkHp1eurtmA=", "owner": "nix-community", "repo": "NUR", - "rev": "7c77c4255a4cda029257090a72806dbd48ea14e3", + "rev": "2378adbb9ebb4654dc0d41786609839b6ad4a7ef", "type": "github" }, "original": { diff --git a/hosts/detritus/filesystems/default.nix b/hosts/detritus/filesystems/default.nix index f25a8d19..5dc1f325 100644 --- a/hosts/detritus/filesystems/default.nix +++ b/hosts/detritus/filesystems/default.nix @@ -12,7 +12,17 @@ # Network mounts "/home/${config.sysusers.main}/Network/Midas" = { - device = "sv.nixfox.ca:/storage"; + device = "10.2.0.1:/storage"; + fsType = "nfs4"; + options = [ + "noatime" + "noauto" + "soft" + "x-systemd.automount" + ]; + }; + "/home/${config.sysusers.main}/Network/Kitty" = { + device = "10.2.0.2:/storage/bun"; fsType = "nfs4"; options = [ "noatime" diff --git a/modules/home/programs/gui/librewolf/default.nix b/modules/home/programs/gui/librewolf/default.nix index 954d8875..11a0ef0a 100644 --- a/modules/home/programs/gui/librewolf/default.nix +++ b/modules/home/programs/gui/librewolf/default.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, nur, ... }: +{ config, lib, pkgs, ... }: { config = lib.mkIf config.home.desktop.enable { programs.firefox = { diff --git a/modules/home/settings/impermanence/default.nix b/modules/home/settings/impermanence/default.nix index 77bb60b6..e8e25295 100644 --- a/modules/home/settings/impermanence/default.nix +++ b/modules/home/settings/impermanence/default.nix @@ -3,7 +3,6 @@ imports = [ impermanence.homeManagerModules.default ]; home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}" = { - enable = !config.targets.genericLinux.enable; allowOther = false; removePrefixDirectory = true; directories = [ diff --git a/modules/home/settings/xdg/folders/default.nix b/modules/home/settings/xdg/folders/default.nix index 0bd155ae..72486278 100644 --- a/modules/home/settings/xdg/folders/default.nix +++ b/modules/home/settings/xdg/folders/default.nix @@ -11,8 +11,8 @@ templates = null; extraConfig = { + XDG_PERSIST_DIR = if !config.targets.genericLinux.enable then "/persist${config.home.homeDirectory}" else "${config.home.homeDirectory}/.stow"; XDG_SCREENSHOTS_DIR = "${config.xdg.userDirs.pictures}/Screenshots"; - XDG_PERSIST_DIR = "/persist${config.home.homeDirectory}"; }; }; } From f75eec54841ce55547478fef7e435d60a4009d88 Mon Sep 17 00:00:00 2001 From: Bun Date: Wed, 14 May 2025 12:07:20 +0000 Subject: [PATCH 20/98] Add hidden partition --- flake.nix | 1 + hosts/hidden/boot/default.nix | 8 +++ hosts/hidden/default.nix | 17 +++++ hosts/hidden/disko/default.nix | 106 ++++++++++++++++++++++++++++++ hosts/hidden/hardware/default.nix | 22 +++++++ hosts/hidden/user/default.nix | 7 ++ 6 files changed, 161 insertions(+) create mode 100644 hosts/hidden/boot/default.nix create mode 100644 hosts/hidden/default.nix create mode 100644 hosts/hidden/disko/default.nix create mode 100644 hosts/hidden/hardware/default.nix create mode 100644 hosts/hidden/user/default.nix diff --git a/flake.nix b/flake.nix index 05eb6b53..3cb28dc0 100644 --- a/flake.nix +++ b/flake.nix @@ -68,6 +68,7 @@ hostChannels = { tower = stable; detritus = stable; + hidden = stable; intuos = stable; jupiter = unstable; diff --git a/hosts/hidden/boot/default.nix b/hosts/hidden/boot/default.nix new file mode 100644 index 00000000..3cf63f7f --- /dev/null +++ b/hosts/hidden/boot/default.nix @@ -0,0 +1,8 @@ +{ pkgs, ... }: +{ + boot = { + kernelPackages = pkgs.linuxPackages_latest; + loader.systemd-boot.enable = true; + plymouth.enable = true; + }; +} diff --git a/hosts/hidden/default.nix b/hosts/hidden/default.nix new file mode 100644 index 00000000..91f5ae24 --- /dev/null +++ b/hosts/hidden/default.nix @@ -0,0 +1,17 @@ +{ ... }: +{ + imports = [ + ./boot + ./disko + ./hardware + ./user + ../../modules/system + ]; + + networking.hostName = "hidden"; + + system = { + desktop.enable = true; + stateVersion = "24.11"; + }; +} diff --git a/hosts/hidden/disko/default.nix b/hosts/hidden/disko/default.nix new file mode 100644 index 00000000..c7209669 --- /dev/null +++ b/hosts/hidden/disko/default.nix @@ -0,0 +1,106 @@ +{ config, disko, ... }: +{ + imports = [ disko.nixosModules.disko ]; + + disko.devices = { + disk = { + "${config.networking.hostName}" = { + type = "disk"; + device = "/dev/sda"; + content = { + type = "gpt"; + partitions = { + boot = { + size = "1M"; + type = "EF02"; + }; + ESP = { + size = "2G"; + type = "EF00"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + mountOptions = [ "umask=0077" ]; + }; + }; + luks = { + size = "100%"; + content = { + type = "luks"; + name = "${config.networking.hostName}-disk"; + settings.allowDiscards = true; + passwordFile = "/tmp/secret.key"; + content = { + type = "lvm_pv"; + vg = "${config.networking.hostName}"; + }; + }; + }; + }; + }; + }; + }; + + lvm_vg = { + "${config.networking.hostName}" = { + type = "lvm_vg"; + lvs = { + root = { + size = "100%"; + content = { + type = "btrfs"; + extraArgs = [ "-f" ]; + subvolumes = { + "/root" = { + mountpoint = "/"; + mountOptions = [ + "compress=zstd" + "ssd" + ]; + }; + "/prev" = { + mountpoint = "/prev"; + mountOptions = [ + "compress=zstd" + "noexec" + "ssd" + ]; + }; + "/nix" = { + mountpoint = "/nix"; + mountOptions = [ + "compress=zstd" + "ssd" + ]; + }; + + # Impermanence + "/persist" = { + mountpoint = "/persist"; + mountOptions = [ + "compress=zstd" + "ssd" + ]; + }; + "/persist/.snapshots" = { }; + "/persist/home" = { }; + "/persist/home/.snapshots" = { }; + }; + }; + }; + swap = { + size = "2G"; + content = { + type = "swap"; + discardPolicy = "both"; + }; + }; + }; + }; + }; + }; + + # Needed for impermanence + fileSystems."/persist".neededForBoot = true; +} diff --git a/hosts/hidden/hardware/default.nix b/hosts/hidden/hardware/default.nix new file mode 100644 index 00000000..e395f502 --- /dev/null +++ b/hosts/hidden/hardware/default.nix @@ -0,0 +1,22 @@ +{ config, lib, modulesPath, ... }: +{ + imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; + + boot = { + initrd = { + availableKernelModules = [ + "ahci" + "nvme" + "sd_mod" + "sr_mod" + "usbhid" + "xhci_pci" + ]; + kernelModules = [ "dm-snapshot" ]; + }; + kernelModules = [ "kvm-intel" ]; + }; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/hosts/hidden/user/default.nix b/hosts/hidden/user/default.nix new file mode 100644 index 00000000..3ca3a690 --- /dev/null +++ b/hosts/hidden/user/default.nix @@ -0,0 +1,7 @@ +{ config, lib, ... }: +{ + home-manager.users."${config.sysusers.main}".home = { + guifull.enable = true; + stateVersion = lib.mkForce config.system.stateVersion; + }; +} From 04560dfbc5f3f78d8dc1976a98b30919c6067915 Mon Sep 17 00:00:00 2001 From: Bun Date: Wed, 14 May 2025 09:36:13 -0400 Subject: [PATCH 21/98] Add vmware to system, simplify homedir logic, add more Hidden --- hosts/detritus/user/default.nix | 2 +- hosts/hidden/default.nix | 3 ++- hosts/hidden/services/default.nix | 9 +++++++++ hosts/hidden/user/default.nix | 3 ++- hosts/jupiter/services/default.nix | 7 ------- modules/home/programs/misc/school/default.nix | 2 ++ modules/home/programs/terminal/nh/default.nix | 2 +- modules/home/settings/impermanence/default.nix | 12 ++++++------ modules/system/services/general/default.nix | 1 + modules/system/services/general/vmware/default.nix | 13 +++++++++++++ 10 files changed, 37 insertions(+), 17 deletions(-) create mode 100644 hosts/hidden/services/default.nix create mode 100644 modules/system/services/general/vmware/default.nix diff --git a/hosts/detritus/user/default.nix b/hosts/detritus/user/default.nix index 07de9f2a..7dc502d6 100644 --- a/hosts/detritus/user/default.nix +++ b/hosts/detritus/user/default.nix @@ -2,7 +2,7 @@ { home-manager.users."${config.sysusers.main}" = { home = { - guifull.enable = true; + desktop.enable = true; stateVersion = lib.mkForce config.system.stateVersion; }; diff --git a/hosts/hidden/default.nix b/hosts/hidden/default.nix index 91f5ae24..18cb16db 100644 --- a/hosts/hidden/default.nix +++ b/hosts/hidden/default.nix @@ -1,9 +1,10 @@ -{ ... }: +{ lib, ... }: { imports = [ ./boot ./disko ./hardware + ./services ./user ../../modules/system ]; diff --git a/hosts/hidden/services/default.nix b/hosts/hidden/services/default.nix new file mode 100644 index 00000000..e1b677cd --- /dev/null +++ b/hosts/hidden/services/default.nix @@ -0,0 +1,9 @@ +{ config, lib, ... }: +{ + networking.useNetworkd = lib.mkForce false; + + virtualisation = { + libvirtd.enable = true; + vmware.host.enable = true; + }; +} diff --git a/hosts/hidden/user/default.nix b/hosts/hidden/user/default.nix index 3ca3a690..4e49c399 100644 --- a/hosts/hidden/user/default.nix +++ b/hosts/hidden/user/default.nix @@ -1,7 +1,8 @@ { config, lib, ... }: { home-manager.users."${config.sysusers.main}".home = { - guifull.enable = true; + desktop.enable = true; + school.enable = true; stateVersion = lib.mkForce config.system.stateVersion; }; } diff --git a/hosts/jupiter/services/default.nix b/hosts/jupiter/services/default.nix index f633f5d2..80db5f9e 100644 --- a/hosts/jupiter/services/default.nix +++ b/hosts/jupiter/services/default.nix @@ -9,12 +9,5 @@ libvirtd.enable = true; vmware.host.enable = true; }; - - nixpkgs.allowUnfreePackages = [ "vmware-workstation" ]; - - environment.persistence."/persist".users.${config.sysusers.main}.directories = [ - "vmware" - ".vmware" - ]; }; } diff --git a/modules/home/programs/misc/school/default.nix b/modules/home/programs/misc/school/default.nix index aba9de2a..2e1388bf 100644 --- a/modules/home/programs/misc/school/default.nix +++ b/modules/home/programs/misc/school/default.nix @@ -16,6 +16,8 @@ "school/.config/com.yuezk.qt" "school/.config/remmina" "school/.config/teams-for-linux" + "school/.vmware" + "school/vmware" ]; }; } diff --git a/modules/home/programs/terminal/nh/default.nix b/modules/home/programs/terminal/nh/default.nix index 387f8bd8..3eb9b254 100644 --- a/modules/home/programs/terminal/nh/default.nix +++ b/modules/home/programs/terminal/nh/default.nix @@ -2,7 +2,7 @@ { programs.nh = { enable = true; - flake = "${config.home.homeDirectory}/Projects/nixos-config"; + flake = "${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}/dirs/Projects/nixos-config"; }; home.shellAliases = { diff --git a/modules/home/settings/impermanence/default.nix b/modules/home/settings/impermanence/default.nix index e8e25295..04e50743 100644 --- a/modules/home/settings/impermanence/default.nix +++ b/modules/home/settings/impermanence/default.nix @@ -6,16 +6,16 @@ allowOther = false; removePrefixDirectory = true; directories = [ - "home/Keepers" - "home/Projects" + "dirs/Keepers" + "dirs/Projects" "nix/.local/state/nix/profiles" "secure/.ssh" ] ++ (if config.home.desktop.enable then [ - "home/Documents" - "home/Games" - "home/Photos" - "home/Videos" + "dirs/Documents" + "dirs/Games" + "dirs/Photos" + "dirs/Videos" "secure/.pki" "state/.local/state/wireplumber" diff --git a/modules/system/services/general/default.nix b/modules/system/services/general/default.nix index 5b57ebba..9612da44 100644 --- a/modules/system/services/general/default.nix +++ b/modules/system/services/general/default.nix @@ -9,5 +9,6 @@ ./ssh ./tlp ./userborn + ./vmware ]; } diff --git a/modules/system/services/general/vmware/default.nix b/modules/system/services/general/vmware/default.nix new file mode 100644 index 00000000..83216ffb --- /dev/null +++ b/modules/system/services/general/vmware/default.nix @@ -0,0 +1,13 @@ +{ config, lib, ... }: +{ + config = lib.mkIf config.virtualisation.vmware.host.enable { + virtualisation.vmware.host = { + extraConfig = '' + mks.gl.allowUnsupportedDrivers = "TRUE" + mks.vk.allowUnsupportedDevices = "TRUE" + ''; + }; + + nixpkgs.allowUnfreePackages = [ "vmware-workstation" ]; + }; +} From c41543edcf234c6d38b8503d80f22d22457ce114 Mon Sep 17 00:00:00 2001 From: Bun Date: Wed, 14 May 2025 14:57:32 -0400 Subject: [PATCH 22/98] Move more things to xdg paths --- .../home/programs/gui/librewolf/default.nix | 132 ++--- .../misc/gaming/launchers/default.nix | 8 +- .../home/programs/misc/general/default.nix | 6 +- .../home/programs/misc/production/default.nix | 8 +- modules/home/programs/misc/school/default.nix | 11 +- .../terminal/fastfetch/configs/config.jsonc | 97 --- .../programs/terminal/fastfetch/default.nix | 109 +++- .../small.jsonc => smallfetch/config.jsonc} | 0 .../terminal/fastfetch/smallfetch/default.nix | 9 + .../programs/terminal/nix-index/default.nix | 2 +- .../home/programs/terminal/zsh/default.nix | 6 +- modules/home/services/gpg/default.nix | 2 + .../home/settings/impermanence/default.nix | 23 +- modules/home/settings/xdg/default.nix | 4 +- .../home/settings/xdg/defaults/default.nix | 29 +- modules/home/settings/xdg/folders/default.nix | 11 +- .../home/variables/look/border/default.nix | 8 +- .../home/variables/look/colors/default.nix | 8 +- modules/home/variables/look/default.nix | 6 +- modules/home/variables/look/fonts/default.nix | 8 +- modules/home/wms/programs/waybar/default.nix | 559 ++++++++---------- modules/home/wms/sway/hotkeys/default.nix | 6 +- modules/home/wms/sway/rules/default.nix | 5 +- 23 files changed, 491 insertions(+), 566 deletions(-) delete mode 100644 modules/home/programs/terminal/fastfetch/configs/config.jsonc rename modules/home/programs/terminal/fastfetch/{configs/small.jsonc => smallfetch/config.jsonc} (100%) create mode 100644 modules/home/programs/terminal/fastfetch/smallfetch/default.nix diff --git a/modules/home/programs/gui/librewolf/default.nix b/modules/home/programs/gui/librewolf/default.nix index 11a0ef0a..67863716 100644 --- a/modules/home/programs/gui/librewolf/default.nix +++ b/modules/home/programs/gui/librewolf/default.nix @@ -4,37 +4,24 @@ programs.firefox = { enable = true; package = pkgs.librewolf; - profiles = let - # FireFox css, based on https://github.com/Dook97/firefox-qutebrowser-userchrome - themeFont = '' - --tab-font: '${config.look.fonts.main}'; - --urlbar-font: '${config.look.fonts.main}'; - ''; - themeMain = '' - :root { - --tab-active-bg-color: #${config.look.colors.prime}; - --tab-hover-bg-color: #${config.look.colors.accent}; - --tab-inactive-bg-color: #${config.look.colors.dark}; - --tab-active-fg-fallback-color: #FFFFFF; - --tab-inactive-fg-fallback-color: #${config.look.colors.text}; - --urlbar-focused-bg-color: #${config.look.colors.dark}; - --urlbar-not-focused-bg-color: #${config.look.colors.dark}; - --toolbar-bgcolor: #${config.look.colors.dark} !important; - ''; - themeAlt = '' - :root { - --tab-active-bg-color: #${config.look.colors.dark}; - --tab-hover-bg-color: #${config.look.colors.accent}; - --tab-inactive-bg-color: #${config.look.colors.prime}; - --tab-active-fg-fallback-color: #${config.look.colors.text}; - --tab-inactive-fg-fallback-color: #FFFFFF; - --urlbar-focused-bg-color: #${config.look.colors.prime}; - --urlbar-not-focused-bg-color: #${config.look.colors.prime}; - --toolbar-bgcolor: #${config.look.colors.prime} !important; - ''; + profiles.default = { + isDefault = true; + containersForce = true; - # Profile settings - commonExtensions = with pkgs.nur.repos.rycee.firefox-addons; [ + containers = { + home = { + color = "purple"; + icon = "fruit"; + id = 0; + }; + school = { + color = "red"; + icon = "briefcase"; + id = 1; + }; + }; + + extensions = with pkgs.nur.repos.rycee.firefox-addons; [ bitwarden darkreader return-youtube-dislikes @@ -43,7 +30,8 @@ ublock-origin violentmonkey ]; - commonSearch = { + + search = { force = true; default = "Ecosia"; order = [ @@ -64,6 +52,7 @@ }]; definedAliases = [ "@e" ]; }; + "NixPKGs" = { urls = [{ template = "https://search.nixos.org/packages"; @@ -80,6 +69,7 @@ }]; definedAliases = [ "@p" ]; }; + "MyNixOS" = { urls = [{ template = "https://mynixos.com/search"; @@ -90,6 +80,7 @@ }]; definedAliases = [ "@my" ]; }; + "YouTube" = { urls = [{ template = "https://www.youtube.com/results"; @@ -100,13 +91,17 @@ }]; definedAliases = [ "@y" ]; }; + "Spotify" = { urls = [{ template = "https://open.spotify.com/search/{searchTerms}"; }]; definedAliases = [ "@s" ]; }; }; }; - commonSettings = { + + settings = { + force = true; + # Generic "browser.download.useDownloadDir" = true; "browser.shell.checkDefaultBrowser" = false; @@ -121,9 +116,9 @@ "webgl.disabled" = false; # Fonts - "font.name.serif.x-western" = config.look.fonts.main; - "font.name.sans-serif.x-western" = config.look.fonts.main; "font.name.monospace.x-western" = config.look.fonts.mono; + "font.name.sans-serif.x-western" = config.look.fonts.main; + "font.name.serif.x-western" = config.look.fonts.main; # Theming and visibility "browser.aboutConfig.showWarning" = false; @@ -143,47 +138,46 @@ "browser.newtabpage.enabled" = false; # Safe browsing + "browser.safebrowsing.blockedURIs.enabled" = false; "browser.safebrowsing.downloads.enabled" = false; - "browser.safebrowsing.downloads.remote.enabled" = false; - "browser.safebrowsing.downloads.remote.block_uncommon" = false; "browser.safebrowsing.downloads.remote.block_potentially_unwanted" = false; + "browser.safebrowsing.downloads.remote.block_uncommon" = false; + "browser.safebrowsing.downloads.remote.enabled" = false; "browser.safebrowsing.malware.enabled" = false; "browser.safebrowsing.phishing.enabled" = false; - "browser.safebrowsing.blockedURIs.enabled" = false; - "browser.safebrowsing.provider.google4.gethashURL" = false; - "browser.safebrowsing.provider.google4.updateURL" = false; "browser.safebrowsing.provider.google.gethashURL" = false; "browser.safebrowsing.provider.google.updateURL" = false; + "browser.safebrowsing.provider.google4.gethashURL" = false; + "browser.safebrowsing.provider.google4.updateURL" = false; # Extensions - "extensions.pocket.enabled" = false; "extensions.formautofill.addresses.enabled" = false; "extensions.formautofill.creditCards.enabled" = false; "extensions.getAddons.showPane" = false; "extensions.htmlaboutaddons.discover.enabled" = false; "extensions.htmlaboutaddons.recommendations.enabled" = false; + "extensions.pocket.enabled" = false; # Force extensions to work "extensions.autoDisableScopes" = 0; "extensions.enabledScopes" = 15; # Privacy - "privacy.resistFingerprinting" = true; - "privacy.firstparty.isolate" = true; - "privacy.fingerprintingProtection" = true; - "privacy.globalprivacycontrol.enabled" = true; - "privacy.globalprivacycontrol.functionality.enabled" = true; "privacy.clearOnShutdown.cookies" = false; "privacy.clearOnShutdown_v2.cookiesAndStorage" = false; + "privacy.fingerprintingProtection" = true; + "privacy.firstparty.isolate" = true; + "privacy.globalprivacycontrol.enabled" = true; + "privacy.globalprivacycontrol.functionality.enabled" = true; + "privacy.resistFingerprinting" = true; # Tracking URL blocking - "urlclassifier.trackingSkipURLs" = "*.reddit.com, *.twitter.com, *.twimg.com, *.tiktok.com"; "urlclassifier.features.socialtracking.skipURLs" = "*.instagram.com, *.twitter.com, *.twimg.com"; + "urlclassifier.trackingSkipURLs" = "*.reddit.com, *.twitter.com, *.twimg.com, *.tiktok.com"; # Network tracking "browser.contentblocking.category" = "strict"; "network.cookie.cookieBehavior" = 1; - "network.cookie.sameSite.noneRequiresSecure" = true; "network.http.referer.XOriginPolicy" = 2; "network.http.referer.XOriginTrimmingPolicy" = 2; "network.http.referer.trimmingPolicy" = 2; @@ -209,40 +203,28 @@ "services.sync.engine.addresses.available" = false; "svg.context-properties.content.enabled" = true; }; - in { - Main = { - id = 0; - isDefault = true; - extensions = commonExtensions; - search = commonSearch; - settings = commonSettings; - userChrome = '' - ${themeMain} - ${themeFont} + + userChrome = '' + :root { + --tab-active-bg-color: #${config.look.colors.prime}; + --tab-hover-bg-color: #${config.look.colors.accent}; + --tab-inactive-bg-color: #${config.look.colors.dark}; + --tab-active-fg-fallback-color: #FFFFFF; + --tab-inactive-fg-fallback-color: #${config.look.colors.text}; + --urlbar-focused-bg-color: #${config.look.colors.dark}; + --urlbar-not-focused-bg-color: #${config.look.colors.dark}; + --toolbar-bgcolor: #${config.look.colors.dark} !important; + --tab-font: '${config.look.fonts.main}'; + --urlbar-font: '${config.look.fonts.main}'; ${builtins.readFile ./quteFox.css} - ''; - }; - Alt = { - id = 1; - extensions = commonExtensions; - search = commonSearch; - settings = commonSettings; - userChrome = '' - ${themeAlt} - ${themeFont} - ${builtins.readFile ./quteFox.css} - ''; - }; + ''; }; }; # Symlinks to Librewolf home = { - file = { - ".librewolf".source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/.mozilla/firefox"; - ".mozilla/librewolf".source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/.mozilla/firefox"; - }; - persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ "browser/.mozilla" ]; + file.".librewolf".source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/.mozilla/firefox"; + persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ "browser/.mozilla/firefox/default" ]; }; }; } diff --git a/modules/home/programs/misc/gaming/launchers/default.nix b/modules/home/programs/misc/gaming/launchers/default.nix index f937135e..bf58d51f 100644 --- a/modules/home/programs/misc/gaming/launchers/default.nix +++ b/modules/home/programs/misc/gaming/launchers/default.nix @@ -8,10 +8,10 @@ steam steam-run-free ]; - persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ - "games/.config/heroic" - "games/.local/share/PrismLauncher" - "games/.local/share/Steam" + persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = with lib; with config.home; with config.xdg; [ + "games/${removePrefix "${homeDirectory}/" configHome}/heroic" + "games/${removePrefix "${homeDirectory}/" dataHome}/PrismLauncher" + "games/${removePrefix "${homeDirectory}/" dataHome}/Steam" ]; }; diff --git a/modules/home/programs/misc/general/default.nix b/modules/home/programs/misc/general/default.nix index 7419dde3..473872c5 100644 --- a/modules/home/programs/misc/general/default.nix +++ b/modules/home/programs/misc/general/default.nix @@ -6,9 +6,9 @@ qbittorrent vesktop ]; - persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ - "data/.config/qBittorrent" - "data/.config/vesktop" + persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = with lib; with config.home; with config.xdg; [ + "data/${removePrefix "${homeDirectory}/" configHome}/qBittorrent" + "data/${removePrefix "${homeDirectory}/" configHome}/vesktop" ]; }; } diff --git a/modules/home/programs/misc/production/default.nix b/modules/home/programs/misc/production/default.nix index a9fea8b9..f00142e9 100644 --- a/modules/home/programs/misc/production/default.nix +++ b/modules/home/programs/misc/production/default.nix @@ -8,10 +8,10 @@ blender_4_4 krita ]; - persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ - "data/.config/audacity" - "data/.config/blender" - "data/.local/share/krita" + persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = with lib; with config.home; with config.xdg; [ + "data/${removePrefix "${homeDirectory}/" configHome}/audacity" + "data/${removePrefix "${homeDirectory}/" configHome}/blender" + "data/${removePrefix "${homeDirectory}/" dataHome}/krita" ]; }; } diff --git a/modules/home/programs/misc/school/default.nix b/modules/home/programs/misc/school/default.nix index 2e1388bf..1bf20c7a 100644 --- a/modules/home/programs/misc/school/default.nix +++ b/modules/home/programs/misc/school/default.nix @@ -11,13 +11,12 @@ shellAliases.seneca = "ssh jhampton1@matrix.senecapolytechnic.ca"; - persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ - "school/.cache/gpclient" - "school/.config/com.yuezk.qt" - "school/.config/remmina" - "school/.config/teams-for-linux" + persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = with lib; with config.home; with config.xdg; [ + "school/${removePrefix "${homeDirectory}/" cacheHome}/gpclient" + "school/${removePrefix "${homeDirectory}/" configHome}/com.yuezk.qt" + "school/${removePrefix "${homeDirectory}/" configHome}/remmina" + "school/${removePrefix "${homeDirectory}/" configHome}/teams-for-linux" "school/.vmware" - "school/vmware" ]; }; } diff --git a/modules/home/programs/terminal/fastfetch/configs/config.jsonc b/modules/home/programs/terminal/fastfetch/configs/config.jsonc deleted file mode 100644 index cae0ed27..00000000 --- a/modules/home/programs/terminal/fastfetch/configs/config.jsonc +++ /dev/null @@ -1,97 +0,0 @@ -{ - "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", - "logo": { - "source": "xenia", - "color": { - "1": "1;97", - "2": "red", - "3": "yellow" - } - }, - "display": { - "separator": " \u001b[33m ", - "color": "red" - }, - "modules": [ - { - "type": "custom", - "format": "\u001b[1m—————————————————————————————————————" - }, - { - "type": "host", - "key": "󰌢 " - }, - { - "type": "cpu", - "key": " " - }, - { - "type": "gpu", - "key": "󰢮 " - }, - { - "type": "disk", - "folders": "/", - "key": " " - }, - { - "type": "memory", - "format": "{/1}{-}{/}{/2}{-}{/}{} / {}", - "key": " " - }, - { - "type": "display", - "compactType": "original", - "key": "󰍹 " - }, - - { - "type": "custom", - "format": "\u001b[1m—————————————————————————————————————" - }, - { - "type": "os", - "format": "{3} {12}", - "key": "󰍛 " - }, - { - "type": "kernel", - "format": "{1} {2}", - "key": " " - }, - { - "type": "wm", - "key": " " - }, - { - "type": "shell", - "key": " " - }, - { - "type": "terminal", - "key": " " - }, - { - "type": "packages", - "key": "󰆧 " - }, - { - "type": "uptime", - "key": "󰅐 " - }, - { - "type": "command", - "text": "date -d @$(stat -c %W /persist) '+%a %b %d %r %Y'", - "key": "󰶡 " - }, - - { - "type": "custom", - "format": "\u001b[1m—————————————————————————————————————" - }, - { - "type": "custom", - "format": "\u001b[90m󰮯 \u001b[31m󰊠 \u001b[32m󰊠 \u001b[33m󰊠 \u001b[34m󰊠 \u001b[35m󰊠 \u001b[36m󰊠 \u001b[37m󰊠" - } - ] -} diff --git a/modules/home/programs/terminal/fastfetch/default.nix b/modules/home/programs/terminal/fastfetch/default.nix index a89c46fa..7ac645b5 100644 --- a/modules/home/programs/terminal/fastfetch/default.nix +++ b/modules/home/programs/terminal/fastfetch/default.nix @@ -1,11 +1,108 @@ -{ pkgs, ... }: +{ ... }: { - programs.fastfetch.enable = true; + imports = [ ./smallfetch ]; - home = { - shellAliases.ff = "clear && fastfetch"; - packages = with pkgs; [ (writeScriptBin "smallfetch" "fastfetch --config ~/.config/fastfetch/small.jsonc") ]; + programs.fastfetch = { + enable = true; + settings = { + logo = { + source = "xenia"; + color = { + "1" = "1;97"; + "2" = "red"; + "3" = "yellow"; + }; + }; + + display = { + separator = '' \u001b[33m ''; + color = "red"; + }; + + modules = [ + { + type = "custom"; + format = ''\u001b[1m—————————————————————————————————————''; + } + { + type = "host"; + key = "󰌢 "; + } + { + type = "cpu"; + key = " "; + } + { + type = "gpu"; + key = "󰢮 "; + } + { + type = "disk"; + folders = "/"; + key = " "; + } + { + type = "memory"; + format = "{/1};-}{/}{/2}{-}{/}{} / {}"; + key = " "; + } + { + type = "display"; + compactType = "original"; + key = "󰍹 "; + } + + { + type = "custom"; + format = ''\u001b[1m—————————————————————————————————————''; + } + { + type = "os"; + format = "{3} {12}"; + key = "󰍛 "; + } + { + type = "kernel"; + format = "{1} {2}"; + key = " "; + } + { + type = "wm"; + key = " "; + } + { + type = "shell"; + key = " "; + } + { + type = "terminal"; + key = " "; + } + { + type = "packages"; + key = "󰆧 "; + } + { + type = "uptime"; + key = "󰅐 "; + } + { + type = "command"; + text = "date -d @$(stat -c %W /persist) '+%a %b %d %r %Y'"; + key = "󰶡 "; + } + + { + type = "custom"; + format = ''\u001b[1m—————————————————————————————————————''; + } + { + type = "custom"; + format = ''\u001b[90m󰮯 \u001b[31m󰊠 \u001b[32m󰊠 \u001b[33m󰊠 \u001b[34m󰊠 \u001b[35m󰊠 \u001b[36m󰊠 \u001b[37m󰊠''; + } + ]; + }; }; - xdg.configFile."fastfetch".source = ./configs; + home.shellAliases.ff = "clear && fastfetch"; } diff --git a/modules/home/programs/terminal/fastfetch/configs/small.jsonc b/modules/home/programs/terminal/fastfetch/smallfetch/config.jsonc similarity index 100% rename from modules/home/programs/terminal/fastfetch/configs/small.jsonc rename to modules/home/programs/terminal/fastfetch/smallfetch/config.jsonc diff --git a/modules/home/programs/terminal/fastfetch/smallfetch/default.nix b/modules/home/programs/terminal/fastfetch/smallfetch/default.nix new file mode 100644 index 00000000..8b03d77f --- /dev/null +++ b/modules/home/programs/terminal/fastfetch/smallfetch/default.nix @@ -0,0 +1,9 @@ +{ pkgs, ... }: +{ + home.packages = with pkgs; [ + (writeScriptBin "smallfetch" '' + #!/bin/sh + fastfetch --config ${builtins.toString ./config.jsonc} + '') + ]; +} diff --git a/modules/home/programs/terminal/nix-index/default.nix b/modules/home/programs/terminal/nix-index/default.nix index e82e0dd3..448d8677 100644 --- a/modules/home/programs/terminal/nix-index/default.nix +++ b/modules/home/programs/terminal/nix-index/default.nix @@ -2,5 +2,5 @@ { programs.nix-index.enable = true; - home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ "nix/.cache/nix-index" ]; + home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ "state/.cache/nix-index" ]; } diff --git a/modules/home/programs/terminal/zsh/default.nix b/modules/home/programs/terminal/zsh/default.nix index b81f3851..1353018a 100644 --- a/modules/home/programs/terminal/zsh/default.nix +++ b/modules/home/programs/terminal/zsh/default.nix @@ -1,4 +1,4 @@ -{ config, pkgs, ... }: +{ config, lib, pkgs, ... }: { programs.zsh = { enable = true; @@ -16,6 +16,7 @@ }; history = { append = true; + expireDuplicatesFirst = true; ignoreAllDups = true; ignoreSpace = true; path = "$ZDOTDIR/.zsh_history"; @@ -26,5 +27,6 @@ ''; }; - home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ "state/.config/zsh" ]; + home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = with lib; with config.home; with config.xdg; + [ "state/${removePrefix "${homeDirectory}/" configHome}/zsh" ]; } diff --git a/modules/home/services/gpg/default.nix b/modules/home/services/gpg/default.nix index 72dcbe1b..dfd108be 100644 --- a/modules/home/services/gpg/default.nix +++ b/modules/home/services/gpg/default.nix @@ -5,5 +5,7 @@ enableSshSupport = true; }; + programs.gpg.enable = true; + home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ "secure/.gnupg" ]; } diff --git a/modules/home/settings/impermanence/default.nix b/modules/home/settings/impermanence/default.nix index 04e50743..7a8e4642 100644 --- a/modules/home/settings/impermanence/default.nix +++ b/modules/home/settings/impermanence/default.nix @@ -3,22 +3,23 @@ imports = [ impermanence.homeManagerModules.default ]; home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}" = { + enable = true; allowOther = false; removePrefixDirectory = true; - directories = [ - "dirs/Keepers" - "dirs/Projects" - - "nix/.local/state/nix/profiles" + directories = let + home = config.home.homeDirectory; + strip = path: lib.removePrefix "${home}/" path; + in with config.xdg.userDirs; [ + "dirs/${strip extraConfig.XDG_KEEPERS_DIR}" + "dirs/${strip extraConfig.XDG_PROJECTS_DIR}" "secure/.ssh" ] ++ (if config.home.desktop.enable then [ - "dirs/Documents" - "dirs/Games" - "dirs/Photos" - "dirs/Videos" + "dirs/${strip documents}" + "dirs/${strip extraConfig.XDG_GAMES_DIR}" + "dirs/${strip pictures}" + "dirs/${strip videos}" - "secure/.pki" - "state/.local/state/wireplumber" + "state/${strip config.xdg.stateHome}/wireplumber" ] else []); }; } diff --git a/modules/home/settings/xdg/default.nix b/modules/home/settings/xdg/default.nix index 25fda81c..f489ee0e 100644 --- a/modules/home/settings/xdg/default.nix +++ b/modules/home/settings/xdg/default.nix @@ -1,9 +1,11 @@ -{ ... }: +{ config, ... }: { imports = [ ./defaults ./folders ]; + xdg.enable = config.home.desktop.enable; + home.preferXdgDirectories = true; } diff --git a/modules/home/settings/xdg/defaults/default.nix b/modules/home/settings/xdg/defaults/default.nix index 1646ea18..8a1f04d4 100644 --- a/modules/home/settings/xdg/defaults/default.nix +++ b/modules/home/settings/xdg/defaults/default.nix @@ -1,18 +1,21 @@ -{ ... }: +{ config, ... }: { - xdg.mimeApps.defaultApplications = { - # Media - "image/*" = [ "imv.desktop" ]; - "image/gif" = [ "mpv.desktop" ]; - "video/*" = [ "mpv.desktop" ]; + xdg.mimeApps = { + enable = config.xdg.enable; + defaultApplications = { + # Media + "image/*" = [ "imv.desktop" ]; + "image/gif" = [ "mpv.desktop" ]; + "video/*" = [ "mpv.desktop" ]; - # Apps - "inode/directory" = [ "pcmanfm-qt.desktop" ]; - "text/plain" = [ "nvim.desktop" ]; + # Apps + "inode/directory" = [ "pcmanfm-qt.desktop" ]; + "text/plain" = [ "nvim.desktop" ]; - # Browser - "application/x-mswinurl" = [ "librewolf.desktop" ]; - "x-scheme-handler/http" = [ "librewolf.desktop" ]; - "x-scheme-handler/https" = [ "librewolf.desktop" ]; + # Browser + "application/x-mswinurl" = [ "librewolf.desktop" ]; + "x-scheme-handler/http" = [ "librewolf.desktop" ]; + "x-scheme-handler/https" = [ "librewolf.desktop" ]; + }; }; } diff --git a/modules/home/settings/xdg/folders/default.nix b/modules/home/settings/xdg/folders/default.nix index 72486278..289e0094 100644 --- a/modules/home/settings/xdg/folders/default.nix +++ b/modules/home/settings/xdg/folders/default.nix @@ -1,17 +1,20 @@ { config, ... }: { - xdg.userDirs = { - enable = config.home.desktop.enable; + xdg.userDirs = with config.home; { + enable = config.xdg.enable; createDirectories = true; desktop = null; - pictures = "${config.home.homeDirectory}/Photos"; music = null; + pictures = "${homeDirectory}/Photos"; publicShare = null; templates = null; extraConfig = { - XDG_PERSIST_DIR = if !config.targets.genericLinux.enable then "/persist${config.home.homeDirectory}" else "${config.home.homeDirectory}/.stow"; + XDG_GAMES_DIR = "${homeDirectory}/Games"; + XDG_KEEPERS_DIR = "${homeDirectory}/Keepers"; + XDG_PERSIST_DIR = if !config.targets.genericLinux.enable then "/persist${homeDirectory}" else "${homeDirectory}/.stow"; + XDG_PROJECTS_DIR = "${homeDirectory}/Projects"; XDG_SCREENSHOTS_DIR = "${config.xdg.userDirs.pictures}/Screenshots"; }; }; diff --git a/modules/home/variables/look/border/default.nix b/modules/home/variables/look/border/default.nix index 8ffa16e4..1c81d9c5 100644 --- a/modules/home/variables/look/border/default.nix +++ b/modules/home/variables/look/border/default.nix @@ -1,10 +1,6 @@ -{ config, lib, ... }: +{ ... }: { - options.look.border = lib.mkOption { - type = lib.types.attrs; - }; - - config.look.border = rec { + look.border = rec { int = 3; string = toString int; }; diff --git a/modules/home/variables/look/colors/default.nix b/modules/home/variables/look/colors/default.nix index e75d1e6a..1376a541 100644 --- a/modules/home/variables/look/colors/default.nix +++ b/modules/home/variables/look/colors/default.nix @@ -1,10 +1,6 @@ -{ config, lib, ... }: +{ ... }: { - options.look.colors = lib.mkOption { - type = lib.types.attrs; - }; - - config.look.colors = { + look.colors = { prime = "3823C4"; #3823C4 accent = "1B1F59"; #1B1F59 split = "555B9E"; #555B9E diff --git a/modules/home/variables/look/default.nix b/modules/home/variables/look/default.nix index a5930b9c..82be4f01 100644 --- a/modules/home/variables/look/default.nix +++ b/modules/home/variables/look/default.nix @@ -1,8 +1,12 @@ -{ ... }: +{ config, lib, ... }: { imports = [ ./border ./colors ./fonts ]; + + options.look = lib.mkOption { + type = lib.types.attrs; + }; } diff --git a/modules/home/variables/look/fonts/default.nix b/modules/home/variables/look/fonts/default.nix index b8cc234c..9e3921e8 100644 --- a/modules/home/variables/look/fonts/default.nix +++ b/modules/home/variables/look/fonts/default.nix @@ -1,10 +1,6 @@ -{ config, lib, ... }: +{ ... }: { - options.look.fonts = lib.mkOption { - type = lib.types.attrs; - }; - - config.look.fonts = { + look.fonts = { main = "Ubuntu"; mono = "UbuntuMono Nerd Font"; }; diff --git a/modules/home/wms/programs/waybar/default.nix b/modules/home/wms/programs/waybar/default.nix index 35aadb64..6ab1fee1 100644 --- a/modules/home/wms/programs/waybar/default.nix +++ b/modules/home/wms/programs/waybar/default.nix @@ -1,245 +1,237 @@ { config, lib, pkgs, ... }: { programs.waybar = let - workspaceModule = { - format = "{name}"; - enable-bar-scroll = true; - disable-scroll-wraparound = true; - numeric-first = true; - warp-on-scroll = false; - }; - - windowModule = { - icon = true; - icon-size = 15; - all-outputs = true; - tooltip = false; - rewrite = { - "(.*) — LibreWolf" = " $1"; - "LibreWolf" = " Firefox"; - "(.*) - LibreWolf — Firefox" = "󰗃 $1"; + commonModules = { + "sway/workspaces" = { + format = "{name}"; + enable-bar-scroll = true; + disable-scroll-wraparound = true; + numeric-first = true; + warp-on-scroll = false; }; - }; - pulseModule = with pkgs; { - format = "{icon} {volume}%"; - format-bluetooth = "{icon} {volume}%"; - format-muted = " muted"; - format-icons = { - headphone = "󰋋 "; - headset = "󰋋 "; - default = [ - " " - " " + "sway/window" = { + icon = true; + icon-size = 15; + all-outputs = true; + tooltip = false; + }; + + "pulseaudio" = with pkgs; { + format = "{icon} {volume}%"; + format-bluetooth = "{icon} {volume}%"; + format-muted = " muted"; + format-icons = { + headphone = "󰋋 "; + headset = "󰋋 "; + default = [ + " " + " " + ]; + }; + on-click = "${wireplumber}/bin/wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; + on-click-middle = "${wireplumber}/bin/wpctl set-volume @DEFAULT_AUDIO_SINK@ 100%"; + on-click-right = "${wireplumber}/bin/wpctl set-volume @DEFAULT_AUDIO_SINK@ 60%"; + ignored-sinks = [ "Easy Effects Sink" ]; + }; + + "mpris" = { + player = "mpd"; + format = " {title}"; + format-paused = " {artist}"; + format-stopped = ""; + tooltip-format = lib.concatStrings [ + "{title} - {artist} - {album}\n" + "{position}/{length}" + ]; + interval = 2; + max-length = 30; + }; + + "custom/notifs" = with pkgs; { + exec = pkgs.writeScript "notificationScript.sh" '' + #!/bin/sh + + SED="${gnused}/bin/sed" + MAKOCTL="${mako}/bin/makoctl" + + # Extract the second line after "default" + mode=$(echo "$($MAKOCTL mode)" | $SED -n '/default/{n;p}') + + # Print the notification status with the tooltip + if [[ "$mode" == "do-not-disturb" ]]; then + printf '{"text":"󱆥 Off","class":"disabled","tooltip":"Notifications Disabled."}' + else + printf '{"text":" On","tooltip":"Notifications Enabled."}'; + fi + ''; + format = "{}"; + return-type = "json"; + interval = 2; + on-click = "${mako}/bin/makoctl mode -t do-not-disturb"; + }; + + "idle_inhibitor" = { + format = "{icon}"; + format-icons = { + activated = " On"; + deactivated = "󰾫 Off"; + tooltip-format-activated = "Sleep inhibited."; + tooltip-format-deactivated = "Sleep uninhibited."; + }; + }; + + "custom/weather" = { + exec = "${pkgs.wttrbar}/bin/wttrbar --ampm"; + format = "{}°"; + tooltip = true; + return-type = "json"; + interval = 3600; + }; + + "cpu" = { + format = " {usage}%"; + interval = 3; + }; + + "memory" = { + format = " {used}G"; + tooltip = false; + interval = 3; + }; + + "custom/vram" = { + exec = with pkgs; pkgs.writeScript "vramScript.sh" '' + #!/bin/sh + + LSPCI="${pciutils}/bin/lspci" + GREP="${gnugrep}/bin/grep" + AWK="${gawk}/bin/awk" + BC="${bc}/bin/bc" + HEAD="${uutils-coreutils-noprefix}/bin/head" + CAT="${uutils-coreutils-noprefix}/bin/cat" + NVIDIA="/run/current-system/sw/bin/nvidia-smi" + + # Detect the active GPU driver + gpu_driver="$($LSPCI -k | $GREP -Eo 'in use: (nvidia|amdgpu)' | $AWK '{print $3}')" + + # Exit if no supported GPU driver is in use + if [[ -z "$gpu_driver" ]]; then + exit 0 + fi + + # Get VRAM usage in MB + if [[ "$gpu_driver" == "nvidia" ]]; then + vram_usage_mb="$($NVIDIA --query-gpu=memory.used --format=csv,noheader,nounits | $HEAD -n1)" + elif [[ "$gpu_driver" == "amdgpu" ]]; then + vram_bytes="$($CAT /sys/class/drm/card*/device/mem_info_vram_used 2>/dev/null | $HEAD -n1)" + vram_usage_mb="$($BC <<< "$vram_bytes / 1024 / 1024")" + fi + + # Format VRAM usage for display + if [[ "$vram_usage_mb" -lt 1024 ]]; then + vram_usage_display="''${vram_usage_mb}M" + else + vram_usage_gib="$($BC <<< "scale=2; $vram_usage_mb / 1024")" + vram_usage_display="''${vram_usage_gib}G" + fi + + # Output the VRAM usage + echo "{\"text\": \"󰢮 ''${vram_usage_display}\"}" + ''; + format = "{}"; + return-type = "json"; + interval = 3; + }; + + "backlight" = { + format = "{icon} {percent}%"; + format-icons = [ + "" + "󰖨" + ]; + tooltip = false; + }; + + "battery" = { + interval = 60; + states = { + warning = 30; + critical = 15; + }; + format = "{icon} {capacity}%"; + format-icons = [ + "" + "" + "" + "" + "" ]; }; - on-click = "${wireplumber}/bin/wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; - on-click-middle = "${wireplumber}/bin/wpctl set-volume @DEFAULT_AUDIO_SINK@ 100%"; - on-click-right = "${wireplumber}/bin/wpctl set-volume @DEFAULT_AUDIO_SINK@ 60%"; - ignored-sinks = [ "Easy Effects Sink" ]; - }; - # Monitoring - cpuModule = { - format = " {usage}%"; - interval = 3; - }; - - ramModule = { - format = " {used}G"; - tooltip = false; - interval = 3; - }; - - vramModule = { - exec = with pkgs; pkgs.writeScript "vramScript.sh" '' - #!/bin/sh - - LSPCI="${pciutils}/bin/lspci" - GREP="${gnugrep}/bin/grep" - AWK="${gawk}/bin/awk" - BC="${bc}/bin/bc" - HEAD="${uutils-coreutils-noprefix}/bin/head" - CAT="${uutils-coreutils-noprefix}/bin/cat" - NVIDIA="/run/current-system/sw/bin/nvidia-smi" - - # Detect the active GPU driver - gpu_driver="$($LSPCI -k | $GREP -Eo 'in use: (nvidia|amdgpu)' | $AWK '{print $3}')" - - # Exit if no supported GPU driver is in use - if [[ -z "$gpu_driver" ]]; then - exit 0 - fi - - # Get VRAM usage in MB - if [[ "$gpu_driver" == "nvidia" ]]; then - vram_usage_mb="$($NVIDIA --query-gpu=memory.used --format=csv,noheader,nounits | $HEAD -n1)" - elif [[ "$gpu_driver" == "amdgpu" ]]; then - vram_bytes="$($CAT /sys/class/drm/card*/device/mem_info_vram_used 2>/dev/null | $HEAD -n1)" - vram_usage_mb="$($BC <<< "$vram_bytes / 1024 / 1024")" - fi - - # Format VRAM usage for display - if [[ "$vram_usage_mb" -lt 1024 ]]; then - vram_usage_display="''${vram_usage_mb}M" - else - vram_usage_gib="$($BC <<< "scale=2; $vram_usage_mb / 1024")" - vram_usage_display="''${vram_usage_gib}G" - fi - - # Output the VRAM usage - echo "{\"text\": \"󰢮 ''${vram_usage_display}\"}" - ''; - format = "{}"; - return-type = "json"; - interval = 3; - }; - - # Clocks - clockModule = { - interval = 1; - format = "{:%a %b %d %I:%M:%S%p}"; - tooltip-format = "{calendar}"; - }; - - # Misc - trayModule.spacing = 5; - - # Wireless - networkModule = { - format-ethernet = "󰈀"; - format-wifi = ""; - format-disconnected = "󰖪"; - format-linked = ""; - tooltip-format-ethernet = lib.concatStrings [ - "{ipaddr}\n" - "{ifname} " - ]; - tooltip-format-wifi = lib.concatStrings [ - "{ipaddr}\n" - "{essid} ({signalStrength}%)" - ]; - tooltip-format-disconnected = "Disconnected"; - }; - - bluetoothModule = { - format = ""; - format-disabled = ""; - format-no-controller = ""; - tooltip-format-on = "No devices connected."; - tooltip-format-connected = lib.concatStrings [ - "{num_connections} connected\n" - "{device_enumerate}" - ]; - tooltip-format-enumerate-connected = "{device_alias}"; - tooltip-format-enumerate-connected-battery = "{device_alias} {device_battery_percentage}%"; - }; - - scratchpadModule = { - format = " {count}"; - show-empty = false; - tooltip = true; - tooltip-format = "{title}"; - }; - - gamemodeModule = { - format = "{glyph}"; - hide-not-running = true; - use-icon = true; - icon-size = 19; - icon-spacing = 0; - tooltip = true; - }; - - privacyModule = { - icon-spacing = 5; - icon-size = 15; - }; - - mprisModule = { - player = "mpd"; - format = " {title}"; - format-paused = " {artist}"; - format-stopped = ""; - tooltip-format = lib.concatStrings [ - "{title} - {artist} - {album}\n" - "{position}/{length}" - ]; - interval = 2; - max-length = 30; - }; - - notificationModule = with pkgs; { - exec = pkgs.writeScript "notificationScript.sh" '' - #!/bin/sh - - SED="${gnused}/bin/sed" - MAKOCTL="${mako}/bin/makoctl" - - # Extract the second line after "default" - mode=$(echo "$($MAKOCTL mode)" | $SED -n '/default/{n;p}') - - # Print the notification status with the tooltip - if [[ "$mode" == "do-not-disturb" ]]; then - printf '{"text":"󱆥 Off","class":"disabled","tooltip":"Notifications Disabled."}' - else - printf '{"text":" On","tooltip":"Notifications Enabled."}'; - fi - ''; - format = "{}"; - return-type = "json"; - interval = 2; - on-click = "${mako}/bin/makoctl mode -t do-not-disturb"; - }; - - idleModule = { - format = "{icon}"; - format-icons = { - activated = " On"; - deactivated = "󰾫 Off"; - tooltip-format-activated = "Sleep inhibited."; - tooltip-format-deactivated = "Sleep uninhibited."; + "clock" = { + interval = 1; + format = "{:%a %b %d %I:%M:%S%p}"; + tooltip-format = "{calendar}"; }; - }; - weatherModule = { - exec = "${pkgs.wttrbar}/bin/wttrbar --ampm"; - format = "{}°"; - tooltip = true; - return-type = "json"; - interval = 3600; - }; - - # Laptop modules - backlightModule = { - format = "{icon} {percent}%"; - format-icons = [ - "" - "󰖨" - ]; - tooltip = false; - }; - - batteryModule = { - interval = 60; - states = { - warning = 30; - critical = 15; + "sway/scratchpad" = { + format = " {count}"; + show-empty = false; + tooltip = true; + tooltip-format = "{title}"; + }; + + "privacy" = { + icon-spacing = 5; + icon-size = 15; + }; + + "gamemode" = { + format = "{glyph}"; + hide-not-running = true; + use-icon = true; + icon-size = 19; + icon-spacing = 0; + tooltip = true; + }; + + "tray".spacing = 5; + + "bluetooth" = { + format = ""; + format-disabled = ""; + format-no-controller = ""; + tooltip-format-on = "No devices connected."; + tooltip-format-connected = lib.concatStrings [ + "{num_connections} connected\n" + "{device_enumerate}" + ]; + tooltip-format-enumerate-connected = "{device_alias}"; + tooltip-format-enumerate-connected-battery = "{device_alias} {device_battery_percentage}%"; + }; + + "network" = { + format-ethernet = "󰈀"; + format-wifi = ""; + format-disconnected = "󰖪"; + format-linked = ""; + tooltip-format-ethernet = lib.concatStrings [ + "{ipaddr}\n" + "{ifname} " + ]; + tooltip-format-wifi = lib.concatStrings [ + "{ipaddr}\n" + "{essid} ({signalStrength}%)" + ]; + tooltip-format-disconnected = "Disconnected"; }; - format = "{icon} {capacity}%"; - format-icons = [ - "" - "" - "" - "" - "" - ]; }; in { enable = config.home.desktop.enable; systemd.enable = true; settings = { - displayPrimary = { + displayPrimary = commonModules // { name = "bar1"; position = "top"; layer = "top"; @@ -272,27 +264,9 @@ "bluetooth" "network" ]; - "sway/workspaces" = workspaceModule; - "sway/window" = windowModule; - "pulseaudio" = pulseModule; - "mpris" = mprisModule; - "custom/notifs" = notificationModule; - "idle_inhibitor" = idleModule; - "custom/weather" = weatherModule; - "cpu" = cpuModule; - "memory" = ramModule; - "custom/vram" = vramModule; - "backlight" = backlightModule; - "battery" = batteryModule; - "clock" = clockModule; - "sway/scratchpad" = scratchpadModule; - "privacy" = privacyModule; - "tray" = trayModule; - "bluetooth" = bluetoothModule; - "network" = networkModule; }; - displaySecondary = { + displaySecondary = commonModules // { name = "bar2"; position = "top"; layer = "top"; @@ -312,13 +286,6 @@ "custom/vram" "clock" ]; - "sway/workspaces" = workspaceModule; - "sway/window" = windowModule; - "pulseaudio" = pulseModule; - "cpu" = cpuModule; - "memory" = ramModule; - "custom/vram" = vramModule; - "clock" = clockModule; }; }; @@ -331,38 +298,21 @@ font-size: 15.5px; color: #${config.look.colors.text}; } - #waybar { - background: #${config.look.colors.dark}; - } - #workspaces { - padding: 0 6px 0 0; - } - #tray { - padding: 0 2px 0 5px; - } - #network { - padding: 0 10px 0 4px; - } - #bluetooth { - margin: 0 6px 0 4px; - font-size: 13.4px; - } + + #waybar { background: #${config.look.colors.dark}; } + #tray { padding: 0 2px 0 5px; } + #network { padding: 0 10px 0 4px; } + #scratchpad, #privacy { margin-left: 4px; } + #pulseaudio { margin-right: 5px; } + #mpris, #custom-notifs, #idle_inhibitor, #custom-weather, #cpu, #memory, #custom-vram, #backlight, #battery { margin: 0 5px 0 2px; } + + #workspaces { padding: 0 6px; } #workspaces button { padding: 0 3px; color: white; border-bottom: 3px solid transparent; min-width: 20px; } - #scratchpad, #privacy { - margin-left: 4px; - } - #mpris, #custom-notifs, #idle_inhibitor, #custom-weather, #cpu, #memory, #custom-vram, #backlight, #battery { - margin: 0 5px 0 2px; - } - #pulseaudio { - margin-right: 5px; - } - #workspaces button.visible, #workspaces button.active { border-bottom: 3px solid #${config.look.colors.prime}; background: #${config.look.colors.mid}; @@ -374,44 +324,25 @@ box-shadow: none; background: #${config.look.colors.light}; } - #mpris { - border-bottom: 3px solid #ffb066; - } - #custom-notifs { - border-bottom: 3px solid #3823C4; - } - #idle_inhibitor { - border-bottom: 3px solid #941efc; - } - #custom-weather { - border-bottom: 3px solid #ea60e3; - } - #cpu { - border-bottom: 3px solid #f90000; - } - #memory { - border-bottom: 3px solid #4bffdc; - } - #custom-vram { - border-bottom: 3px solid #33FF00; - } - #backlight { - border-bottom: 3px solid #5ffca3; - } - #battery { - border-bottom: 3px solid #fcfc16; - } - #clock { - border-bottom: 3px solid #0a6cf5; - margin: 0 2px 0 2px; + + #bluetooth { + margin: 0 6px 0 4px; + font-size: 13.4px; } - #mpris.paused, #custom-notifs.disabled, #idle_inhibitor.deactivated { - color: #888; - } - #pulseaudio.muted, #network.disconnected, #bluetooth.off { - color: #424242; - } + #mpris { border-bottom: 3px solid #ffb066; } + #custom-notifs { border-bottom: 3px solid #3823C4; } + #idle_inhibitor { border-bottom: 3px solid #941efc; } + #custom-weather { border-bottom: 3px solid #ea60e3; } + #cpu { border-bottom: 3px solid #f90000; } + #memory { border-bottom: 3px solid #4bffdc; } + #custom-vram { border-bottom: 3px solid #33FF00; } + #backlight { border-bottom: 3px solid #5ffca3; } + #battery { border-bottom: 3px solid #fcfc16; } + #clock { border-bottom: 3px solid #0a6cf5; } + + #mpris.paused, #custom-notifs.disabled, #idle_inhibitor.deactivated { color: #888; } + #pulseaudio.muted, #network.disconnected, #bluetooth.off { color: #424242; } ''; }; } diff --git a/modules/home/wms/sway/hotkeys/default.nix b/modules/home/wms/sway/hotkeys/default.nix index f8bd83b4..c14d1a90 100644 --- a/modules/home/wms/sway/hotkeys/default.nix +++ b/modules/home/wms/sway/hotkeys/default.nix @@ -11,9 +11,8 @@ keybindings = { ## Launchers - # Browser profiles - "${primeMod}+F1" = ''exec librewolf -p Main --name MainBrowser | notify-send "Main Browser"''; - "${primeMod}+F2" = ''exec librewolf -p Alt --name AltBrowser | notify-send "Alternate Browser"''; + # Browser + "${primeMod}+F1" = ''exec librewolf | notify-send "Browser"''; # Virtual machines "${primeMod}+F4" = ''exec virt-manager | notify-send "Virtual Machines"''; @@ -148,6 +147,7 @@ # Change layout "${primeMod}+f" = ''fullscreen toggle''; + "${primeMod}+${secMod}+f" = ''fullscreen toggle global''; "${primeMod}+w" = ''layout toggle split''; "${primeMod}+v" = ''split v''; "${primeMod}+e" = ''layout toggle tabbed stacking''; diff --git a/modules/home/wms/sway/rules/default.nix b/modules/home/wms/sway/rules/default.nix index 7eab9375..d50a4e73 100644 --- a/modules/home/wms/sway/rules/default.nix +++ b/modules/home/wms/sway/rules/default.nix @@ -55,9 +55,8 @@ ]; }; assigns = { - # Browsers - "1:${config.ws.w1}" = [{ app_id = "MainBrowser"; }]; - "11:${config.ws.w1a}" = [{ app_id = "AltBrowser"; }]; + # Browser + "1:${config.ws.w1}" = [{ app_id = "librewolf"; }]; # Communication "7:${config.ws.w7}" = [ From 02a284fe9025491d975c721753a35fa151792914 Mon Sep 17 00:00:00 2001 From: Bun Date: Wed, 14 May 2025 15:12:19 -0400 Subject: [PATCH 23/98] Do some more rearranging and moving and accept risk on gamemode --- hosts/jupiter/jovian/default.nix | 7 +++++-- modules/home/programs/terminal/default.nix | 1 + .../home/{services => programs/terminal}/gpg/default.nix | 0 modules/home/programs/terminal/ssh/default.nix | 7 +++++++ modules/home/services/default.nix | 1 - modules/system/programs/gaming/default.nix | 9 ++++++++- 6 files changed, 21 insertions(+), 4 deletions(-) rename modules/home/{services => programs/terminal}/gpg/default.nix (100%) create mode 100644 modules/home/programs/terminal/ssh/default.nix diff --git a/hosts/jupiter/jovian/default.nix b/hosts/jupiter/jovian/default.nix index db24a2b3..c120932f 100644 --- a/hosts/jupiter/jovian/default.nix +++ b/hosts/jupiter/jovian/default.nix @@ -1,6 +1,6 @@ { config, lib, pkgs, jovian, ... }: { - imports = [ jovian.nixosModules.jovian ]; + imports = [ jovian.nixosModules.default ]; options.system.steamdeck.enable = lib.mkEnableOption "Jovian NixOS environment"; @@ -22,7 +22,10 @@ }; }; - boot.kernelPackages = lib.mkForce pkgs.linuxPackages_jovian; + boot = { + kernelPackages = lib.mkForce pkgs.linuxPackages_jovian; + kernelParams = ["amd_pstate=active"]; + }; programs.steam.extest.enable = true; diff --git a/modules/home/programs/terminal/default.nix b/modules/home/programs/terminal/default.nix index 6d8f3522..5c0c5738 100644 --- a/modules/home/programs/terminal/default.nix +++ b/modules/home/programs/terminal/default.nix @@ -7,6 +7,7 @@ ./eza ./fastfetch ./git + ./gpg ./lazygit ./ncmpcpp ./neovim diff --git a/modules/home/services/gpg/default.nix b/modules/home/programs/terminal/gpg/default.nix similarity index 100% rename from modules/home/services/gpg/default.nix rename to modules/home/programs/terminal/gpg/default.nix diff --git a/modules/home/programs/terminal/ssh/default.nix b/modules/home/programs/terminal/ssh/default.nix new file mode 100644 index 00000000..9356eee6 --- /dev/null +++ b/modules/home/programs/terminal/ssh/default.nix @@ -0,0 +1,7 @@ +{ ... }: +{ + programs.ssh = { + enable = true; + addKeysToAgent = "yes"; + }; +} diff --git a/modules/home/services/default.nix b/modules/home/services/default.nix index 8bbdeef3..7a788ba1 100644 --- a/modules/home/services/default.nix +++ b/modules/home/services/default.nix @@ -2,7 +2,6 @@ { imports = [ ./easyeffects - ./gpg ./mpd ./playerctl ]; diff --git a/modules/system/programs/gaming/default.nix b/modules/system/programs/gaming/default.nix index e9a4ae97..b2a135a6 100644 --- a/modules/system/programs/gaming/default.nix +++ b/modules/system/programs/gaming/default.nix @@ -2,6 +2,13 @@ { programs.gamemode = { enable = config.system.desktop.enable; - settings.general.renice = 10; + settings = { + general.renice = 10; + gpu = { + amd_performance_level = "high"; + apply_gpu_optimisations = "accept-responsibility"; + gpu_device = 0; + }; + }; }; } From d1e6fad5b3c399d3b8c13f7844e1dc080f61ba29 Mon Sep 17 00:00:00 2001 From: Bun Date: Wed, 14 May 2025 16:47:45 -0400 Subject: [PATCH 24/98] Make latest kernel default, remove old dbus option --- hosts/detritus/boot/default.nix | 3 +-- hosts/hidden/boot/default.nix | 3 +-- hosts/intuos/boot/default.nix | 3 +-- hosts/jupiter/boot/default.nix | 3 +-- hosts/jupiter/jovian/default.nix | 9 +++------ hosts/redmond/boot/default.nix | 3 +-- modules/home/settings/dconf/default.nix | 14 +++++++++----- modules/system/devices/boot/default.nix | 3 ++- modules/system/devices/boot/plymouth/default.nix | 5 ++--- modules/system/programs/desktops/default.nix | 2 -- 10 files changed, 21 insertions(+), 27 deletions(-) diff --git a/hosts/detritus/boot/default.nix b/hosts/detritus/boot/default.nix index e493a266..a802df85 100644 --- a/hosts/detritus/boot/default.nix +++ b/hosts/detritus/boot/default.nix @@ -1,7 +1,6 @@ -{ pkgs, ... }: +{ ... }: { boot = { - kernelPackages = pkgs.linuxPackages_latest; kernelParams = [ "amdgpu.si_support=1" "radeon.si_support=0" diff --git a/hosts/hidden/boot/default.nix b/hosts/hidden/boot/default.nix index 3cf63f7f..fae86e7f 100644 --- a/hosts/hidden/boot/default.nix +++ b/hosts/hidden/boot/default.nix @@ -1,7 +1,6 @@ -{ pkgs, ... }: +{ ... }: { boot = { - kernelPackages = pkgs.linuxPackages_latest; loader.systemd-boot.enable = true; plymouth.enable = true; }; diff --git a/hosts/intuos/boot/default.nix b/hosts/intuos/boot/default.nix index f6458c21..84a34f0c 100644 --- a/hosts/intuos/boot/default.nix +++ b/hosts/intuos/boot/default.nix @@ -1,7 +1,6 @@ -{ pkgs, ... }: +{ ... }: { boot = { - kernelPackages = pkgs.linuxPackages_latest; lanzaboote.enable = true; plymouth.enable = true; }; diff --git a/hosts/jupiter/boot/default.nix b/hosts/jupiter/boot/default.nix index 3cf63f7f..fae86e7f 100644 --- a/hosts/jupiter/boot/default.nix +++ b/hosts/jupiter/boot/default.nix @@ -1,7 +1,6 @@ -{ pkgs, ... }: +{ ... }: { boot = { - kernelPackages = pkgs.linuxPackages_latest; loader.systemd-boot.enable = true; plymouth.enable = true; }; diff --git a/hosts/jupiter/jovian/default.nix b/hosts/jupiter/jovian/default.nix index c120932f..aa5a2607 100644 --- a/hosts/jupiter/jovian/default.nix +++ b/hosts/jupiter/jovian/default.nix @@ -23,8 +23,8 @@ }; boot = { - kernelPackages = lib.mkForce pkgs.linuxPackages_jovian; - kernelParams = ["amd_pstate=active"]; + kernelPackages = pkgs.linuxPackages_jovian; + kernelParams = [ "amd_pstate=active" ]; }; programs.steam.extest.enable = true; @@ -48,10 +48,7 @@ "/etc/NetworkManager/system-connections" "/var/lib/decky-loader" ]; - users.${config.sysusers.main}.directories = [ - ".config/dconf" - ".steam" - ]; + users.${config.sysusers.main}.directories = [ ".steam" ]; }; gnome.excludePackages = with pkgs; [ adwaita-icon-theme diff --git a/hosts/redmond/boot/default.nix b/hosts/redmond/boot/default.nix index d91be35e..478c4786 100644 --- a/hosts/redmond/boot/default.nix +++ b/hosts/redmond/boot/default.nix @@ -1,7 +1,6 @@ -{ pkgs, ... }: +{ ... }: { boot = { - kernelPackages = pkgs.linuxPackages_latest; kernelParams = [ "amdgpu.cik_support=1" "radeon.cik_support=0" diff --git a/modules/home/settings/dconf/default.nix b/modules/home/settings/dconf/default.nix index 005a1a89..36fd2ab6 100644 --- a/modules/home/settings/dconf/default.nix +++ b/modules/home/settings/dconf/default.nix @@ -1,10 +1,14 @@ { config, lib, ... }: { - dconf.settings = lib.mkIf config.home.desktop.enable { - "org/gnome/desktop/interface/color-scheme".color-scheme = "prefer-dark"; - "org/virt-manager/virt-manager/connections" = { - autoconnect = [ "qemu:///system" ]; - uris = [ "qemu:///system" ]; + config = lib.mkIf config.home.desktop.enable { + dconf.settings = { + "org/gnome/desktop/interface/color-scheme".color-scheme = "prefer-dark"; + "org/virt-manager/virt-manager/connections" = { + autoconnect = [ "qemu:///system" ]; + uris = [ "qemu:///system" ]; + }; }; + home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = with lib; with config.home; with config.xdg; + [ "games/${removePrefix "${homeDirectory}/" stateHome}/dconf" ]; }; } diff --git a/modules/system/devices/boot/default.nix b/modules/system/devices/boot/default.nix index 15adb99c..41c0496b 100644 --- a/modules/system/devices/boot/default.nix +++ b/modules/system/devices/boot/default.nix @@ -1,4 +1,4 @@ -{ ... }: +{ lib, pkgs, ... }: { imports = [ ./grub @@ -9,6 +9,7 @@ ]; boot = { + kernelPackages = lib.mkDefault pkgs.linuxPackages_latest; kernelParams = [ "nouveau.config=NvGspRm=1" ]; blacklistedKernelModules = [ "pcspkr" ]; kernel.sysctl = { diff --git a/modules/system/devices/boot/plymouth/default.nix b/modules/system/devices/boot/plymouth/default.nix index 96773c96..a1279fde 100644 --- a/modules/system/devices/boot/plymouth/default.nix +++ b/modules/system/devices/boot/plymouth/default.nix @@ -1,13 +1,12 @@ { config, lib, ... }: { config.boot = lib.mkIf config.boot.plymouth.enable { - loader.timeout = lib.mkForce 0; - consoleLogLevel = lib.mkForce 0; + consoleLogLevel = 0; + loader.timeout = 0; initrd.verbose = false; kernelParams = [ "quiet" "splash" - "boot.shell_on_fail" "loglevel=3" "rd.systemd.show_status=false" "rd.udev.log_level=3" diff --git a/modules/system/programs/desktops/default.nix b/modules/system/programs/desktops/default.nix index d693bd1b..9ffc2855 100644 --- a/modules/system/programs/desktops/default.nix +++ b/modules/system/programs/desktops/default.nix @@ -2,8 +2,6 @@ { config = lib.mkIf config.system.desktop.enable { programs.sway.enable = true; - - services.dbus.enable = true; security.pam.services.swaylock = {}; }; } From 43e11222ad64c0b36c26196cbedc9705bd7c4c01 Mon Sep 17 00:00:00 2001 From: Bun Date: Wed, 14 May 2025 17:09:15 -0400 Subject: [PATCH 25/98] Fix fastfetch --- modules/home/programs/terminal/fastfetch/default.nix | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/home/programs/terminal/fastfetch/default.nix b/modules/home/programs/terminal/fastfetch/default.nix index 7ac645b5..cebde2db 100644 --- a/modules/home/programs/terminal/fastfetch/default.nix +++ b/modules/home/programs/terminal/fastfetch/default.nix @@ -15,14 +15,14 @@ }; display = { - separator = '' \u001b[33m ''; + separator = builtins.fromJSON ''" \u001b[33m "''; color = "red"; }; modules = [ { type = "custom"; - format = ''\u001b[1m—————————————————————————————————————''; + format = builtins.fromJSON ''"\u001b[1m—————————————————————————————————————"''; } { type = "host"; @@ -43,7 +43,7 @@ } { type = "memory"; - format = "{/1};-}{/}{/2}{-}{/}{} / {}"; + format = "{/1}{-}{/}{/2}{-}{/}{} / {}"; key = " "; } { @@ -54,7 +54,7 @@ { type = "custom"; - format = ''\u001b[1m—————————————————————————————————————''; + format = builtins.fromJSON ''"\u001b[1m—————————————————————————————————————"''; } { type = "os"; @@ -94,11 +94,11 @@ { type = "custom"; - format = ''\u001b[1m—————————————————————————————————————''; + format = builtins.fromJSON ''"\u001b[1m—————————————————————————————————————"''; } { type = "custom"; - format = ''\u001b[90m󰮯 \u001b[31m󰊠 \u001b[32m󰊠 \u001b[33m󰊠 \u001b[34m󰊠 \u001b[35m󰊠 \u001b[36m󰊠 \u001b[37m󰊠''; + format = builtins.fromJSON ''"\u001b[90m󰮯 \u001b[31m󰊠 \u001b[32m󰊠 \u001b[33m󰊠 \u001b[34m󰊠 \u001b[35m󰊠 \u001b[36m󰊠 \u001b[37m󰊠"''; } ]; }; From f797abf235f1330a6721fed23c43ec81b25a9bc7 Mon Sep 17 00:00:00 2001 From: Bun Date: Thu, 15 May 2025 00:39:39 -0400 Subject: [PATCH 26/98] Fix Librewolf profile id 0 causing errors --- hosts/detritus/user/default.nix | 1 + modules/home/programs/gui/librewolf/default.nix | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/hosts/detritus/user/default.nix b/hosts/detritus/user/default.nix index 7dc502d6..90368007 100644 --- a/hosts/detritus/user/default.nix +++ b/hosts/detritus/user/default.nix @@ -3,6 +3,7 @@ home-manager.users."${config.sysusers.main}" = { home = { desktop.enable = true; + gaming.enable = true; stateVersion = lib.mkForce config.system.stateVersion; }; diff --git a/modules/home/programs/gui/librewolf/default.nix b/modules/home/programs/gui/librewolf/default.nix index 67863716..00a3e612 100644 --- a/modules/home/programs/gui/librewolf/default.nix +++ b/modules/home/programs/gui/librewolf/default.nix @@ -12,12 +12,12 @@ home = { color = "purple"; icon = "fruit"; - id = 0; + id = 1; }; school = { color = "red"; icon = "briefcase"; - id = 1; + id = 2; }; }; From 3978369995919b06bbd54d0899617782f89f8fd1 Mon Sep 17 00:00:00 2001 From: Bun Date: Thu, 15 May 2025 01:15:48 -0400 Subject: [PATCH 27/98] do the same browser shortening to thunderbird --- .../home/programs/gui/thunderbird/default.nix | 91 +++++++++---------- 1 file changed, 43 insertions(+), 48 deletions(-) diff --git a/modules/home/programs/gui/thunderbird/default.nix b/modules/home/programs/gui/thunderbird/default.nix index 47404be1..8fe91a50 100644 --- a/modules/home/programs/gui/thunderbird/default.nix +++ b/modules/home/programs/gui/thunderbird/default.nix @@ -3,62 +3,57 @@ config = lib.mkIf config.home.desktop.enable { programs.thunderbird = { enable = config.home.desktop.enable; - profiles = { - Main = { - isDefault = true; - userContent = '' - *{scrollbar-width:none !important} - ''; - settings = { - "general.autoScroll" = true; + profiles.default = { + isDefault = true; + settings = { + "general.autoScroll" = true; - "security.mixed_content.block_active_content" = true; - "security.mixed_content.block_display_content" = true; + "security.mixed_content.block_active_content" = true; + "security.mixed_content.block_display_content" = true; - "extensions.enabled" = false; - "extensions.autoDisableScopes" = 0; - "extensions.allow-non-mpc-extensions" = false; - "extensions.installDistroAddons" = false; - "extensions.getAddons.cache.enabled" = false; - "extensions.blocklist.enabled" = true; - "extensions.webextensions.userSelection" = false; - "extensions.checkCompatibility" = false; - "extensions.allowRemoteAddons" = false; - "extensions.ui.enabled" = false; - "extensions.ui.useSystemTheme" = true; - "extensions.activeThemeID" = "thunderbird-compact-dark@mozilla.org"; + "extensions.enabled" = false; + "extensions.autoDisableScopes" = 0; + "extensions.allow-non-mpc-extensions" = false; + "extensions.installDistroAddons" = false; + "extensions.getAddons.cache.enabled" = false; + "extensions.blocklist.enabled" = true; + "extensions.webextensions.userSelection" = false; + "extensions.checkCompatibility" = false; + "extensions.allowRemoteAddons" = false; + "extensions.ui.enabled" = false; + "extensions.ui.useSystemTheme" = true; + "extensions.activeThemeID" = "thunderbird-compact-dark@mozilla.org"; - "privacy.clearOnShutdown.cookies" = true; - "privacy.clearOnShutdown.cache" = true; - "privacy.clearOnShutdown.formdata" = true; - "privacy.clearOnShutdown.siteSettings" = true; - "privacy.trackingprotection.enabled" = true; - "privacy.firstparty.isolate" = true; - "privacy.donottrackheader.enabled" = true; - "privacy.resistFingerprinting" = true; + "privacy.clearOnShutdown.cookies" = true; + "privacy.clearOnShutdown.cache" = true; + "privacy.clearOnShutdown.formdata" = true; + "privacy.clearOnShutdown.siteSettings" = true; + "privacy.trackingprotection.enabled" = true; + "privacy.firstparty.isolate" = true; + "privacy.donottrackheader.enabled" = true; + "privacy.resistFingerprinting" = true; - "browser.history.enabled" = false; - "browser.sessionstore.privacy_level" = 2; - "browser.tabs.warnOnClose" = false; - "browser.shell.checkDefaultBrowser" = false; - "browser.urlbar.suggest.openpage" = false; - "browser.urlbar.suggest.bookmark" = false; - "browser.urlbar.suggest.history" = false; - "browser.urlbar.suggest.searches" = false; - "browser.urlbar.suggest.topsites" = false; - "browser.download.promptForDownload" = true; + "browser.history.enabled" = false; + "browser.sessionstore.privacy_level" = 2; + "browser.tabs.warnOnClose" = false; + "browser.shell.checkDefaultBrowser" = false; + "browser.urlbar.suggest.openpage" = false; + "browser.urlbar.suggest.bookmark" = false; + "browser.urlbar.suggest.history" = false; + "browser.urlbar.suggest.searches" = false; + "browser.urlbar.suggest.topsites" = false; + "browser.download.promptForDownload" = true; - "network.cookie.cookieBehavior" = 1; - "network.dns.dnsOverHttps.enabled" = true; - "network.http.speculative-parallel-limit" = 0; - "network.http.pipelining" = false; - "network.predictor.enabled" = false; - "network.cookie.lifetimePolicy" = 2; - }; + "network.cookie.cookieBehavior" = 1; + "network.dns.dnsOverHttps.enabled" = true; + "network.http.speculative-parallel-limit" = 0; + "network.http.pipelining" = false; + "network.predictor.enabled" = false; + "network.cookie.lifetimePolicy" = 2; }; }; }; - home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ "browser/.thunderbird" ]; + home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ "browser/.thunderbird/default" ]; }; } From 9c409cc91a4bac74e0420871fea8410a312bb1bc Mon Sep 17 00:00:00 2001 From: Bun Date: Thu, 15 May 2025 09:56:39 -0400 Subject: [PATCH 28/98] Simplify fastfetch config using a with statement --- modules/home/programs/terminal/fastfetch/default.nix | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/home/programs/terminal/fastfetch/default.nix b/modules/home/programs/terminal/fastfetch/default.nix index cebde2db..19f7b068 100644 --- a/modules/home/programs/terminal/fastfetch/default.nix +++ b/modules/home/programs/terminal/fastfetch/default.nix @@ -4,7 +4,7 @@ programs.fastfetch = { enable = true; - settings = { + settings = with builtins; { logo = { source = "xenia"; color = { @@ -15,14 +15,14 @@ }; display = { - separator = builtins.fromJSON ''" \u001b[33m "''; + separator = fromJSON ''" \u001b[33m "''; color = "red"; }; modules = [ { type = "custom"; - format = builtins.fromJSON ''"\u001b[1m—————————————————————————————————————"''; + format = fromJSON ''"\u001b[1m—————————————————————————————————————"''; } { type = "host"; @@ -54,7 +54,7 @@ { type = "custom"; - format = builtins.fromJSON ''"\u001b[1m—————————————————————————————————————"''; + format = fromJSON ''"\u001b[1m—————————————————————————————————————"''; } { type = "os"; @@ -94,11 +94,11 @@ { type = "custom"; - format = builtins.fromJSON ''"\u001b[1m—————————————————————————————————————"''; + format = fromJSON ''"\u001b[1m—————————————————————————————————————"''; } { type = "custom"; - format = builtins.fromJSON ''"\u001b[90m󰮯 \u001b[31m󰊠 \u001b[32m󰊠 \u001b[33m󰊠 \u001b[34m󰊠 \u001b[35m󰊠 \u001b[36m󰊠 \u001b[37m󰊠"''; + format = fromJSON ''"\u001b[90m󰮯 \u001b[31m󰊠 \u001b[32m󰊠 \u001b[33m󰊠 \u001b[34m󰊠 \u001b[35m󰊠 \u001b[36m󰊠 \u001b[37m󰊠"''; } ]; }; From 4a615cd594c650e0312dd5a4d63b95d3b7c3906c Mon Sep 17 00:00:00 2001 From: Bun Date: Thu, 15 May 2025 10:03:30 -0400 Subject: [PATCH 29/98] Specify unstable version of vmware, as stable is broken --- modules/system/services/general/vmware/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/system/services/general/vmware/default.nix b/modules/system/services/general/vmware/default.nix index 83216ffb..7db71cdd 100644 --- a/modules/system/services/general/vmware/default.nix +++ b/modules/system/services/general/vmware/default.nix @@ -1,7 +1,8 @@ -{ config, lib, ... }: +{ config, lib, pkgsUnstable, ... }: { config = lib.mkIf config.virtualisation.vmware.host.enable { virtualisation.vmware.host = { + package = pkgsUnstable.vmware-workstation; extraConfig = '' mks.gl.allowUnsupportedDrivers = "TRUE" mks.vk.allowUnsupportedDevices = "TRUE" From 48ce4411be4c26b5eb908f57dffcb6ab6486bd0e Mon Sep 17 00:00:00 2001 From: Bun Date: Fri, 16 May 2025 00:31:59 -0400 Subject: [PATCH 30/98] Add style name override to qt, figure out how to pass to Sway soon --- modules/home/settings/qt/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/home/settings/qt/default.nix b/modules/home/settings/qt/default.nix index 8c32d581..b5fd1884 100644 --- a/modules/home/settings/qt/default.nix +++ b/modules/home/settings/qt/default.nix @@ -2,6 +2,7 @@ { qt = { enable = config.home.desktop.enable; - platformTheme.name = "gtk3"; + platformTheme.name = "gtk"; + style.name = "gtk2"; }; } From 517b0a5981621768ab47eaeb2afd9aa44fcf385b Mon Sep 17 00:00:00 2001 From: Bun Date: Fri, 16 May 2025 02:45:17 -0400 Subject: [PATCH 31/98] Add SSH configuration, move more things to xdg dirs --- modules/home/default.nix | 1 - modules/home/programs/gui/obs/default.nix | 4 +- modules/home/programs/terminal/default.nix | 1 + .../home/programs/terminal/direnv/default.nix | 6 ++- .../programs/terminal/lazygit/default.nix | 6 ++- .../home/programs/terminal/neovim/default.nix | 8 ++-- .../home/programs/terminal/ranger/default.nix | 38 +++++++++---------- .../home/programs/terminal/ssh/default.nix | 19 +++++++++- .../home/programs/terminal/zoxide/default.nix | 6 ++- modules/home/services/mpd/default.nix | 6 ++- modules/home/settings/dconf/default.nix | 5 ++- modules/home/settings/default.nix | 1 + modules/home/{ => settings}/user/default.nix | 0 modules/home/settings/xdg/folders/default.nix | 1 + 14 files changed, 67 insertions(+), 35 deletions(-) rename modules/home/{ => settings}/user/default.nix (100%) diff --git a/modules/home/default.nix b/modules/home/default.nix index 526c689a..6527a8ba 100644 --- a/modules/home/default.nix +++ b/modules/home/default.nix @@ -5,7 +5,6 @@ ./programs ./services ./settings - ./user ./variables ./wms ]; diff --git a/modules/home/programs/gui/obs/default.nix b/modules/home/programs/gui/obs/default.nix index 15381818..bb593e4c 100644 --- a/modules/home/programs/gui/obs/default.nix +++ b/modules/home/programs/gui/obs/default.nix @@ -12,6 +12,8 @@ ]; }; - home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ "data/.config/obs-studio" ]; + home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = + with lib; with config.home; with config.xdg; + [ "data/${removePrefix "${homeDirectory}/" configHome}/obs-studio" ]; }; } diff --git a/modules/home/programs/terminal/default.nix b/modules/home/programs/terminal/default.nix index 5c0c5738..8589ca96 100644 --- a/modules/home/programs/terminal/default.nix +++ b/modules/home/programs/terminal/default.nix @@ -14,6 +14,7 @@ ./nh ./nix-index ./ranger + ./ssh ./tmux ./yt-dlp ./zoxide diff --git a/modules/home/programs/terminal/direnv/default.nix b/modules/home/programs/terminal/direnv/default.nix index 51eac95e..c0858a93 100644 --- a/modules/home/programs/terminal/direnv/default.nix +++ b/modules/home/programs/terminal/direnv/default.nix @@ -1,9 +1,11 @@ -{ config, ... }: +{ config, lib, ... }: { programs.direnv = { enable = true; nix-direnv.enable = true; }; - home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ "data/.local/share/direnv" ]; + home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = + with lib; with config.home; with config.xdg; + [ "data/${removePrefix "${homeDirectory}/" dataHome}/direnv" ]; } diff --git a/modules/home/programs/terminal/lazygit/default.nix b/modules/home/programs/terminal/lazygit/default.nix index 243ff7f3..cd0059c1 100644 --- a/modules/home/programs/terminal/lazygit/default.nix +++ b/modules/home/programs/terminal/lazygit/default.nix @@ -1,5 +1,7 @@ -{ config, ... }: +{ config, lib, ... }: { programs.lazygit.enable = true; - home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ "state/.local/state/lazygit" ]; + home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = + with lib; with config.home; with config.xdg; + [ "state/${removePrefix "${homeDirectory}/" stateHome}/lazygit" ]; } diff --git a/modules/home/programs/terminal/neovim/default.nix b/modules/home/programs/terminal/neovim/default.nix index 695c7491..78c5225b 100644 --- a/modules/home/programs/terminal/neovim/default.nix +++ b/modules/home/programs/terminal/neovim/default.nix @@ -1,4 +1,4 @@ -{ config, pkgs, ... }: +{ config, lib, pkgs, ... }: { programs.neovim = { enable = true; @@ -103,7 +103,7 @@ set mouse=a set undofile - set undodir=$HOME/.local/share/nvim/undo + set undodir=${config.xdg.dataHome}/nvim/undo set undolevels=100 set undoreload=10000 @@ -115,6 +115,8 @@ home = { sessionVariables.MANPAGER = "nvim +Man!"; - persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ "state/.local/share/nvim/undo" ]; + persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = + with lib; with config.home; with config.xdg; + [ "state/${removePrefix "${homeDirectory}/" dataHome}/nvim/undo" ]; }; } diff --git a/modules/home/programs/terminal/ranger/default.nix b/modules/home/programs/terminal/ranger/default.nix index 9590fe17..49057d9a 100644 --- a/modules/home/programs/terminal/ranger/default.nix +++ b/modules/home/programs/terminal/ranger/default.nix @@ -1,4 +1,4 @@ -{ config, pkgsStable, ... }: +{ config, lib, pkgsStable, ... }: { programs.ranger = { enable = true; @@ -94,28 +94,28 @@ # Ranger's bookmarks and necessary tools home = { - file = { - ".local/share/ranger/bookmarks".text = '' + file = with lib; with config.home; with config.xdg; with config.xdg.userDirs; with config.xdg.userDirs.extraConfig; { + "${removePrefix "${homeDirectory}/" dataHome}/ranger/bookmarks".text = '' # Local files - h:${config.home.homeDirectory} - k:${config.home.homeDirectory}/Keepers - d:${config.home.homeDirectory}/Downloads - j:${config.home.homeDirectory}/Documents - p:${config.home.homeDirectory}/Photos - v:${config.home.homeDirectory}/Videos - n:${config.home.homeDirectory}/Projects/nixos-config - c:${config.home.homeDirectory}/.config - l:${config.home.homeDirectory}/.local - q:/persist + h:${homeDirectory} + k:${XDG_KEEPERS_DIR} + d:${download} + j:${documents} + p:${pictures} + v:${videos} + n:${XDG_PROJECTS_DIR}/nixos-config + c:${configHome} + l:${dataHome} + q:${XDG_PERSIST_DIR} w:/mnt # Remote files - N:${config.home.homeDirectory}/Network - H:${config.home.homeDirectory}/Network/Midas/ - K:${config.home.homeDirectory}/Network/Midas/Files - M:${config.home.homeDirectory}/Network/Midas/Music - V:${config.home.homeDirectory}/Network/Midas/Videos - P:${config.home.homeDirectory}/Network/Midas/Photos + N:${XDG_NETWORK_DIR}/ + H:${XDG_NETWORK_DIR}/Midas/ + K:${XDG_NETWORK_DIR}/Midas/Files + M:${XDG_NETWORK_DIR}/Midas/Music + V:${XDG_NETWORK_DIR}/Midas/Videos + P:${XDG_NETWORK_DIR}/Midas/Photos ''; }; packages = with pkgsStable; [ diff --git a/modules/home/programs/terminal/ssh/default.nix b/modules/home/programs/terminal/ssh/default.nix index 9356eee6..59bf3077 100644 --- a/modules/home/programs/terminal/ssh/default.nix +++ b/modules/home/programs/terminal/ssh/default.nix @@ -1,7 +1,24 @@ -{ ... }: +{ config, lib, ... }: { programs.ssh = { enable = true; addKeysToAgent = "yes"; + compression = true; + matchBlocks = with lib.hm.dag; { + nixfox = { + host = "*.nixfox.ca"; + user = config.home.username; + }; + midas = entryAfter [ "nixfox" ] { + hostname = "sv.nixfox.ca"; + }; + kitty = entryAfter [ "nixfox" ] { + hostname = "sv.nixfox.ca"; + port = 2222; + }; + prophet = entryAfter [ "nixfox" ] { + hostname = "mx.nixfox.ca"; + }; + }; }; } diff --git a/modules/home/programs/terminal/zoxide/default.nix b/modules/home/programs/terminal/zoxide/default.nix index 36c56d59..e6d3cb37 100644 --- a/modules/home/programs/terminal/zoxide/default.nix +++ b/modules/home/programs/terminal/zoxide/default.nix @@ -1,9 +1,11 @@ -{ config, ... }: +{ config, lib, ... }: { programs.zoxide.enable = true; home = { shellAliases.cd = "z"; - persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ "state/.local/share/zoxide" ]; + persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = + with lib; with config.home; with config.xdg; + [ "state/${removePrefix "${homeDirectory}/" dataHome}/zoxide" ]; }; } diff --git a/modules/home/services/mpd/default.nix b/modules/home/services/mpd/default.nix index c84ac9a7..e842508a 100644 --- a/modules/home/services/mpd/default.nix +++ b/modules/home/services/mpd/default.nix @@ -5,7 +5,7 @@ mpd = { enable = true; network.startWhenNeeded = true; - musicDirectory = "${config.home.homeDirectory}/Network/Midas/Music/NixBops"; + musicDirectory = "${config.xdg.userDirs.extraConfig.XDG_NETWORK_DIR}/Midas/Music/NixBops"; playlistDirectory = "${config.services.mpd.musicDirectory}/Playlists"; extraConfig = '' audio_output { @@ -18,6 +18,8 @@ mpd-discord-rpc.enable = true; }; - home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ "state/.local/share/mpd" ]; + home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = + with lib; with config.home; with config.xdg; + [ "state/${removePrefix "${homeDirectory}/" dataHome}/mpd" ]; }; } diff --git a/modules/home/settings/dconf/default.nix b/modules/home/settings/dconf/default.nix index 36fd2ab6..69c88c4b 100644 --- a/modules/home/settings/dconf/default.nix +++ b/modules/home/settings/dconf/default.nix @@ -8,7 +8,8 @@ uris = [ "qemu:///system" ]; }; }; - home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = with lib; with config.home; with config.xdg; - [ "games/${removePrefix "${homeDirectory}/" stateHome}/dconf" ]; + home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = + with lib; with config.home; with config.xdg; + [ "state/${removePrefix "${homeDirectory}/" configHome}/dconf" ]; }; } diff --git a/modules/home/settings/default.nix b/modules/home/settings/default.nix index c34510b7..59cfe345 100644 --- a/modules/home/settings/default.nix +++ b/modules/home/settings/default.nix @@ -11,6 +11,7 @@ ./nix ./nixgl ./qt + ./user ./xdg ]; } diff --git a/modules/home/user/default.nix b/modules/home/settings/user/default.nix similarity index 100% rename from modules/home/user/default.nix rename to modules/home/settings/user/default.nix diff --git a/modules/home/settings/xdg/folders/default.nix b/modules/home/settings/xdg/folders/default.nix index 289e0094..38a53e7b 100644 --- a/modules/home/settings/xdg/folders/default.nix +++ b/modules/home/settings/xdg/folders/default.nix @@ -13,6 +13,7 @@ extraConfig = { XDG_GAMES_DIR = "${homeDirectory}/Games"; XDG_KEEPERS_DIR = "${homeDirectory}/Keepers"; + XDG_NETWORK_DIR = "${homeDirectory}/Network"; XDG_PERSIST_DIR = if !config.targets.genericLinux.enable then "/persist${homeDirectory}" else "${homeDirectory}/.stow"; XDG_PROJECTS_DIR = "${homeDirectory}/Projects"; XDG_SCREENSHOTS_DIR = "${config.xdg.userDirs.pictures}/Screenshots"; From 986a8dd01a9e3a1920a33c0304aa63110a647471 Mon Sep 17 00:00:00 2001 From: Bun Date: Fri, 16 May 2025 02:52:31 -0400 Subject: [PATCH 32/98] Standardize formatting --- .../programs/misc/gaming/launchers/default.nix | 12 +++++++----- modules/home/programs/misc/general/default.nix | 9 +++++---- modules/home/programs/misc/production/default.nix | 11 ++++++----- modules/home/programs/misc/school/default.nix | 15 ++++++++------- .../home/programs/terminal/nix-index/default.nix | 4 +++- modules/home/programs/terminal/zsh/default.nix | 3 ++- 6 files changed, 31 insertions(+), 23 deletions(-) diff --git a/modules/home/programs/misc/gaming/launchers/default.nix b/modules/home/programs/misc/gaming/launchers/default.nix index bf58d51f..288d2f80 100644 --- a/modules/home/programs/misc/gaming/launchers/default.nix +++ b/modules/home/programs/misc/gaming/launchers/default.nix @@ -8,11 +8,13 @@ steam steam-run-free ]; - persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = with lib; with config.home; with config.xdg; [ - "games/${removePrefix "${homeDirectory}/" configHome}/heroic" - "games/${removePrefix "${homeDirectory}/" dataHome}/PrismLauncher" - "games/${removePrefix "${homeDirectory}/" dataHome}/Steam" - ]; + persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = + with lib; with config.home; with config.xdg; [ + "games/${removePrefix "${homeDirectory}/" configHome}/heroic" + "games/${removePrefix "${homeDirectory}/" dataHome}/PrismLauncher" + "games/${removePrefix "${homeDirectory}/" dataHome}/Steam" + "games/.steam" + ]; }; nixpkgs.allowUnfreePackages = [ diff --git a/modules/home/programs/misc/general/default.nix b/modules/home/programs/misc/general/default.nix index 473872c5..f8e7530e 100644 --- a/modules/home/programs/misc/general/default.nix +++ b/modules/home/programs/misc/general/default.nix @@ -6,9 +6,10 @@ qbittorrent vesktop ]; - persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = with lib; with config.home; with config.xdg; [ - "data/${removePrefix "${homeDirectory}/" configHome}/qBittorrent" - "data/${removePrefix "${homeDirectory}/" configHome}/vesktop" - ]; + persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = + with lib; with config.home; with config.xdg; [ + "data/${removePrefix "${homeDirectory}/" configHome}/qBittorrent" + "data/${removePrefix "${homeDirectory}/" configHome}/vesktop" + ]; }; } diff --git a/modules/home/programs/misc/production/default.nix b/modules/home/programs/misc/production/default.nix index f00142e9..a7b62231 100644 --- a/modules/home/programs/misc/production/default.nix +++ b/modules/home/programs/misc/production/default.nix @@ -8,10 +8,11 @@ blender_4_4 krita ]; - persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = with lib; with config.home; with config.xdg; [ - "data/${removePrefix "${homeDirectory}/" configHome}/audacity" - "data/${removePrefix "${homeDirectory}/" configHome}/blender" - "data/${removePrefix "${homeDirectory}/" dataHome}/krita" - ]; + persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = + with lib; with config.home; with config.xdg; [ + "data/${removePrefix "${homeDirectory}/" configHome}/audacity" + "data/${removePrefix "${homeDirectory}/" configHome}/blender" + "data/${removePrefix "${homeDirectory}/" dataHome}/krita" + ]; }; } diff --git a/modules/home/programs/misc/school/default.nix b/modules/home/programs/misc/school/default.nix index 1bf20c7a..a4b30480 100644 --- a/modules/home/programs/misc/school/default.nix +++ b/modules/home/programs/misc/school/default.nix @@ -11,12 +11,13 @@ shellAliases.seneca = "ssh jhampton1@matrix.senecapolytechnic.ca"; - persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = with lib; with config.home; with config.xdg; [ - "school/${removePrefix "${homeDirectory}/" cacheHome}/gpclient" - "school/${removePrefix "${homeDirectory}/" configHome}/com.yuezk.qt" - "school/${removePrefix "${homeDirectory}/" configHome}/remmina" - "school/${removePrefix "${homeDirectory}/" configHome}/teams-for-linux" - "school/.vmware" - ]; + persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = + with lib; with config.home; with config.xdg; [ + "school/${removePrefix "${homeDirectory}/" cacheHome}/gpclient" + "school/${removePrefix "${homeDirectory}/" configHome}/com.yuezk.qt" + "school/${removePrefix "${homeDirectory}/" configHome}/remmina" + "school/${removePrefix "${homeDirectory}/" configHome}/teams-for-linux" + "school/.vmware" + ]; }; } diff --git a/modules/home/programs/terminal/nix-index/default.nix b/modules/home/programs/terminal/nix-index/default.nix index 448d8677..f3d2d676 100644 --- a/modules/home/programs/terminal/nix-index/default.nix +++ b/modules/home/programs/terminal/nix-index/default.nix @@ -2,5 +2,7 @@ { programs.nix-index.enable = true; - home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ "state/.cache/nix-index" ]; + home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = + with lib; with config.home; with config.xdg; + [ "state/${removePrefix "${homeDirectory}/" cacheHome}/nix-index" ]; } diff --git a/modules/home/programs/terminal/zsh/default.nix b/modules/home/programs/terminal/zsh/default.nix index 1353018a..e5345c18 100644 --- a/modules/home/programs/terminal/zsh/default.nix +++ b/modules/home/programs/terminal/zsh/default.nix @@ -27,6 +27,7 @@ ''; }; - home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = with lib; with config.home; with config.xdg; + home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = + with lib; with config.home; with config.xdg; [ "state/${removePrefix "${homeDirectory}/" configHome}/zsh" ]; } From 2ddcbbc58c2e5c6c8f61934f8d6beb997d67cd36 Mon Sep 17 00:00:00 2001 From: Bun Date: Fri, 16 May 2025 02:52:57 -0400 Subject: [PATCH 33/98] Missed a lib --- modules/home/programs/terminal/nix-index/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/home/programs/terminal/nix-index/default.nix b/modules/home/programs/terminal/nix-index/default.nix index f3d2d676..4cd34016 100644 --- a/modules/home/programs/terminal/nix-index/default.nix +++ b/modules/home/programs/terminal/nix-index/default.nix @@ -1,4 +1,4 @@ -{ config, ... }: +{ config, lib, ... }: { programs.nix-index.enable = true; From 88933b9ce20fcd497aef5f2f0671bc48a45aa15d Mon Sep 17 00:00:00 2001 From: Bun Date: Fri, 16 May 2025 03:00:23 -0400 Subject: [PATCH 34/98] Remove some grossness in Jovian --- hosts/jupiter/jovian/default.nix | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/hosts/jupiter/jovian/default.nix b/hosts/jupiter/jovian/default.nix index aa5a2607..b60fd795 100644 --- a/hosts/jupiter/jovian/default.nix +++ b/hosts/jupiter/jovian/default.nix @@ -43,13 +43,10 @@ }; environment = { - persistence."/persist" = { - directories = [ - "/etc/NetworkManager/system-connections" - "/var/lib/decky-loader" - ]; - users.${config.sysusers.main}.directories = [ ".steam" ]; - }; + persistence."/persist".directories = [ + "/etc/NetworkManager/system-connections" + "/var/lib/decky-loader" + ]; gnome.excludePackages = with pkgs; [ adwaita-icon-theme baobab From fca8a0e7e4095e5b02cf5a7a3092d27c42815ebf Mon Sep 17 00:00:00 2001 From: Bun Date: Fri, 16 May 2025 03:31:17 -0400 Subject: [PATCH 35/98] Allowothers enabled on Nix systems --- modules/home/programs/terminal/nh/default.nix | 2 +- .../home/settings/impermanence/default.nix | 2 +- modules/home/wms/programs/kanshi/default.nix | 22 ++++++++++++++++++- .../devices/disks/filesystems/default.nix | 2 ++ 4 files changed, 25 insertions(+), 3 deletions(-) diff --git a/modules/home/programs/terminal/nh/default.nix b/modules/home/programs/terminal/nh/default.nix index 3eb9b254..71697b6f 100644 --- a/modules/home/programs/terminal/nh/default.nix +++ b/modules/home/programs/terminal/nh/default.nix @@ -2,7 +2,7 @@ { programs.nh = { enable = true; - flake = "${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}/dirs/Projects/nixos-config"; + flake = "${config.xdg.userDirs.extraConfig.XDG_PROJECTS_DIR}/nixos-config"; }; home.shellAliases = { diff --git a/modules/home/settings/impermanence/default.nix b/modules/home/settings/impermanence/default.nix index 7a8e4642..74a814a3 100644 --- a/modules/home/settings/impermanence/default.nix +++ b/modules/home/settings/impermanence/default.nix @@ -4,7 +4,7 @@ home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}" = { enable = true; - allowOther = false; + allowOther = if !config.targets.genericLinux.enable then true else false; removePrefixDirectory = true; directories = let home = config.home.homeDirectory; diff --git a/modules/home/wms/programs/kanshi/default.nix b/modules/home/wms/programs/kanshi/default.nix index 112de47a..1e30d7da 100644 --- a/modules/home/wms/programs/kanshi/default.nix +++ b/modules/home/wms/programs/kanshi/default.nix @@ -15,7 +15,7 @@ # Profiles { profile = { - name = "tower"; + name = "tower-tv"; outputs = [ { criteria = config.displays.tower1; @@ -37,6 +37,26 @@ ]; }; } + { + profile = { + name = "tower"; + outputs = [ + { + criteria = config.displays.tower1; + position = "1920,405"; + } + { + criteria = config.displays.tower2; + position = "0,405"; + } + { + criteria = config.displays.tower3; + position = "3840,0"; + transform = "90"; + } + ]; + }; + } { profile = { diff --git a/modules/system/devices/disks/filesystems/default.nix b/modules/system/devices/disks/filesystems/default.nix index 8a6e5943..a6a1f3ba 100644 --- a/modules/system/devices/disks/filesystems/default.nix +++ b/modules/system/devices/disks/filesystems/default.nix @@ -15,4 +15,6 @@ btrfs.autoScrub.enable = true; fstrim.enable = true; }; + + programs.fuse.userAllowOther = true; } From aee7a6b8c8acbec01914ed4052c91027d32f37bf Mon Sep 17 00:00:00 2001 From: Bun Date: Fri, 16 May 2025 04:33:19 -0400 Subject: [PATCH 36/98] Attempt a Steam fix? --- modules/home/programs/misc/gaming/launchers/default.nix | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/modules/home/programs/misc/gaming/launchers/default.nix b/modules/home/programs/misc/gaming/launchers/default.nix index 288d2f80..a803d168 100644 --- a/modules/home/programs/misc/gaming/launchers/default.nix +++ b/modules/home/programs/misc/gaming/launchers/default.nix @@ -8,13 +8,15 @@ steam steam-run-free ]; - persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = - with lib; with config.home; with config.xdg; [ + persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}" = + with lib; with config.home; with config.xdg; { + directories = [ "games/${removePrefix "${homeDirectory}/" configHome}/heroic" "games/${removePrefix "${homeDirectory}/" dataHome}/PrismLauncher" "games/${removePrefix "${homeDirectory}/" dataHome}/Steam" - "games/.steam" ]; + files = [ "games/.steam/registry.vdf" ]; + }; }; nixpkgs.allowUnfreePackages = [ From f30a5824a5529e68e8278a1371acdd71a22ef03d Mon Sep 17 00:00:00 2001 From: Bun Date: Fri, 16 May 2025 04:46:30 -0400 Subject: [PATCH 37/98] Change Steam to symlink as recommended by the impermanence git --- modules/home/programs/misc/gaming/launchers/default.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/home/programs/misc/gaming/launchers/default.nix b/modules/home/programs/misc/gaming/launchers/default.nix index a803d168..259f0d2f 100644 --- a/modules/home/programs/misc/gaming/launchers/default.nix +++ b/modules/home/programs/misc/gaming/launchers/default.nix @@ -13,7 +13,10 @@ directories = [ "games/${removePrefix "${homeDirectory}/" configHome}/heroic" "games/${removePrefix "${homeDirectory}/" dataHome}/PrismLauncher" - "games/${removePrefix "${homeDirectory}/" dataHome}/Steam" + { + directory = "games/${removePrefix "${homeDirectory}/" dataHome}/Steam"; + method = "symlink"; + } ]; files = [ "games/.steam/registry.vdf" ]; }; From 099bcb150b60d8d2bfe724dd12001cf81cf78a1f Mon Sep 17 00:00:00 2001 From: Bun Date: Fri, 16 May 2025 11:29:37 -0400 Subject: [PATCH 38/98] Move xdg portals into home-manager --- modules/home/wms/programs/default.nix | 1 + modules/home/wms/programs/portals/default.nix | 12 ++++++++++++ modules/system/services/general/default.nix | 1 - modules/system/services/general/portals/default.nix | 7 ------- 4 files changed, 13 insertions(+), 8 deletions(-) create mode 100644 modules/home/wms/programs/portals/default.nix delete mode 100644 modules/system/services/general/portals/default.nix diff --git a/modules/home/wms/programs/default.nix b/modules/home/wms/programs/default.nix index 4828dc84..498b1e3f 100644 --- a/modules/home/wms/programs/default.nix +++ b/modules/home/wms/programs/default.nix @@ -4,6 +4,7 @@ ./clipman ./kanshi ./mako + ./portals ./rofi ./swayidle ./swaylock diff --git a/modules/home/wms/programs/portals/default.nix b/modules/home/wms/programs/portals/default.nix new file mode 100644 index 00000000..b54c9d9f --- /dev/null +++ b/modules/home/wms/programs/portals/default.nix @@ -0,0 +1,12 @@ +{ config, pkgs, ... }: +{ + xdg.portal = { + enable = config.home.desktop.enable; + configPackages = config.xdg.portal.extraPortals; + xdgOpenUsePortal = true; + extraPortals = with pkgs; [ + xdg-desktop-portal-gtk + xdg-desktop-portal-wlr + ]; + }; +} diff --git a/modules/system/services/general/default.nix b/modules/system/services/general/default.nix index 9612da44..96b68f06 100644 --- a/modules/system/services/general/default.nix +++ b/modules/system/services/general/default.nix @@ -4,7 +4,6 @@ ./displaymanager ./keyd ./libvirtd - ./portals ./snowflake ./ssh ./tlp diff --git a/modules/system/services/general/portals/default.nix b/modules/system/services/general/portals/default.nix deleted file mode 100644 index 4bdecd68..00000000 --- a/modules/system/services/general/portals/default.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ config, lib, pkgs, ... }: -{ - xdg.portal.extraPortals = with pkgs; lib.mkIf config.system.desktop.enable [ - xdg-desktop-portal-gnome - xdg-desktop-portal-wlr - ]; -} From 2e483af20588c01613f88aef482d0fb4b8ea0af5 Mon Sep 17 00:00:00 2001 From: Bun Date: Fri, 16 May 2025 21:09:42 -0400 Subject: [PATCH 39/98] Remove lib from SSH --- modules/system/services/general/ssh/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/system/services/general/ssh/default.nix b/modules/system/services/general/ssh/default.nix index 7169d070..9560df9e 100644 --- a/modules/system/services/general/ssh/default.nix +++ b/modules/system/services/general/ssh/default.nix @@ -1,4 +1,4 @@ -{ lib, ... }: +{ ... }: { imports = [ ./fail2ban ]; From 3f257e006cad55f616739928c66e0dc50235ed55 Mon Sep 17 00:00:00 2001 From: Bun Date: Sun, 18 May 2025 04:35:54 -0400 Subject: [PATCH 40/98] Generalize some more files, make hidden use Intel microcode and not AMD --- hosts/hidden/hardware/default.nix | 2 +- modules/home/profiles/default.nix | 16 ++++++---------- modules/home/profiles/generic/default.nix | 8 ++++++++ modules/home/profiles/guifull/default.nix | 12 ++++++++++++ modules/home/settings/impermanence/default.nix | 3 +-- modules/home/settings/nix/default.nix | 2 +- modules/home/settings/nixgl/default.nix | 2 +- modules/home/settings/xdg/folders/default.nix | 2 +- 8 files changed, 31 insertions(+), 16 deletions(-) create mode 100644 modules/home/profiles/generic/default.nix create mode 100644 modules/home/profiles/guifull/default.nix diff --git a/hosts/hidden/hardware/default.nix b/hosts/hidden/hardware/default.nix index e395f502..c427a762 100644 --- a/hosts/hidden/hardware/default.nix +++ b/hosts/hidden/hardware/default.nix @@ -18,5 +18,5 @@ }; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; } diff --git a/modules/home/profiles/default.nix b/modules/home/profiles/default.nix index 5bd9361a..0f4a47f6 100644 --- a/modules/home/profiles/default.nix +++ b/modules/home/profiles/default.nix @@ -1,18 +1,14 @@ -{ config, lib, ... }: +{ lib, ... }: { - options.home = with lib; { - guifull.enable = mkEnableOption "Enable most other GUI profiles"; + imports = [ + ./generic + ./guifull + ]; + options.home = with lib; { desktop.enable = mkEnableOption "Desktop programs and services"; gaming.enable = mkEnableOption "Gaming apps and programs"; production.enable = mkEnableOption "Apps for visual productivity"; - school.enable = mkEnableOption "Apps for school and college"; }; - - config.home = lib.mkIf config.home.guifull.enable { - desktop.enable = true; - gaming.enable = true; - production.enable = true; - }; } diff --git a/modules/home/profiles/generic/default.nix b/modules/home/profiles/generic/default.nix new file mode 100644 index 00000000..1d0c5202 --- /dev/null +++ b/modules/home/profiles/generic/default.nix @@ -0,0 +1,8 @@ +{ config, lib, ... }: +{ + config = lib.mkIf config.targets.genericLinux.enable { + home = { + sessionVariables.PATH = "$HOME/.nix-profile/bin:$PATH"; + }; + }; +} diff --git a/modules/home/profiles/guifull/default.nix b/modules/home/profiles/guifull/default.nix new file mode 100644 index 00000000..a322678d --- /dev/null +++ b/modules/home/profiles/guifull/default.nix @@ -0,0 +1,12 @@ +{ config, lib, ... }: +{ + options.home = with lib; { + guifull.enable = mkEnableOption "Enable most other GUI profiles"; + }; + + config.home = lib.mkIf config.home.guifull.enable { + desktop.enable = true; + gaming.enable = true; + production.enable = true; + }; +} diff --git a/modules/home/settings/impermanence/default.nix b/modules/home/settings/impermanence/default.nix index 74a814a3..7719e354 100644 --- a/modules/home/settings/impermanence/default.nix +++ b/modules/home/settings/impermanence/default.nix @@ -3,8 +3,7 @@ imports = [ impermanence.homeManagerModules.default ]; home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}" = { - enable = true; - allowOther = if !config.targets.genericLinux.enable then true else false; + enable = !config.targets.genericLinux.enable; removePrefixDirectory = true; directories = let home = config.home.homeDirectory; diff --git a/modules/home/settings/nix/default.nix b/modules/home/settings/nix/default.nix index 21ba02ba..627937f5 100644 --- a/modules/home/settings/nix/default.nix +++ b/modules/home/settings/nix/default.nix @@ -6,7 +6,7 @@ ]; nix = { - package = lib.mkForce pkgs.lix; + package = lib.mkForce pkgs.nix; settings.experimental-features = [ "flakes" "nix-command" diff --git a/modules/home/settings/nixgl/default.nix b/modules/home/settings/nixgl/default.nix index ebf9c3d2..539ad99f 100644 --- a/modules/home/settings/nixgl/default.nix +++ b/modules/home/settings/nixgl/default.nix @@ -1,6 +1,6 @@ { config, lib, ... }: { - nixGL = lib.mkIf config.targets.genericLinux.enable { + nixGL = { installScripts = [ "mesa" "nvidia" diff --git a/modules/home/settings/xdg/folders/default.nix b/modules/home/settings/xdg/folders/default.nix index 38a53e7b..5722c561 100644 --- a/modules/home/settings/xdg/folders/default.nix +++ b/modules/home/settings/xdg/folders/default.nix @@ -14,7 +14,7 @@ XDG_GAMES_DIR = "${homeDirectory}/Games"; XDG_KEEPERS_DIR = "${homeDirectory}/Keepers"; XDG_NETWORK_DIR = "${homeDirectory}/Network"; - XDG_PERSIST_DIR = if !config.targets.genericLinux.enable then "/persist${homeDirectory}" else "${homeDirectory}/.stow"; + XDG_PERSIST_DIR = "/persist${homeDirectory}"; XDG_PROJECTS_DIR = "${homeDirectory}/Projects"; XDG_SCREENSHOTS_DIR = "${config.xdg.userDirs.pictures}/Screenshots"; }; From 2a7d99a849c6a5d8122488b1f35b17ed10172ca7 Mon Sep 17 00:00:00 2001 From: Bun Date: Sun, 18 May 2025 04:47:08 -0400 Subject: [PATCH 41/98] Move two other computers from AMD to CPU microcode. --- hosts/detritus/hardware/default.nix | 2 +- hosts/midas/hardware/default.nix | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hosts/detritus/hardware/default.nix b/hosts/detritus/hardware/default.nix index 7b58ab61..3154c225 100644 --- a/hosts/detritus/hardware/default.nix +++ b/hosts/detritus/hardware/default.nix @@ -18,5 +18,5 @@ }; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; } diff --git a/hosts/midas/hardware/default.nix b/hosts/midas/hardware/default.nix index 19194610..4793a3aa 100644 --- a/hosts/midas/hardware/default.nix +++ b/hosts/midas/hardware/default.nix @@ -11,5 +11,5 @@ }; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; } From f00dda831eb8e8db4b79f1e6cac815a7332c5d42 Mon Sep 17 00:00:00 2001 From: Bun Date: Sun, 18 May 2025 04:51:21 -0400 Subject: [PATCH 42/98] Fix impermanence in the context of it not working on non-nix distros --- modules/home/settings/impermanence/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/home/settings/impermanence/default.nix b/modules/home/settings/impermanence/default.nix index 7719e354..fc8a4d00 100644 --- a/modules/home/settings/impermanence/default.nix +++ b/modules/home/settings/impermanence/default.nix @@ -4,6 +4,7 @@ home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}" = { enable = !config.targets.genericLinux.enable; + allowOther = true; removePrefixDirectory = true; directories = let home = config.home.homeDirectory; From 1df0e18f7e3498867932d906f20133b9b6d6b12c Mon Sep 17 00:00:00 2001 From: Bun Date: Sun, 18 May 2025 16:53:00 -0400 Subject: [PATCH 43/98] Move ssh alias to ssh program configuration --- modules/home/programs/terminal/ssh/default.nix | 9 ++++++++- modules/home/settings/aliases/default.nix | 1 - 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/modules/home/programs/terminal/ssh/default.nix b/modules/home/programs/terminal/ssh/default.nix index 59bf3077..fbcfc3e1 100644 --- a/modules/home/programs/terminal/ssh/default.nix +++ b/modules/home/programs/terminal/ssh/default.nix @@ -5,8 +5,9 @@ addKeysToAgent = "yes"; compression = true; matchBlocks = with lib.hm.dag; { + # Personal servers nixfox = { - host = "*.nixfox.ca"; + match = ''canonical host "*.nixfox.ca"''; user = config.home.username; }; midas = entryAfter [ "nixfox" ] { @@ -19,6 +20,12 @@ prophet = entryAfter [ "nixfox" ] { hostname = "mx.nixfox.ca"; }; + + # Misc + seneca = { + hostname = "matrix.senecapolytechnic.ca"; + user = "jhampton1"; + }; }; }; } diff --git a/modules/home/settings/aliases/default.nix b/modules/home/settings/aliases/default.nix index ea6336c7..e4d5ff4d 100644 --- a/modules/home/settings/aliases/default.nix +++ b/modules/home/settings/aliases/default.nix @@ -7,6 +7,5 @@ # Shortcuts myip = "curl ifconfig.co"; - seneca = "ssh jhampton1@matrix.senecapolytechnic.ca"; }; } From 83f419b6f1e4c5d1b792c8adc221ddbda7a51c42 Mon Sep 17 00:00:00 2001 From: Bun Date: Mon, 19 May 2025 13:36:06 -0400 Subject: [PATCH 44/98] Simple Redmond change --- hosts/redmond/user/default.nix | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/hosts/redmond/user/default.nix b/hosts/redmond/user/default.nix index fed1d317..38c850e6 100644 --- a/hosts/redmond/user/default.nix +++ b/hosts/redmond/user/default.nix @@ -1,7 +1,11 @@ { config, lib, ... }: { - home-manager.users."${config.sysusers.main}".home = { - desktop.enable = true; - stateVersion = lib.mkForce config.system.stateVersion; + home-manager.users."${config.sysusers.main}" = { + home = { + desktop.enable = true; + stateVersion = lib.mkForce config.system.stateVersion; + }; + + wayland.windowManager.sway.extraSessionCommands = lib.mkForce ""; }; } From 01e78619e34f11cf493c2947fbb6384beef90a98 Mon Sep 17 00:00:00 2001 From: Bun Date: Tue, 20 May 2025 12:27:18 -0400 Subject: [PATCH 45/98] Move Games dir into the games impermanence dir --- modules/home/programs/misc/gaming/launchers/default.nix | 1 + modules/home/settings/impermanence/default.nix | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/home/programs/misc/gaming/launchers/default.nix b/modules/home/programs/misc/gaming/launchers/default.nix index 259f0d2f..92c1e23b 100644 --- a/modules/home/programs/misc/gaming/launchers/default.nix +++ b/modules/home/programs/misc/gaming/launchers/default.nix @@ -11,6 +11,7 @@ persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}" = with lib; with config.home; with config.xdg; { directories = [ + "games/${removePrefix "${homeDirectory}/" "Games"}" "games/${removePrefix "${homeDirectory}/" configHome}/heroic" "games/${removePrefix "${homeDirectory}/" dataHome}/PrismLauncher" { diff --git a/modules/home/settings/impermanence/default.nix b/modules/home/settings/impermanence/default.nix index fc8a4d00..99ef68af 100644 --- a/modules/home/settings/impermanence/default.nix +++ b/modules/home/settings/impermanence/default.nix @@ -15,7 +15,6 @@ "secure/.ssh" ] ++ (if config.home.desktop.enable then [ "dirs/${strip documents}" - "dirs/${strip extraConfig.XDG_GAMES_DIR}" "dirs/${strip pictures}" "dirs/${strip videos}" From 63eef3d45bd9599d1f29af62ae602116628ac8ed Mon Sep 17 00:00:00 2001 From: Bun Date: Tue, 20 May 2025 20:23:19 -0400 Subject: [PATCH 46/98] Don't use swayidle on tower because it wakes up in a weird state. --- hosts/tower/user/default.nix | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/hosts/tower/user/default.nix b/hosts/tower/user/default.nix index 3ca3a690..becbf7bc 100644 --- a/hosts/tower/user/default.nix +++ b/hosts/tower/user/default.nix @@ -1,7 +1,11 @@ { config, lib, ... }: { - home-manager.users."${config.sysusers.main}".home = { - guifull.enable = true; - stateVersion = lib.mkForce config.system.stateVersion; + home-manager.users."${config.sysusers.main}" = { + home = { + guifull.enable = true; + stateVersion = lib.mkForce config.system.stateVersion; + }; + + services.swayidle.enable = lib.mkForce false; }; } From b01eca4124c0fc98615c5650fe4ffce83bce5776 Mon Sep 17 00:00:00 2001 From: Bun Date: Tue, 20 May 2025 20:25:28 -0400 Subject: [PATCH 47/98] Remove Redmond --- .nvimlog | 0 flake.nix | 1 - hosts/redmond/boot/default.nix | 11 --- hosts/redmond/default.nix | 19 ------ hosts/redmond/disko/default.nix | 96 --------------------------- hosts/redmond/filesystems/default.nix | 11 --- hosts/redmond/hardware/default.nix | 23 ------- hosts/redmond/id_ed25519.pub | 1 - hosts/redmond/network/default.nix | 13 ---- hosts/redmond/user/default.nix | 11 --- 10 files changed, 186 deletions(-) delete mode 100644 .nvimlog delete mode 100644 hosts/redmond/boot/default.nix delete mode 100644 hosts/redmond/default.nix delete mode 100644 hosts/redmond/disko/default.nix delete mode 100644 hosts/redmond/filesystems/default.nix delete mode 100644 hosts/redmond/hardware/default.nix delete mode 100644 hosts/redmond/id_ed25519.pub delete mode 100644 hosts/redmond/network/default.nix delete mode 100644 hosts/redmond/user/default.nix diff --git a/.nvimlog b/.nvimlog deleted file mode 100644 index e69de29b..00000000 diff --git a/flake.nix b/flake.nix index 3cb28dc0..818f6533 100644 --- a/flake.nix +++ b/flake.nix @@ -72,7 +72,6 @@ intuos = stable; jupiter = unstable; - redmond = stable; midas = stable; kitty = stable; diff --git a/hosts/redmond/boot/default.nix b/hosts/redmond/boot/default.nix deleted file mode 100644 index 478c4786..00000000 --- a/hosts/redmond/boot/default.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ ... }: -{ - boot = { - kernelParams = [ - "amdgpu.cik_support=1" - "radeon.cik_support=0" - ]; - loader.systemd-boot.enable = true; - plymouth.enable = true; - }; -} diff --git a/hosts/redmond/default.nix b/hosts/redmond/default.nix deleted file mode 100644 index cdaa5afc..00000000 --- a/hosts/redmond/default.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ lib, ... }: -{ - imports = [ - ./boot - ./disko - ./filesystems - ./hardware - ./network - ./user - ../../modules/system - ]; - - networking.hostName = "redmond"; - - system = { - desktop.enable = true; - stateVersion = "24.05"; - }; -} diff --git a/hosts/redmond/disko/default.nix b/hosts/redmond/disko/default.nix deleted file mode 100644 index 4ebcb697..00000000 --- a/hosts/redmond/disko/default.nix +++ /dev/null @@ -1,96 +0,0 @@ -{ config, disko, ... }: -{ - imports = [ disko.nixosModules.disko ]; - - disko.devices = { - disk = { - "${config.networking.hostName}" = { - type = "disk"; - device = "/dev/nvme0n1"; - content = { - type = "gpt"; - partitions = { - boot = { - size = "1M"; - type = "EF02"; - }; - ESP = { - size = "2G"; - type = "EF00"; - content = { - type = "filesystem"; - format = "vfat"; - mountpoint = "/boot"; - mountOptions = [ "umask=0077" ]; - }; - }; - luks = { - size = "100%"; - content = { - type = "luks"; - name = "${config.networking.hostName}-disk"; - settings.allowDiscards = true; - passwordFile = "/tmp/secret.key"; - content = { - type = "lvm_pv"; - vg = "${config.networking.hostName}"; - }; - }; - }; - }; - }; - }; - }; - - lvm_vg = { - "${config.networking.hostName}" = { - type = "lvm_vg"; - lvs = { - root = { - size = "100%"; - content = { - type = "btrfs"; - extraArgs = [ "-f" ]; - subvolumes = { - "/root" = { - mountpoint = "/"; - mountOptions = [ "compress=zstd" ]; - }; - "/prev" = { - mountpoint = "/prev"; - mountOptions = [ - "compress=zstd" - "noexec" - ]; - }; - "/nix" = { - mountpoint = "/nix"; - mountOptions = [ "compress=zstd" ]; - }; - - # Impermanence - "/persist" = { - mountpoint = "/persist"; - mountOptions = [ "compress=zstd" ]; - }; - "/persist/.snapshots" = { }; - "/persist/home" = { }; - "/persist/home/.snapshots" = { }; - }; - }; - }; - swap = { - size = "8G"; - content = { - type = "swap"; - discardPolicy = "both"; - }; - }; - }; - }; - }; - }; - - # Needed for impermanence - fileSystems."/persist".neededForBoot = true; -} diff --git a/hosts/redmond/filesystems/default.nix b/hosts/redmond/filesystems/default.nix deleted file mode 100644 index ddaa83f9..00000000 --- a/hosts/redmond/filesystems/default.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ config, ... }: -{ - fileSystems."/mnt/Windrive" = { - device = "/dev/disk/by-uuid/582C6B802C6B57D0"; - fsType = "ntfs"; - options = [ - "nodev" - "nosuid" - ]; - }; -} diff --git a/hosts/redmond/hardware/default.nix b/hosts/redmond/hardware/default.nix deleted file mode 100644 index 8d652d04..00000000 --- a/hosts/redmond/hardware/default.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ config, lib, modulesPath, ... }: -{ - imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; - - boot = { - initrd = { - availableKernelModules = [ - "ahci" - "ehci_pci" - "rtsx_usb_sdmmc" - "sd_mod" - "sdhci_pci" - "sr_mod" - "xhci_pci" - ]; - kernelModules = [ "dm-snapshot" ]; - }; - kernelModules = [ "kvm-amd" ]; - }; - - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; -} diff --git a/hosts/redmond/id_ed25519.pub b/hosts/redmond/id_ed25519.pub deleted file mode 100644 index 5319a978..00000000 --- a/hosts/redmond/id_ed25519.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICHJ2Gy1Gaq96K85zOSfgWzGY0rIaUcqGS7Si5Nvzg+n diff --git a/hosts/redmond/network/default.nix b/hosts/redmond/network/default.nix deleted file mode 100644 index f87dee8a..00000000 --- a/hosts/redmond/network/default.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ ... }: -{ - networking = { - interfaces."wlp1s0".ipv4.addresses = [{ - address = "192.168.2.200"; - prefixLength = 24; - }]; - defaultGateway = { - address = "192.168.2.1"; - interface = "wlp1s0"; - }; - }; -} diff --git a/hosts/redmond/user/default.nix b/hosts/redmond/user/default.nix deleted file mode 100644 index 38c850e6..00000000 --- a/hosts/redmond/user/default.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ config, lib, ... }: -{ - home-manager.users."${config.sysusers.main}" = { - home = { - desktop.enable = true; - stateVersion = lib.mkForce config.system.stateVersion; - }; - - wayland.windowManager.sway.extraSessionCommands = lib.mkForce ""; - }; -} From f461741432ea5aaff59ef95edbcfd5348e3d5424 Mon Sep 17 00:00:00 2001 From: Bun Date: Tue, 20 May 2025 20:25:46 -0400 Subject: [PATCH 48/98] Remove Remond properly --- modules/system/users/main/default.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/system/users/main/default.nix b/modules/system/users/main/default.nix index 2bb89a17..acd1cce6 100644 --- a/modules/system/users/main/default.nix +++ b/modules/system/users/main/default.nix @@ -17,7 +17,6 @@ ../../../../hosts/intuos/id_ed25519.pub ../../../../hosts/jupiter/id_ed25519.pub - ../../../../hosts/redmond/id_ed25519.pub ../../../../hosts/midas/id_ed25519.pub ../../../../hosts/kitty/id_ed25519.pub From 81a49a9e773d0d727d67e428b0cdc35070b42c5c Mon Sep 17 00:00:00 2001 From: Bun Date: Wed, 21 May 2025 13:59:17 -0400 Subject: [PATCH 49/98] Add usb storage to initrd of Hidden --- hosts/hidden/hardware/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/hosts/hidden/hardware/default.nix b/hosts/hidden/hardware/default.nix index c427a762..46514093 100644 --- a/hosts/hidden/hardware/default.nix +++ b/hosts/hidden/hardware/default.nix @@ -9,6 +9,7 @@ "nvme" "sd_mod" "sr_mod" + "usb_storage" "usbhid" "xhci_pci" ]; From 493001ab769981b2c73df79dc4c69cffacf1e0ab Mon Sep 17 00:00:00 2001 From: Bun Date: Wed, 21 May 2025 21:15:32 -0400 Subject: [PATCH 50/98] Add back NixOS hardware, possibly for testing Pis in the future --- flake.lock | 16 ++++++++++++++++ flake.nix | 2 ++ 2 files changed, 18 insertions(+) diff --git a/flake.lock b/flake.lock index f603a025..936a4a3a 100644 --- a/flake.lock +++ b/flake.lock @@ -243,6 +243,21 @@ "type": "github" } }, + "hardware": { + "locked": { + "lastModified": 1747860404, + "narHash": "sha256-9IMwxC4g1AyhOHTx8iTimoKnyzl9Rk2OJZiDtFoF3pA=", + "owner": "NixOS", + "repo": "nixos-hardware", + "rev": "2b9118883d29290a1b16ae3a12aedc478dae2546", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixos-hardware", + "type": "github" + } + }, "hm": { "inputs": { "nixpkgs": [ @@ -509,6 +524,7 @@ "blender": "blender", "disko": "disko", "flake-utils": "flake-utils", + "hardware": "hardware", "hm": "hm", "impermanence": "impermanence", "jovian": "jovian", diff --git a/flake.nix b/flake.nix index 818f6533..a71f999f 100644 --- a/flake.nix +++ b/flake.nix @@ -21,6 +21,8 @@ }; # Hardware specific + hardware.url = "github:NixOS/nixos-hardware"; + jovian = { url = "github:Jovian-Experiments/Jovian-NixOS"; inputs.nixpkgs.follows = "unstable"; From 80fde8b6f887db20ea317e6e31fce26c9edd6035 Mon Sep 17 00:00:00 2001 From: Bun Date: Thu, 22 May 2025 09:10:56 -0400 Subject: [PATCH 51/98] Remove options that don't make sense for Thunderbird --- .../home/programs/gui/thunderbird/default.nix | 44 +++++++------------ 1 file changed, 15 insertions(+), 29 deletions(-) diff --git a/modules/home/programs/gui/thunderbird/default.nix b/modules/home/programs/gui/thunderbird/default.nix index 8fe91a50..e7c67571 100644 --- a/modules/home/programs/gui/thunderbird/default.nix +++ b/modules/home/programs/gui/thunderbird/default.nix @@ -7,49 +7,35 @@ isDefault = true; settings = { "general.autoScroll" = true; + "browser.download.promptForDownload" = true; "security.mixed_content.block_active_content" = true; "security.mixed_content.block_display_content" = true; - "extensions.enabled" = false; - "extensions.autoDisableScopes" = 0; - "extensions.allow-non-mpc-extensions" = false; - "extensions.installDistroAddons" = false; - "extensions.getAddons.cache.enabled" = false; - "extensions.blocklist.enabled" = true; - "extensions.webextensions.userSelection" = false; - "extensions.checkCompatibility" = false; - "extensions.allowRemoteAddons" = false; - "extensions.ui.enabled" = false; - "extensions.ui.useSystemTheme" = true; "extensions.activeThemeID" = "thunderbird-compact-dark@mozilla.org"; + "extensions.allow-non-mpc-extensions" = false; + "extensions.allowRemoteAddons" = false; + "extensions.blocklist.enabled" = true; + "extensions.checkCompatibility" = false; + "extensions.enabled" = false; + "extensions.getAddons.cache.enabled" = false; + "extensions.ui.enabled" = false; + "extensions.webextensions.userSelection" = false; - "privacy.clearOnShutdown.cookies" = true; "privacy.clearOnShutdown.cache" = true; + "privacy.clearOnShutdown.cookies" = true; "privacy.clearOnShutdown.formdata" = true; "privacy.clearOnShutdown.siteSettings" = true; - "privacy.trackingprotection.enabled" = true; - "privacy.firstparty.isolate" = true; "privacy.donottrackheader.enabled" = true; "privacy.resistFingerprinting" = true; - - "browser.history.enabled" = false; - "browser.sessionstore.privacy_level" = 2; - "browser.tabs.warnOnClose" = false; - "browser.shell.checkDefaultBrowser" = false; - "browser.urlbar.suggest.openpage" = false; - "browser.urlbar.suggest.bookmark" = false; - "browser.urlbar.suggest.history" = false; - "browser.urlbar.suggest.searches" = false; - "browser.urlbar.suggest.topsites" = false; - "browser.download.promptForDownload" = true; + "privacy.trackingprotection.enabled" = true; "network.cookie.cookieBehavior" = 1; - "network.dns.dnsOverHttps.enabled" = true; - "network.http.speculative-parallel-limit" = 0; - "network.http.pipelining" = false; - "network.predictor.enabled" = false; "network.cookie.lifetimePolicy" = 2; + "network.dns.dnsOverHttps.enabled" = true; + "network.http.pipelining" = false; + "network.http.speculative-parallel-limit" = 0; + "network.predictor.enabled" = false; }; }; }; From 30a1103eab9c60759d38afe22921a9e66690e7ff Mon Sep 17 00:00:00 2001 From: Bun Date: Thu, 22 May 2025 10:24:13 -0400 Subject: [PATCH 52/98] Remove Teams for Linux, Thunderbird acts as a replacement --- modules/home/programs/misc/school/default.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/modules/home/programs/misc/school/default.nix b/modules/home/programs/misc/school/default.nix index a4b30480..d43655ec 100644 --- a/modules/home/programs/misc/school/default.nix +++ b/modules/home/programs/misc/school/default.nix @@ -6,7 +6,6 @@ globalprotect-openconnect gpauth remmina - teams-for-linux ]; shellAliases.seneca = "ssh jhampton1@matrix.senecapolytechnic.ca"; @@ -16,7 +15,6 @@ "school/${removePrefix "${homeDirectory}/" cacheHome}/gpclient" "school/${removePrefix "${homeDirectory}/" configHome}/com.yuezk.qt" "school/${removePrefix "${homeDirectory}/" configHome}/remmina" - "school/${removePrefix "${homeDirectory}/" configHome}/teams-for-linux" "school/.vmware" ]; }; From fdc052c15abf524f22f8c9aded8b32c84e0cd266 Mon Sep 17 00:00:00 2001 From: Bun Date: Fri, 23 May 2025 19:45:51 -0400 Subject: [PATCH 53/98] Changes to Detritus --- hosts/detritus/filesystems/default.nix | 10 ++++++++++ modules/home/programs/terminal/ssh/default.nix | 6 +++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/hosts/detritus/filesystems/default.nix b/hosts/detritus/filesystems/default.nix index 5dc1f325..d565576d 100644 --- a/hosts/detritus/filesystems/default.nix +++ b/hosts/detritus/filesystems/default.nix @@ -7,6 +7,16 @@ options = [ "nofail" "nosuid" + "subvol=storage" + ]; + }; + "/persist/home/${config.sysusers.main}/games" = { + device = "/dev/disk/by-uuid/d0d6783f-ad51-4d85-b8a9-3374f6460ef6"; + fsType = "btrfs"; + options = [ + "nofail" + "nosuid" + "subvol=games" ]; }; diff --git a/modules/home/programs/terminal/ssh/default.nix b/modules/home/programs/terminal/ssh/default.nix index fbcfc3e1..aa68a303 100644 --- a/modules/home/programs/terminal/ssh/default.nix +++ b/modules/home/programs/terminal/ssh/default.nix @@ -10,14 +10,14 @@ match = ''canonical host "*.nixfox.ca"''; user = config.home.username; }; - midas = entryAfter [ "nixfox" ] { + midas = { hostname = "sv.nixfox.ca"; }; - kitty = entryAfter [ "nixfox" ] { + kitty = { hostname = "sv.nixfox.ca"; port = 2222; }; - prophet = entryAfter [ "nixfox" ] { + prophet = { hostname = "mx.nixfox.ca"; }; From 8bfcca1bb87e2de05b7de683d02402a234958fe0 Mon Sep 17 00:00:00 2001 From: Bun Date: Sat, 24 May 2025 10:52:03 -0400 Subject: [PATCH 54/98] Update Detritus to secureboot --- hosts/detritus/boot/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosts/detritus/boot/default.nix b/hosts/detritus/boot/default.nix index a802df85..1edfa6e4 100644 --- a/hosts/detritus/boot/default.nix +++ b/hosts/detritus/boot/default.nix @@ -5,6 +5,6 @@ "amdgpu.si_support=1" "radeon.si_support=0" ]; - loader.grub.enable = true; + lanzaboote.enable = true; }; } From 63c42b081d2200581025f04657059ea4b3fa07a8 Mon Sep 17 00:00:00 2001 From: Bun Date: Wed, 28 May 2025 18:19:50 -0400 Subject: [PATCH 55/98] Update for 25.05 --- flake.lock | 228 +++++++++--------- flake.nix | 8 +- hosts/jupiter/boot/default.nix | 3 +- hosts/jupiter/jovian/default.nix | 3 +- .../home/programs/gui/librewolf/default.nix | 24 +- .../home/programs/terminal/ranger/default.nix | 11 +- .../home/programs/terminal/zsh/default.nix | 2 +- .../home/settings/fonts/packages/default.nix | 21 +- modules/home/variables/look/fonts/default.nix | 2 +- modules/home/wms/programs/mako/default.nix | 38 +-- modules/home/wms/programs/waybar/default.nix | 49 ++-- .../services/general/vmware/default.nix | 13 +- 12 files changed, 193 insertions(+), 209 deletions(-) diff --git a/flake.lock b/flake.lock index 936a4a3a..5b3e579f 100644 --- a/flake.lock +++ b/flake.lock @@ -37,18 +37,12 @@ } }, "crane": { - "inputs": { - "nixpkgs": [ - "lanzaboote", - "nixpkgs" - ] - }, "locked": { - "lastModified": 1717535930, - "narHash": "sha256-1hZ/txnbd/RmiBPNUs7i8UQw2N89uAK3UzrGAWdnFfU=", + "lastModified": 1746291859, + "narHash": "sha256-DdWJLA+D5tcmrRSg5Y7tp/qWaD05ATI4Z7h22gd1h7Q=", "owner": "ipetkov", "repo": "crane", - "rev": "55e7754ec31dac78980c8be45f8a28e80e370946", + "rev": "dfd9a8dfd09db9aad544c4d3b6c47b12562544a5", "type": "github" }, "original": { @@ -64,11 +58,11 @@ ] }, "locked": { - "lastModified": 1746729224, - "narHash": "sha256-9R4sOLAK1w3Bq54H3XOJogdc7a6C2bLLmatOQ+5pf5w=", + "lastModified": 1748225455, + "narHash": "sha256-AzlJCKaM4wbEyEpV3I/PUq5mHnib2ryEy32c+qfj6xk=", "owner": "nix-community", "repo": "disko", - "rev": "85555d27ded84604ad6657ecca255a03fd878607", + "rev": "a894f2811e1ee8d10c50560551e50d6ab3c392ba", "type": "github" }, "original": { @@ -80,11 +74,11 @@ "flake-compat": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "lastModified": 1733328505, + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", "owner": "edolstra", "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", "type": "github" }, "original": { @@ -96,11 +90,11 @@ "flake-compat_2": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "lastModified": 1747046372, + "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", "owner": "edolstra", "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", "type": "github" }, "original": { @@ -133,11 +127,11 @@ ] }, "locked": { - "lastModified": 1717285511, - "narHash": "sha256-iKzJcpdXih14qYVcZ9QC9XuZYnPc6T8YImb6dX166kw=", + "lastModified": 1743550720, + "narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "2a55567fcf15b1b1c7ed712a2c6fadaec7412ea8", + "rev": "c621e8422220273271f52058f618c94e405bb0f5", "type": "github" }, "original": { @@ -189,24 +183,6 @@ "inputs": { "systems": "systems_2" }, - "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_3": { - "inputs": { - "systems": "systems_3" - }, "locked": { "lastModified": 1731533236, "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", @@ -221,6 +197,32 @@ "type": "github" } }, + "git-hooks": { + "inputs": { + "flake-compat": [ + "mailserver", + "flake-compat" + ], + "gitignore": "gitignore_2", + "nixpkgs": [ + "mailserver", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1742649964, + "narHash": "sha256-DwOTp7nvfi8mRfuL1escHDXabVXFGT1VlPD1JHrtrco=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "dcf5072734cb576d2b0c59b2ac44f5050b5eac82", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, "gitignore": { "inputs": { "nixpkgs": [ @@ -243,13 +245,35 @@ "type": "github" } }, + "gitignore_2": { + "inputs": { + "nixpkgs": [ + "mailserver", + "git-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, "hardware": { "locked": { - "lastModified": 1747860404, - "narHash": "sha256-9IMwxC4g1AyhOHTx8iTimoKnyzl9Rk2OJZiDtFoF3pA=", + "lastModified": 1747900541, + "narHash": "sha256-dn64Pg9xLETjblwZs9Euu/SsjW80pd6lr5qSiyLY1pg=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "2b9118883d29290a1b16ae3a12aedc478dae2546", + "rev": "11f2d9ea49c3e964315215d6baa73a8d42672f06", "type": "github" }, "original": { @@ -265,16 +289,16 @@ ] }, "locked": { - "lastModified": 1747020534, - "narHash": "sha256-D/6rkiC6w2p+4SwRiVKrWIeYzun8FBg7NlMKMwQMxO0=", + "lastModified": 1748226808, + "narHash": "sha256-GaBRgxjWO1bAQa8P2+FDxG4ANBVhjnSjBms096qQdxo=", "owner": "nix-community", "repo": "home-manager", - "rev": "b4bbdc6fde16fc2051fcde232f6e288cd22007ca", + "rev": "83665c39fa688bd6a1f7c43cf7997a70f6a109f9", "type": "github" }, "original": { "owner": "nix-community", - "ref": "release-24.11", + "ref": "release-25.05", "repo": "home-manager", "type": "github" } @@ -302,11 +326,11 @@ ] }, "locked": { - "lastModified": 1747109298, - "narHash": "sha256-v6P2Lm2ucRhFpVdY2feQKxJIGfaud3CVHV5GWoCNji8=", + "lastModified": 1748411314, + "narHash": "sha256-fvtRp+oHGDLiSQico9+LTAr6Z8CU1AIldLYLQ9mHqjo=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "7ceb01d01e02fa55699db1ecb99df1295b47b499", + "rev": "9d69aed9023082af370b71bffdfcd414b6b61593", "type": "github" }, "original": { @@ -320,7 +344,6 @@ "crane": "crane", "flake-compat": "flake-compat", "flake-parts": "flake-parts", - "flake-utils": "flake-utils_2", "nixpkgs": [ "stable" ], @@ -328,16 +351,15 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1718178907, - "narHash": "sha256-eSZyrQ9uoPB9iPQ8Y5H7gAmAgAvCw3InStmU3oEjqsE=", + "lastModified": 1747056319, + "narHash": "sha256-qSKcBaISBozadtPq6BomnD+wIYTZIkiua3UuHLaD52c=", "owner": "nix-community", "repo": "lanzaboote", - "rev": "b627ccd97d0159214cee5c7db1412b75e4be6086", + "rev": "2e425f3da6ce7f5b34fa6eaf7a2a7f78dbabcc85", "type": "github" }, "original": { "owner": "nix-community", - "ref": "v0.4.1", "repo": "lanzaboote", "type": "github" } @@ -346,22 +368,23 @@ "inputs": { "blobs": "blobs", "flake-compat": "flake-compat_2", + "git-hooks": "git-hooks", "nixpkgs": [ "stable" ], - "nixpkgs-24_11": "nixpkgs-24_11" + "nixpkgs-25_05": "nixpkgs-25_05" }, "locked": { - "lastModified": 1746469806, - "narHash": "sha256-kL3cc25sc0x+6gBZYjuE4566RT1E3XLQs4V8sl7D+VE=", + "lastModified": 1747965231, + "narHash": "sha256-BW3ktviEhfCN/z3+kEyzpDKAI8qFTwO7+S0NVA0C90o=", "owner": "simple-nixos-mailserver", "repo": "nixos-mailserver", - "rev": "14857a0309d7bbdf7c51bbfa309d0d13448ae77e", + "rev": "53007af63fade28853408370c4c600a63dd97f41", "type": "gitlab" }, "original": { "owner": "simple-nixos-mailserver", - "ref": "nixos-24.11", + "ref": "nixos-25.05", "repo": "nixos-mailserver", "type": "gitlab" } @@ -369,15 +392,15 @@ "minecraft": { "inputs": { "flake-compat": "flake-compat_3", - "flake-utils": "flake-utils_3", + "flake-utils": "flake-utils_2", "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1747188102, - "narHash": "sha256-h/J6hSskrsR+YFCjWW4x4qXm1oGcUUvXH8TEZDZnLqk=", + "lastModified": 1748225187, + "narHash": "sha256-gpNN43fNJQoHhnK1Z+nms4lo6i/t9t2rfZMAxc165vQ=", "owner": "Infinidoge", "repo": "nix-minecraft", - "rev": "cc53b6b79022c9dd31b9d426bb5a5f39246196e1", + "rev": "98c1bcaaa4dbd5980523a08a5b32e35d44e830e5", "type": "github" }, "original": { @@ -423,33 +446,18 @@ "type": "indirect" } }, - "nixpkgs-24_11": { + "nixpkgs-25_05": { "locked": { - "lastModified": 1734083684, - "narHash": "sha256-5fNndbndxSx5d+C/D0p/VF32xDiJCJzyOqorOYW4JEo=", + "lastModified": 1747610100, + "narHash": "sha256-rpR5ZPMkWzcnCcYYo3lScqfuzEw5Uyfh+R0EKZfroAc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "314e12ba369ccdb9b352a4db26ff419f7c49fa84", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-24.11", - "type": "indirect" - } - }, - "nixpkgs-stable": { - "locked": { - "lastModified": 1710695816, - "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "614b4613980a522ba49f0d194531beddbb7220d3", + "rev": "ca49c4304acf0973078db0a9d200fd2bae75676d", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-23.11", + "ref": "nixos-25.05", "repo": "nixpkgs", "type": "github" } @@ -479,11 +487,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1747196235, - "narHash": "sha256-41VHCKCevxL7Luqwc9A2r3DPTOz6Ky+nRkHp1eurtmA=", + "lastModified": 1748444636, + "narHash": "sha256-wjcrY2/bFfHLm16HPuxDhHEqe3HBbLwZ5kT/BBklPKE=", "owner": "nix-community", "repo": "NUR", - "rev": "2378adbb9ebb4654dc0d41786609839b6ad4a7ef", + "rev": "c68efc6197f91cae2904f68937bdfb235c3c7799", "type": "github" }, "original": { @@ -502,15 +510,14 @@ "nixpkgs": [ "lanzaboote", "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable" + ] }, "locked": { - "lastModified": 1717664902, - "narHash": "sha256-7XfBuLULizXjXfBYy/VV+SpYMHreNRHk9nKMsm1bgb4=", + "lastModified": 1746537231, + "narHash": "sha256-Wb2xeSyOsCoTCTj7LOoD6cdKLEROyFAArnYoS+noCWo=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "cc4d466cb1254af050ff7bdf47f6d404a7c646d1", + "rev": "fa466640195d38ec97cf0493d6d6882bc4d14969", "type": "github" }, "original": { @@ -538,21 +545,17 @@ }, "rust-overlay": { "inputs": { - "flake-utils": [ - "lanzaboote", - "flake-utils" - ], "nixpkgs": [ "lanzaboote", "nixpkgs" ] }, "locked": { - "lastModified": 1717813066, - "narHash": "sha256-wqbRwq3i7g5EHIui0bIi84mdqZ/It1AXBSLJ5tafD28=", + "lastModified": 1747017456, + "narHash": "sha256-C/U12fcO+HEF071b5mK65lt4XtAIZyJSSJAg9hdlvTk=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "6dc3e45fe4aee36efeed24d64fc68b1f989d5465", + "rev": "5b07506ae89b025b14de91f697eba23b48654c52", "type": "github" }, "original": { @@ -563,16 +566,16 @@ }, "stable": { "locked": { - "lastModified": 1746957726, - "narHash": "sha256-k9ut1LSfHCr0AW82ttEQzXVCqmyWVA5+SHJkS5ID/Jo=", + "lastModified": 1748162331, + "narHash": "sha256-rqc2RKYTxP3tbjA+PB3VMRQNnjesrT0pEofXQTrMsS8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a39ed32a651fdee6842ec930761e31d1f242cb94", + "rev": "7c43f080a7f28b2774f3b3f43234ca11661bf334", "type": "github" }, "original": { "id": "nixpkgs", - "ref": "nixos-24.11", + "ref": "nixos-25.05", "type": "indirect" } }, @@ -606,21 +609,6 @@ "type": "github" } }, - "systems_3": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, "treefmt-nix": { "inputs": { "nixpkgs": [ @@ -644,11 +632,11 @@ }, "unstable": { "locked": { - "lastModified": 1746904237, - "narHash": "sha256-3e+AVBczosP5dCLQmMoMEogM57gmZ2qrVSrmq9aResQ=", + "lastModified": 1748370509, + "narHash": "sha256-QlL8slIgc16W5UaI3w7xHQEP+Qmv/6vSNTpoZrrSlbk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d89fc19e405cb2d55ce7cc114356846a0ee5e956", + "rev": "4faa5f5321320e49a78ae7848582f684d64783e9", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index a71f999f..85a531aa 100644 --- a/flake.nix +++ b/flake.nix @@ -1,7 +1,7 @@ { inputs = { # General inputs - stable.url = "nixpkgs/nixos-24.11"; + stable.url = "nixpkgs/nixos-25.05"; unstable.url = "nixpkgs/nixos-unstable"; # Flake helpers @@ -16,7 +16,7 @@ impermanence.url = "github:nix-community/impermanence"; lanzaboote = { - url = "github:nix-community/lanzaboote/v0.4.1"; + url = "github:nix-community/lanzaboote"; inputs.nixpkgs.follows = "stable"; }; @@ -30,7 +30,7 @@ # Service inputs mailserver = { - url = "gitlab:simple-nixos-mailserver/nixos-mailserver/nixos-24.11"; + url = "gitlab:simple-nixos-mailserver/nixos-mailserver/nixos-25.05"; inputs.nixpkgs.follows = "stable"; }; @@ -38,7 +38,7 @@ # Home inputs hm = { - url = "github:nix-community/home-manager/release-24.11"; + url = "github:nix-community/home-manager/release-25.05"; inputs.nixpkgs.follows = "stable"; }; nur = { diff --git a/hosts/jupiter/boot/default.nix b/hosts/jupiter/boot/default.nix index fae86e7f..133c08ac 100644 --- a/hosts/jupiter/boot/default.nix +++ b/hosts/jupiter/boot/default.nix @@ -1,6 +1,7 @@ -{ ... }: +{ pkgsStable, ... }: { boot = { + kernelPackages = pkgsStable.linuxPackages_latest; loader.systemd-boot.enable = true; plymouth.enable = true; }; diff --git a/hosts/jupiter/jovian/default.nix b/hosts/jupiter/jovian/default.nix index b60fd795..0d4f8db6 100644 --- a/hosts/jupiter/jovian/default.nix +++ b/hosts/jupiter/jovian/default.nix @@ -23,7 +23,7 @@ }; boot = { - kernelPackages = pkgs.linuxPackages_jovian; + kernelPackages = lib.mkForce pkgs.linuxPackages_jovian; kernelParams = [ "amd_pstate=active" ]; }; @@ -67,6 +67,7 @@ gnome-logs gnome-maps gnome-music + gnome-remote-desktop gnome-shell-extensions gnome-software gnome-system-monitor diff --git a/modules/home/programs/gui/librewolf/default.nix b/modules/home/programs/gui/librewolf/default.nix index 00a3e612..9ea04edb 100644 --- a/modules/home/programs/gui/librewolf/default.nix +++ b/modules/home/programs/gui/librewolf/default.nix @@ -21,7 +21,7 @@ }; }; - extensions = with pkgs.nur.repos.rycee.firefox-addons; [ + extensions.packages = with pkgs.nur.repos.rycee.firefox-addons; [ bitwarden darkreader return-youtube-dislikes @@ -33,16 +33,16 @@ search = { force = true; - default = "Ecosia"; + default = "ecosia"; order = [ - "Ecosia" - "NixPKGs" - "MyNixOS" - "YouTube" - "Spotify" + "ecosia" + "nixpkgs" + "mynixos" + "youtube" + "spotify" ]; engines = { - "Ecosia" = { + "ecosia" = { urls = [{ template = "https://www.ecosia.org/search"; params = [{ @@ -53,7 +53,7 @@ definedAliases = [ "@e" ]; }; - "NixPKGs" = { + "nixpkgs" = { urls = [{ template = "https://search.nixos.org/packages"; params = [ @@ -70,7 +70,7 @@ definedAliases = [ "@p" ]; }; - "MyNixOS" = { + "mynixos" = { urls = [{ template = "https://mynixos.com/search"; params = [{ @@ -81,7 +81,7 @@ definedAliases = [ "@my" ]; }; - "YouTube" = { + "youtube" = { urls = [{ template = "https://www.youtube.com/results"; params = [{ @@ -92,7 +92,7 @@ definedAliases = [ "@y" ]; }; - "Spotify" = { + "spotify" = { urls = [{ template = "https://open.spotify.com/search/{searchTerms}"; }]; definedAliases = [ "@s" ]; }; diff --git a/modules/home/programs/terminal/ranger/default.nix b/modules/home/programs/terminal/ranger/default.nix index 49057d9a..942fb179 100644 --- a/modules/home/programs/terminal/ranger/default.nix +++ b/modules/home/programs/terminal/ranger/default.nix @@ -1,11 +1,11 @@ -{ config, lib, pkgsStable, ... }: +{ config, lib, pkgs, ... }: { programs.ranger = { enable = true; - package = pkgsStable.ranger; + #package = pkgs.ranger; settings = { preview_images = true; - preview_images_method = "sixel"; + #preview_images_method = "sixel"; dirname_in_tabs = true; autosave_bookmarks = false; show_hidden = true; @@ -118,9 +118,6 @@ P:${XDG_NETWORK_DIR}/Midas/Photos ''; }; - packages = with pkgsStable; [ - imagemagick - poppler_utils - ]; + packages = with pkgs; [ poppler_utils ]; }; } diff --git a/modules/home/programs/terminal/zsh/default.nix b/modules/home/programs/terminal/zsh/default.nix index e5345c18..db1ee096 100644 --- a/modules/home/programs/terminal/zsh/default.nix +++ b/modules/home/programs/terminal/zsh/default.nix @@ -21,7 +21,7 @@ ignoreSpace = true; path = "$ZDOTDIR/.zsh_history"; }; - initExtra = '' + initContent = '' smallfetch source ${pkgs.zsh-you-should-use}/share/zsh/plugins/you-should-use/you-should-use.plugin.zsh ''; diff --git a/modules/home/settings/fonts/packages/default.nix b/modules/home/settings/fonts/packages/default.nix index 9107f0b5..e1fd0145 100644 --- a/modules/home/settings/fonts/packages/default.nix +++ b/modules/home/settings/fonts/packages/default.nix @@ -1,11 +1,14 @@ -{ config, lib, pkgsStable, ... }: +{ config, lib, pkgs, ... }: { - home.packages = lib.mkIf config.home.desktop.enable (with pkgsStable; [ - liberation_ttf - noto-fonts - sarasa-gothic - twitter-color-emoji - ubuntu-classic - (nerdfonts.override { fonts = [ "UbuntuMono" ]; }) - ]); + config = lib.mkIf config.home.desktop.enable { + home.packages = (with pkgs; [ + liberation_ttf + noto-fonts + sarasa-gothic + twitter-color-emoji + ]) ++ (with pkgs.nerd-fonts; [ + ubuntu + ubuntu-mono + ]); + }; } diff --git a/modules/home/variables/look/fonts/default.nix b/modules/home/variables/look/fonts/default.nix index 9e3921e8..3a55f47d 100644 --- a/modules/home/variables/look/fonts/default.nix +++ b/modules/home/variables/look/fonts/default.nix @@ -1,7 +1,7 @@ { ... }: { look.fonts = { - main = "Ubuntu"; + main = "Ubuntu Nerd Font"; mono = "UbuntuMono Nerd Font"; }; } diff --git a/modules/home/wms/programs/mako/default.nix b/modules/home/wms/programs/mako/default.nix index 065026c7..b8555a15 100644 --- a/modules/home/wms/programs/mako/default.nix +++ b/modules/home/wms/programs/mako/default.nix @@ -2,22 +2,26 @@ { services.mako = { enable = config.home.desktop.enable; - borderColor = "#${config.look.colors.accent}"; - backgroundColor = "#${config.look.colors.dark}D9"; - sort = "+time"; - layer = "overlay"; - padding = "8"; - margin = "0"; - borderSize = config.look.border.int; - maxIconSize = 40; - defaultTimeout = 4500; - font = "${config.look.fonts.main} 12"; - anchor = "bottom-right"; - extraConfig = '' - on-button-right=dismiss-all - outer-margin=10 - [mode=do-not-disturb] - invisible=1 - ''; + settings = { + # Theme + background-color = "#${config.look.colors.dark}D9"; + border-color = "#${config.look.colors.accent}"; + border-size = config.look.border.int; + font = "${config.look.fonts.main} 12"; + margin = 0; + max-icon-size = 40; + outer-margin = 10; + padding = 8; + + # Rules + anchor = "bottom-right"; + default-timeout = 4500; + layer = "overlay"; + on-button-right = "dismiss-all"; + sort = "+time"; + + # Modes + "mode=do-not-disturb".invisible = 1; + }; }; } diff --git a/modules/home/wms/programs/waybar/default.nix b/modules/home/wms/programs/waybar/default.nix index 6ab1fee1..137b285f 100644 --- a/modules/home/wms/programs/waybar/default.nix +++ b/modules/home/wms/programs/waybar/default.nix @@ -22,11 +22,11 @@ format-bluetooth = "{icon} {volume}%"; format-muted = " muted"; format-icons = { - headphone = "󰋋 "; - headset = "󰋋 "; + headphone = "󰋋"; + headset = "󰋋"; default = [ - " " - " " + "" + "" ]; }; on-click = "${wireplumber}/bin/wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; @@ -37,8 +37,8 @@ "mpris" = { player = "mpd"; - format = " {title}"; - format-paused = " {artist}"; + format = " {title}"; + format-paused = " {artist}"; format-stopped = ""; tooltip-format = lib.concatStrings [ "{title} - {artist} - {album}\n" @@ -60,9 +60,9 @@ # Print the notification status with the tooltip if [[ "$mode" == "do-not-disturb" ]]; then - printf '{"text":"󱆥 Off","class":"disabled","tooltip":"Notifications Disabled."}' + printf '{"text":"󱆥 Off","class":"disabled","tooltip":"Notifications Disabled."}' else - printf '{"text":" On","tooltip":"Notifications Enabled."}'; + printf '{"text":" On","tooltip":"Notifications Enabled."}'; fi ''; format = "{}"; @@ -74,8 +74,8 @@ "idle_inhibitor" = { format = "{icon}"; format-icons = { - activated = " On"; - deactivated = "󰾫 Off"; + activated = " On"; + deactivated = "󰾫 Off"; tooltip-format-activated = "Sleep inhibited."; tooltip-format-deactivated = "Sleep uninhibited."; }; @@ -90,12 +90,12 @@ }; "cpu" = { - format = " {usage}%"; + format = " {usage}%"; interval = 3; }; "memory" = { - format = " {used}G"; + format = " {used}G"; tooltip = false; interval = 3; }; @@ -137,7 +137,7 @@ fi # Output the VRAM usage - echo "{\"text\": \"󰢮 ''${vram_usage_display}\"}" + echo "{\"text\": \"󰢮 ''${vram_usage_display}\"}" ''; format = "{}"; return-type = "json"; @@ -145,7 +145,7 @@ }; "backlight" = { - format = "{icon} {percent}%"; + format = "{icon} {percent}%"; format-icons = [ "" "󰖨" @@ -159,7 +159,7 @@ warning = 30; critical = 15; }; - format = "{icon} {capacity}%"; + format = "{icon} {capacity}%"; format-icons = [ "" "" @@ -171,12 +171,12 @@ "clock" = { interval = 1; - format = "{:%a %b %d %I:%M:%S%p}"; + format = "󰥔 {:%a %b %d %I:%M:%S%p}"; tooltip-format = "{calendar}"; }; "sway/scratchpad" = { - format = " {count}"; + format = " {count}"; show-empty = false; tooltip = true; tooltip-format = "{title}"; @@ -294,19 +294,17 @@ border: 0; border-radius: 0; min-height: 0; - font-family: ${config.look.fonts.main}, ${config.look.fonts.mono}; + font-family: ${config.look.fonts.main}; font-size: 15.5px; color: #${config.look.colors.text}; } #waybar { background: #${config.look.colors.dark}; } - #tray { padding: 0 2px 0 5px; } - #network { padding: 0 10px 0 4px; } - #scratchpad, #privacy { margin-left: 4px; } - #pulseaudio { margin-right: 5px; } + #network { padding: 0 8px 0 4px; } + #pulseaudio, #scratchpad, #privacy, #tray, #bluetooth { margin-left: 4px; } #mpris, #custom-notifs, #idle_inhibitor, #custom-weather, #cpu, #memory, #custom-vram, #backlight, #battery { margin: 0 5px 0 2px; } - #workspaces { padding: 0 6px; } + #workspaces { padding: 0 6px 0 0; } #workspaces button { padding: 0 3px; color: white; @@ -325,11 +323,6 @@ background: #${config.look.colors.light}; } - #bluetooth { - margin: 0 6px 0 4px; - font-size: 13.4px; - } - #mpris { border-bottom: 3px solid #ffb066; } #custom-notifs { border-bottom: 3px solid #3823C4; } #idle_inhibitor { border-bottom: 3px solid #941efc; } diff --git a/modules/system/services/general/vmware/default.nix b/modules/system/services/general/vmware/default.nix index 7db71cdd..e7541157 100644 --- a/modules/system/services/general/vmware/default.nix +++ b/modules/system/services/general/vmware/default.nix @@ -1,13 +1,10 @@ -{ config, lib, pkgsUnstable, ... }: +{ config, lib, pkgs, ... }: { config = lib.mkIf config.virtualisation.vmware.host.enable { - virtualisation.vmware.host = { - package = pkgsUnstable.vmware-workstation; - extraConfig = '' - mks.gl.allowUnsupportedDrivers = "TRUE" - mks.vk.allowUnsupportedDevices = "TRUE" - ''; - }; + virtualisation.vmware.host.extraConfig = '' + mks.gl.allowUnsupportedDrivers = "TRUE" + mks.vk.allowUnsupportedDevices = "TRUE" + ''; nixpkgs.allowUnfreePackages = [ "vmware-workstation" ]; }; From 7a128968c28cc7eaab85f8bb33adf100edf2923b Mon Sep 17 00:00:00 2001 From: Bun Date: Wed, 28 May 2025 23:30:55 -0400 Subject: [PATCH 56/98] Fix Tower and waybar --- hosts/tower/boot/default.nix | 4 ++-- modules/home/wms/programs/waybar/default.nix | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/hosts/tower/boot/default.nix b/hosts/tower/boot/default.nix index 8c5668af..9f0c2504 100644 --- a/hosts/tower/boot/default.nix +++ b/hosts/tower/boot/default.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgsUnstable, ... }: +{ config, lib, pkgs, ... }: let commonKernelParams = [ # VM/GPU passthrough @@ -13,7 +13,7 @@ let in { boot = { # Latest kernel and IOMMU isolation - kernelPackages = pkgsUnstable.linuxPackages_latest; + kernelPackages = pkgs.linuxPackages_latest; kernelParams = commonKernelParams ++ [ "vfio-pci.ids=10de:1f82,10de:10fa" ]; # Load into GPU before video driver diff --git a/modules/home/wms/programs/waybar/default.nix b/modules/home/wms/programs/waybar/default.nix index 137b285f..49700001 100644 --- a/modules/home/wms/programs/waybar/default.nix +++ b/modules/home/wms/programs/waybar/default.nix @@ -300,9 +300,9 @@ } #waybar { background: #${config.look.colors.dark}; } - #network { padding: 0 8px 0 4px; } - #pulseaudio, #scratchpad, #privacy, #tray, #bluetooth { margin-left: 4px; } - #mpris, #custom-notifs, #idle_inhibitor, #custom-weather, #cpu, #memory, #custom-vram, #backlight, #battery { margin: 0 5px 0 2px; } + #network { padding: 0 6px 0 4px; } + #scratchpad, #privacy, #tray, #bluetooth { margin: 0 2px 0 2px; } + #pulseaudio, #mpris, #custom-notifs, #idle_inhibitor, #custom-weather, #cpu, #memory, #custom-vram, #backlight, #battery, #clock { margin: 0 2px 0 4px; } #workspaces { padding: 0 6px 0 0; } #workspaces button { From 64151b3fa801458d42ae743900d9986f8981a5ec Mon Sep 17 00:00:00 2001 From: Bun Date: Thu, 29 May 2025 17:09:39 -0400 Subject: [PATCH 57/98] Fix server 25.05 stuff --- modules/system/services/server/cfdyndns/default.nix | 7 +++++-- .../services/server/minecraft/servers/velocity/default.nix | 4 ---- modules/system/services/server/nextcloud/default.nix | 3 ++- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/modules/system/services/server/cfdyndns/default.nix b/modules/system/services/server/cfdyndns/default.nix index 16760fe1..b281886b 100644 --- a/modules/system/services/server/cfdyndns/default.nix +++ b/modules/system/services/server/cfdyndns/default.nix @@ -1,4 +1,7 @@ -{ config, pkgs, ... }: +{ config, lib, pkgs, ... }: { - services.cloudflare-dyndns.apiTokenFile = "${pkgs.writeText "cloudflareapikey" config.secrets.flareApiKey}"; + config = lib.mkIf config.services.cloudflare-dyndns.enable { + services.cloudflare-dyndns.apiTokenFile = "/var/lib/private/cloudflare-dyndns/key"; + environment.persistence."/persist".directories = [ "/var/lib/private/cloudflare-dyndns" ]; + }; } diff --git a/modules/system/services/server/minecraft/servers/velocity/default.nix b/modules/system/services/server/minecraft/servers/velocity/default.nix index c358006e..099eb183 100644 --- a/modules/system/services/server/minecraft/servers/velocity/default.nix +++ b/modules/system/services/server/minecraft/servers/velocity/default.nix @@ -12,10 +12,6 @@ url = "https://download.geysermc.org/v2/projects/floodgate/versions/2.2.4/builds/116/downloads/velocity"; sha256 = "0sinl47pdyc3zyi3jprjqh8ka754rz2r6gmyd27nq39qf31mbbvy"; }; - "plugins/LuckPerms.jar" = builtins.fetchurl { - url = "https://download.luckperms.net/1571/velocity/LuckPerms-Velocity-5.4.154.jar"; - sha256 = "03kqgxrf6ssclrwgyfxs521b7kswmpkk90kdwyaajkkx8hqvbqlc"; - }; "plugins/SkinsRestorer.jar" = builtins.fetchurl { url = "https://github.com/SkinsRestorer/SkinsRestorer/releases/download/15.4.2/SkinsRestorer.jar"; sha256 = "14nl9mi958bfqwqz9182cxj7m6l15kalq3wjmjqzy50s52si35wf"; diff --git a/modules/system/services/server/nextcloud/default.nix b/modules/system/services/server/nextcloud/default.nix index 20408682..69f857e2 100644 --- a/modules/system/services/server/nextcloud/default.nix +++ b/modules/system/services/server/nextcloud/default.nix @@ -7,12 +7,13 @@ config = lib.mkIf config.services.nextcloud.enable { services.nextcloud = { - package = pkgs.nextcloud30; + package = pkgs.nextcloud31; hostName = "files.nixfox.ca"; https = true; config = { adminuser = config.sysusers.main; adminpassFile = "${pkgs.writeText "initial" config.secrets.initialPass}"; + dbtype = "sqlite"; }; settings = { trusted_proxies = [ "127.0.0.1" ]; From f41d78a6385126ed5b900dc977b7bd0bedbc23b1 Mon Sep 17 00:00:00 2001 From: Bun Date: Thu, 29 May 2025 17:16:49 -0400 Subject: [PATCH 58/98] Modify secrets --- modules/system/secrets/default.nix | Bin 1858 -> 1662 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/modules/system/secrets/default.nix b/modules/system/secrets/default.nix index 61e1b92116cc843704101f4620963e6c2ebff7bb..e2904a3e00a21a9904186c48e89ab31bd8eba635 100644 GIT binary patch literal 1662 zcmZQ@_Y83kiVO&0_^CYOx6USw^S^!+eQthe$@NFmQgQM2hs(Dsbc$=Sy0J#_U&;S@ zIZ}Bl4d~3U+YihMJXvgw*7xfdSRR}-- zo7(qxo^j@{|GRfQiLKxGLNM#WycF42lb)LWJSH73*XI}!eeF;3|NR|nww>Rlc|@+T zN@BH3SOMoHH52J$#$S`CywhfSx_sw@he~%89_K$2shY;axJ|p_NafqZ6B!d)k9M5C>za`3zEH@*LLud)=Je?O z%5JL7rx~xZKiBHf*zxY9vX;-UJ}u2n{%3A^wK5cx78b5P;-CLQYEFu%i01v%;rl8w zRySyWt?u?o70TaVcXmnB&elgvw(o-irEM2aZ~wJ!Dr=B`&b$4Y57_=ql?~ATHRs;S zsk?s{J~}pa=5*)F{?n`d37M5Lz(d*pxr# z1nvae{)_!=|J(VWWn;D1sZ7nL8L>U`)shV%ZL3c;8*Or6(G%WO?Y{epcQZw;`dXo$`>BI6`>;9sk%(kA|XRQ z^J;9|G-lu6-w}z?y}!Qj?m61FLHY8IHiocSiaHDa?U3Ezzt{>-*FDk2&wrmJUfPxb3O5 z_E_iTip^2NIiOKh?Q=S~nx3a!?)m~X4d`T9l2j~^44_}jib@VW~h?0MECO>0nR=#Fd zbb}*Cm0LpkKxbe|_Q&)EcHtcg-y`B}npM9~5YU^-`SOTvp;6@50=|$VDVom@nQr)B zZ?M0-QzJw4%Ac+0^F5(*cagWB!S#TD2GSE3XlctBN~QI4K3o<( z)qTnGEDw{YN&K6IEleKh%oV>Uzhujei6wXT9M@am9yj57i*}p8ZSVeKN16YYTRT^; z|Gbj>?ZOE!1fGh^&05hv@A;(UXU$hv>9|c{|ED`kVe7L;3)XtyWMo`=Y({(Yr)``K zyWe|MPTXQXXIg{tTkh_CJy{nwY&+(bo&NAsqE4o&!NsYvx3zv>zu?j-`fNkrol{R8 zb6X_$e~x9~A%1M*CxV&dsSqe{* zDad1daZmMvWFrUj--R=dr!6;Mx<<)!@?38Q>-%X2Tf<#{T)box#Ql+Rg2!5_0e2K?K2 zOmtuM13%`a!YA|g{W~hl_g1#RICK6cZlT%FSN}ZPp41ePc#w1XrxZ7fcE2@whTHc4 zcn~L=I!|s#mCJ*he7j1Q2r+7v?0@0oe7Pp@w)2wtyQCSEb3L-FJ=Ar%_P^8S%QZVI zGWGYBwY>pO2f4O1UA}ad^YOpKcHN)nWUGbkuAkJqvrP8EwmKE7Bq^b%OeLng?|fxK zCQ2A_H(j&2T+<<4^~$$2O5u+8$%?weQxzIgj3i7t6KBobSsWVPyrwDh4&Q0Z-)oEv z|Mj{FYR|8aIp)w**xH^^+~eYsk<6*#{qqd#XI-ls^}8$-r!kZ~S@@*sEoWA?$rssY zt84#Vn|?AmV(pny?fKgU9_4%NeQqe_rL#WjURv73m(q!G%bYg2%&1wvS+w^ELu3NG o<*LbX|ANl!o#*}3Hs|ArZn<8v%0Z;@ltN;K2 literal 1858 zcmZQ@_Y83kiVO&0D2QgaV{us*V6^$6=A4HcgacN+=C-nm%>Gka^X@}gI%AfNfB09W z^Too)L`q9yKeuIkt5rI&UE43K=GLqnnXPj~XY_v#>I~!%JhJobMQeU9iL?dUM&+X7 z;Rd@6eGNUXUiLgyy1Js~%C=wM?|SOoR7oz?Ze&&SdD?t7ZqWwMhc5$_R=#XduWP-K z`1bLtTbi1pjnfwL-k7tk`0r{ZD=(X6+8MH!3j~vkFNT!%bcJl#a5#P)n?yzZ%n9WN z>LOp*AH81ga+>kZ!~MrYUUrsT((L(q=wP?lE6c1bzwn_PZ%TaF1nQ_5ileA_U^*#zi-Z*aW6l?#ZZ8E*TX4O z0-uJ97OvV6SRFqhbFDo|%Wue}=3Tp>E68-w=s=cQ8`riu`jy#=_qX3alxc7> zPW8LkpTK9!7d+C4Q~nebY5$Nf;r&X1U9mMsB>via3cdd1=c=qyl<8ck|4Gi^$ty0g z)MYorZa8c{@-k=7XGSKc8;NT3RqvO%u70xoQO>ciD@Dx~uB%>ad&H-+c*m2893E9q zXDt#_d6K5a6tryZmGuX;9)3%x*i_t+{7Lsr`wJx*-_0taE_t=m)tWoSSuU3FWc;<9 zVt#GrLfi9G{%Ichd}xNL;FhUAvzIRW(W>h{`{6|ik3*NPYA6*ah2(`ViGEw(b}!w_ zeRVB++U|paJ~J-NnRebn`4UHx)*gSWuhr>y{2$9D>@G_vJDqsCWWPmp$YswbIU;wa z_53*{{CcyGaNwd#g?~(iR=LQW>0NW`=@zl5dp#Eph`de>fAQdHliV9cz32JMF83Xo zxqiWmyDPgFW?x-;zVp@H2N!nD7uhE&Sv}?Q{d3}<-cGQ6+G!Heuqw0Mf6s#*Qx}+? zJo7<0RB3hc3#0AR7hM!!-6Z<;hS|(}5q|7EXA91*39gzg)42QwSE3x-iJ9&E&CCAt zyg2dy=`YQ#*Jkt7-IlynG%W-mr_S>}>|oM7VPeH!w{1Op?7XM5%P(BwvbXnrr@L6}ci(L-ue*~O zZ+#b^d*|!+I_XsfPw)2FoLn)}AY2>T}jQCHH>*DOI`N*M&P;bc-%M>Jc}) zvvvD1apMU^XAf5_%A0zGvH17;>@6{z%Pvn!u+6=2%J#F--8UB)biM@kAI;%f@L9gz zI#Z9~ z*m0J3N#;zab4SIJk6ld6?t8)9vtv?;mct+WjP+eQUu6F@tZuq@S=HV@T7R1<@3qwz z|KGlRK+nQZ-=JX1#yOWlWbS-k#WXQMdiAn28Sh7*Ege+8&EneQvxx8h*Szl8p?>e* zW$k!5Cuhg>btPf3A1AI4^j>jYf4af`MV4O_A97pp^u3&PG+DX&d;VOjekslBZDrR2 zlFDZ5%`{LgXG+Oaf7S%bNU!GBIKXiw zktcJ*(OVy!8JEVtnRX#Ys5*52N2#3>7jM<>$xG;abC~f7Uz*O>w`Z^4y&m`YYQN#u z--?S?rsXY}pvfo2-E>EO()&ewvy!K&%{_5SV)FI~(|wx!duC=Fs(a(MZ`=Ou;vo{> z_Hid13XYoWRB}#DW~!D8-z@3sE72lNGq#7d9GX@9l~bz4@xt9x$_j=_S*zl+1A~7D z>F&;rblyGRO4@J3ln-%h&-`5YOn7@1J-fW&E=`d~bPd|63Ona6yJD<+-z8J*1%jBg%Qs%8{;{)?dv%jxC?Y;OM z3-e|3jjj>Z{aQEpFBS7>vn(~Z za=AQqeYA1Ps(&e$oqs27*l}QPGk5t;b(a$3w+4S0j|bLrG5=Wi-@7`jfrYW6tAFOk z2sNR{oUby!Zu{8oSw3O@(+$UGEPpmTlmAdcv+%3-hzP!`o0-pb&Ft#bJ8bs*D8J~d z-z5#^FCM-8vuS}#<5SgVlN;2$thIZ8Pg0+=`0S*KZvLFU@7<1-@3p$QJ#zX&S?+mq rTh7mod;KG8nnr#=RA_E^=hZ!`8~&!smt5FaKJ($LGR>&CV4b}HFBqP9 From 12621e5dcf4c0325209ef9abb885448abc7c4f6c Mon Sep 17 00:00:00 2001 From: Bun Date: Thu, 29 May 2025 17:28:32 -0400 Subject: [PATCH 59/98] Add back wpaperd --- modules/home/wms/programs/default.nix | 1 + modules/home/wms/programs/wpaperd/default.nix | 12 ++++++++++++ .../theme => programs/wpaperd}/wallpapers/1.png | Bin .../theme => programs/wpaperd}/wallpapers/2.png | Bin .../theme => programs/wpaperd}/wallpapers/3.png | Bin modules/home/wms/sway/theme/default.nix | 9 --------- 6 files changed, 13 insertions(+), 9 deletions(-) create mode 100644 modules/home/wms/programs/wpaperd/default.nix rename modules/home/wms/{sway/theme => programs/wpaperd}/wallpapers/1.png (100%) rename modules/home/wms/{sway/theme => programs/wpaperd}/wallpapers/2.png (100%) rename modules/home/wms/{sway/theme => programs/wpaperd}/wallpapers/3.png (100%) diff --git a/modules/home/wms/programs/default.nix b/modules/home/wms/programs/default.nix index 498b1e3f..4ab6f6e3 100644 --- a/modules/home/wms/programs/default.nix +++ b/modules/home/wms/programs/default.nix @@ -10,6 +10,7 @@ ./swaylock ./waybar ./wlsunset + ./wpaperd ]; home.packages = with pkgs; lib.mkIf config.home.desktop.enable [ diff --git a/modules/home/wms/programs/wpaperd/default.nix b/modules/home/wms/programs/wpaperd/default.nix new file mode 100644 index 00000000..2b51e11e --- /dev/null +++ b/modules/home/wms/programs/wpaperd/default.nix @@ -0,0 +1,12 @@ +{ config, ... }: +{ + services.wpaperd = { + enable = config.home.desktop.enable; + settings = { + default.mode = "stretch"; + any.path = builtins.toString ./wallpapers/1.png; + "${config.displays.tower2}".path = builtins.toString ./wallpapers/2.png; + "${config.displays.tower3}".path = builtins.toString ./wallpapers/3.png; + }; + }; +} diff --git a/modules/home/wms/sway/theme/wallpapers/1.png b/modules/home/wms/programs/wpaperd/wallpapers/1.png similarity index 100% rename from modules/home/wms/sway/theme/wallpapers/1.png rename to modules/home/wms/programs/wpaperd/wallpapers/1.png diff --git a/modules/home/wms/sway/theme/wallpapers/2.png b/modules/home/wms/programs/wpaperd/wallpapers/2.png similarity index 100% rename from modules/home/wms/sway/theme/wallpapers/2.png rename to modules/home/wms/programs/wpaperd/wallpapers/2.png diff --git a/modules/home/wms/sway/theme/wallpapers/3.png b/modules/home/wms/programs/wpaperd/wallpapers/3.png similarity index 100% rename from modules/home/wms/sway/theme/wallpapers/3.png rename to modules/home/wms/programs/wpaperd/wallpapers/3.png diff --git a/modules/home/wms/sway/theme/default.nix b/modules/home/wms/sway/theme/default.nix index b28ebae3..94e997a9 100644 --- a/modules/home/wms/sway/theme/default.nix +++ b/modules/home/wms/sway/theme/default.nix @@ -53,14 +53,5 @@ inner = 5; smartGaps = true; }; - - output = { - "*".bg = "${builtins.toString ./wallpapers/1.png} fill"; - - "${config.displays.tower2}".bg = "${builtins.toString ./wallpapers/2.png} fill"; - "${config.displays.tower3}".bg = "${builtins.toString ./wallpapers/3.png} fill"; - - "${config.displays.detritus2}".bg = "${builtins.toString ./wallpapers/2.png} fill"; - }; }; } From a78189de25533d5ff2f07f9b3026d6e580d4c5d6 Mon Sep 17 00:00:00 2001 From: Bun Date: Thu, 29 May 2025 17:31:11 -0400 Subject: [PATCH 60/98] Use center instead of fill for wpaperd --- modules/home/wms/programs/wpaperd/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/home/wms/programs/wpaperd/default.nix b/modules/home/wms/programs/wpaperd/default.nix index 2b51e11e..b8d125f9 100644 --- a/modules/home/wms/programs/wpaperd/default.nix +++ b/modules/home/wms/programs/wpaperd/default.nix @@ -3,7 +3,7 @@ services.wpaperd = { enable = config.home.desktop.enable; settings = { - default.mode = "stretch"; + default.mode = "center"; any.path = builtins.toString ./wallpapers/1.png; "${config.displays.tower2}".path = builtins.toString ./wallpapers/2.png; "${config.displays.tower3}".path = builtins.toString ./wallpapers/3.png; From f49316e6003072945fc1d7e7d808890549558905 Mon Sep 17 00:00:00 2001 From: Bun Date: Thu, 29 May 2025 17:36:02 -0400 Subject: [PATCH 61/98] Stop using unstable packages where they aren't necessary --- .../home/programs/misc/avtools/default.nix | 7 ++++--- .../misc/gaming/emulators/default.nix | 21 ++++++++----------- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/modules/home/programs/misc/avtools/default.nix b/modules/home/programs/misc/avtools/default.nix index 6f4d9356..31838e31 100644 --- a/modules/home/programs/misc/avtools/default.nix +++ b/modules/home/programs/misc/avtools/default.nix @@ -1,13 +1,14 @@ -{ config, lib, pkgs, pkgsUnstable, ... }: +{ config, lib, pkgs, ... }: { config = lib.mkIf config.home.desktop.enable { - home.packages = (with pkgs; [ + home.packages = with pkgs; [ ffmpeg ffmpegthumbnailer playerctl puddletag pulsemixer - ]) ++ (with pkgsUnstable; [ spotdl ]); + spotdl + ]; home.shellAliases.spotopus = "spotdl --m3u --format opus"; }; diff --git a/modules/home/programs/misc/gaming/emulators/default.nix b/modules/home/programs/misc/gaming/emulators/default.nix index 98f32035..53448024 100644 --- a/modules/home/programs/misc/gaming/emulators/default.nix +++ b/modules/home/programs/misc/gaming/emulators/default.nix @@ -1,14 +1,11 @@ -{ config, lib, pkgs, pkgsUnstable, ... }: +{ config, lib, pkgs, ... }: { - config = lib.mkIf config.home.gaming.enable { - home.packages = (with pkgs; [ - cemu - dolphin-emu-beta - duckstation - pcsx2 - ]) ++ (with pkgsUnstable; [ - azahar - ryubing - ]); - }; + home.packages = with pkgs; lib.mkIf config.home.gaming.enable [ + azahar + cemu + dolphin-emu-beta + duckstation + pcsx2 + ryubing + ]; } From 200bf7e711078e4dad9eb844a18f428e25454102 Mon Sep 17 00:00:00 2001 From: Bun Date: Thu, 29 May 2025 22:15:35 -0400 Subject: [PATCH 62/98] Add basic mycelium, change some hardware and browser stuff --- hosts/kitty/network/default.nix | 9 --- hosts/midas/network/default.nix | 27 -------- hosts/tower/network/default.nix | 9 --- .../home/programs/gui/librewolf/default.nix | 65 ++++++++++++++----- modules/system/devices/networking/default.nix | 1 + .../devices/networking/mycelium/default.nix | 16 +++++ 6 files changed, 64 insertions(+), 63 deletions(-) create mode 100644 modules/system/devices/networking/mycelium/default.nix diff --git a/hosts/kitty/network/default.nix b/hosts/kitty/network/default.nix index 7775a2fe..84a3df61 100644 --- a/hosts/kitty/network/default.nix +++ b/hosts/kitty/network/default.nix @@ -9,14 +9,5 @@ address = "10.1.0.1"; interface = "eno1"; }; - - vlans.internal = { - id=100; - interface="eno1"; - }; - interfaces.internal.ipv4.addresses = [{ - address = "11.0.0.2"; - prefixLength = 8; - }]; }; } diff --git a/hosts/midas/network/default.nix b/hosts/midas/network/default.nix index 332d8b2e..d3053f3d 100644 --- a/hosts/midas/network/default.nix +++ b/hosts/midas/network/default.nix @@ -9,33 +9,6 @@ address = "10.1.0.1"; interface = "enp0s31f6"; }; - - vlans.internal = { - id=100; - interface="enp0s31f6"; - }; - interfaces.internal.ipv4.addresses = [{ - address = "11.0.0.1"; - prefixLength = 8; - }]; - - nftables.tables.forwarding = { - family = "inet"; - content = '' - chain incoming { - type nat hook prerouting priority dstnat; policy accept; - tcp dport 2211 dnat ip to 11.0.0.100:22 comment "Tower SSH" - tcp dport 2222 dnat ip to 11.0.0.2:22 comment "Kitty SSH" - - udp dport { 27005, 27015 } dnat ip to 11.0.0.100 comment "PC Hosted Games" - } - - chain forward { - type nat hook postrouting priority 100; policy accept; - masquerade - } - ''; - }; }; # Enable IP forwarding for the server configuration diff --git a/hosts/tower/network/default.nix b/hosts/tower/network/default.nix index a14294f2..ace220c6 100644 --- a/hosts/tower/network/default.nix +++ b/hosts/tower/network/default.nix @@ -10,15 +10,6 @@ interface = "enp42s0"; }; - vlans.internal = { - id=100; - interface="enp42s0"; - }; - interfaces.internal.ipv4.addresses = [{ - address = "11.0.0.100"; - prefixLength = 8; - }]; - firewall.allowedUDPPorts = [ 27015 ]; }; } diff --git a/modules/home/programs/gui/librewolf/default.nix b/modules/home/programs/gui/librewolf/default.nix index 9ea04edb..e28e01ac 100644 --- a/modules/home/programs/gui/librewolf/default.nix +++ b/modules/home/programs/gui/librewolf/default.nix @@ -6,8 +6,8 @@ package = pkgs.librewolf; profiles.default = { isDefault = true; - containersForce = true; + containersForce = true; containers = { home = { color = "purple"; @@ -21,26 +21,56 @@ }; }; - extensions.packages = with pkgs.nur.repos.rycee.firefox-addons; [ - bitwarden - darkreader - return-youtube-dislikes - simple-tab-groups - sponsorblock - ublock-origin - violentmonkey - ]; + bookmarks = { + force = true; + settings = [ + { + name = "NixFox"; + url = "https://www.nixfox.ca"; + } + { + name = "Luna"; + url = "https://www.lunamoonlight.xyz"; + } + { + name = "Freecorn"; + url = "https://freecorn1854.win"; + } + { + name = "Bloxelcom"; + url = "https://www.bloxelcom.net"; + } + { + name = "YouTube"; + url = "https://www.kernel.org"; + } + { + name = "NixOS Wiki"; + url = "https://nixos.wiki"; + } + { + name = "Kernel"; + url = "https://www.kernel.org"; + } + ]; + }; + + extensions = { + force = true; + packages = with pkgs.nur.repos.rycee.firefox-addons; [ + bitwarden + darkreader + return-youtube-dislikes + simple-tab-groups + sponsorblock + ublock-origin + violentmonkey + ]; + }; search = { force = true; default = "ecosia"; - order = [ - "ecosia" - "nixpkgs" - "mynixos" - "youtube" - "spotify" - ]; engines = { "ecosia" = { urls = [{ @@ -166,7 +196,6 @@ "privacy.clearOnShutdown.cookies" = false; "privacy.clearOnShutdown_v2.cookiesAndStorage" = false; "privacy.fingerprintingProtection" = true; - "privacy.firstparty.isolate" = true; "privacy.globalprivacycontrol.enabled" = true; "privacy.globalprivacycontrol.functionality.enabled" = true; "privacy.resistFingerprinting" = true; diff --git a/modules/system/devices/networking/default.nix b/modules/system/devices/networking/default.nix index 8e6944f9..5ac70401 100644 --- a/modules/system/devices/networking/default.nix +++ b/modules/system/devices/networking/default.nix @@ -1,6 +1,7 @@ { config, ... }: { imports = [ + ./mycelium ./nameservers ./wireless ]; diff --git a/modules/system/devices/networking/mycelium/default.nix b/modules/system/devices/networking/mycelium/default.nix new file mode 100644 index 00000000..0d178877 --- /dev/null +++ b/modules/system/devices/networking/mycelium/default.nix @@ -0,0 +1,16 @@ +{ ... }: +{ + services.mycelium = { + enable = true; + openFirewall = true; + addHostedPublicNodes = false; + peers = [ + "quic://[2607:fea8:431d:cba5:16bf:db31:5797:4170]:9651" + "quic://[2607:fea8:431d:cba5:d104:b60a:c847:9797]:9651" + "quic://[2607:fea8:431d:cba5:1963:58fa:50f4:f841]:9651" + "quic://150.230.26.224:9651" + ]; + }; + + environment.persistence."/persist".directories = [ "/var/lib/private/mycelium" ]; +} From 48b55af6959f7c764fc6785c515533d8ad29fadf Mon Sep 17 00:00:00 2001 From: Bun Date: Thu, 29 May 2025 23:29:05 -0400 Subject: [PATCH 63/98] Update all to mycelium ips --- hosts/kitty/filesystems/default.nix | 6 +++--- hosts/midas/filesystems/default.nix | 6 +++--- hosts/tower/filesystems/default.nix | 8 ++++---- .../home/programs/terminal/ssh/default.nix | 20 +++++-------------- .../devices/networking/mycelium/default.nix | 2 ++ .../networking/mycelium/ips/default.nix | 13 ++++++++++++ .../services/general/ssh/fail2ban/default.nix | 1 - .../system/services/server/nfs/default.nix | 4 +++- .../services/server/nginx/rtmp/default.nix | 5 ++++- .../services/server/owncast/default.nix | 4 +++- 10 files changed, 40 insertions(+), 29 deletions(-) create mode 100644 modules/system/devices/networking/mycelium/ips/default.nix diff --git a/hosts/kitty/filesystems/default.nix b/hosts/kitty/filesystems/default.nix index 8354a0ab..fff08fd7 100644 --- a/hosts/kitty/filesystems/default.nix +++ b/hosts/kitty/filesystems/default.nix @@ -1,6 +1,6 @@ { config, ... }: { - fileSystems = { + fileSystems = with config.services.mycelium.ips; { "/persist/storage" = { device = "/dev/disk/by-uuid/edd3e293-1aff-4fc0-96fa-4e17d6cccfca"; fsType = "btrfs"; @@ -12,7 +12,7 @@ # Network mounts "/home/${config.sysusers.main}/Network/Midas" = { - device = "11.0.0.1:/storage"; + device = "[${midas}]:/storage"; fsType = "nfs4"; options = [ "x-systemd.automount" @@ -21,7 +21,7 @@ ]; }; "/home/${config.sysusers.main}/Network/Prophet" = { - device = "mx.nixfox.ca:/storage"; + device = "[${prophet}]:/storage";; fsType = "nfs4"; options = [ "noauto" diff --git a/hosts/midas/filesystems/default.nix b/hosts/midas/filesystems/default.nix index 0abb186a..bdeba56d 100644 --- a/hosts/midas/filesystems/default.nix +++ b/hosts/midas/filesystems/default.nix @@ -1,6 +1,6 @@ -{ ... }: +{ config, ... }: { - fileSystems = { + fileSystems = with config.services.mycelium.ips; { "/persist" = { device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325"; fsType = "btrfs"; @@ -11,7 +11,7 @@ ]; }; "/kitty" = { - device = "11.0.0.2:/storage/bun"; + device = "[${kitty}]:/storage/bun"; fsType = "nfs4"; options = [ "noauto" diff --git a/hosts/tower/filesystems/default.nix b/hosts/tower/filesystems/default.nix index 18b0e1ac..e8a8fc50 100644 --- a/hosts/tower/filesystems/default.nix +++ b/hosts/tower/filesystems/default.nix @@ -1,6 +1,6 @@ { config, ... }: { - fileSystems = { + fileSystems = with config.services.mycelium.ips; { # Games and such "/mnt/Linux1" = { device = "/dev/disk/by-uuid/b2901f8c-ffda-4b88-bb63-a9ea0c96ccb4"; @@ -40,7 +40,7 @@ # Network mounts "/home/${config.sysusers.main}/Network/Midas" = { - device = "11.0.0.1:/storage"; + device = "[${midas}]:/storage"; fsType = "nfs4"; options = [ "noauto" @@ -49,7 +49,7 @@ ]; }; "/home/${config.sysusers.main}/Network/Kitty" = { - device = "11.0.0.2:/storage/bun"; + device = "[${kitty}]:/storage/bun"; fsType = "nfs4"; options = [ "noauto" @@ -58,7 +58,7 @@ ]; }; "/home/${config.sysusers.main}/Network/Prophet" = { - device = "mx.nixfox.ca:/storage"; + device = "[${prophet}]:/storage"; fsType = "nfs4"; options = [ "noauto" diff --git a/modules/home/programs/terminal/ssh/default.nix b/modules/home/programs/terminal/ssh/default.nix index aa68a303..0e1f73e9 100644 --- a/modules/home/programs/terminal/ssh/default.nix +++ b/modules/home/programs/terminal/ssh/default.nix @@ -4,22 +4,12 @@ enable = true; addKeysToAgent = "yes"; compression = true; - matchBlocks = with lib.hm.dag; { + matchBlocks = { # Personal servers - nixfox = { - match = ''canonical host "*.nixfox.ca"''; - user = config.home.username; - }; - midas = { - hostname = "sv.nixfox.ca"; - }; - kitty = { - hostname = "sv.nixfox.ca"; - port = 2222; - }; - prophet = { - hostname = "mx.nixfox.ca"; - }; + tower.hostname = "577:84d1:b682:9ac3:b987:b78e:33d9:2060"; + midas.hostname = "538:e163:87ba:f847:3646:18b6:6b01:d8f8"; + kitty.hostname = "2607:fea8:431d:cba5:37b6:92f8:5be:7c56"; + prophet.hostname = "42f:2737:2aed:4dee:cbe4:3c73:1918:ad9b"; # Misc seneca = { diff --git a/modules/system/devices/networking/mycelium/default.nix b/modules/system/devices/networking/mycelium/default.nix index 0d178877..726b51de 100644 --- a/modules/system/devices/networking/mycelium/default.nix +++ b/modules/system/devices/networking/mycelium/default.nix @@ -1,5 +1,7 @@ { ... }: { + imports = [ ./ips ]; + services.mycelium = { enable = true; openFirewall = true; diff --git a/modules/system/devices/networking/mycelium/ips/default.nix b/modules/system/devices/networking/mycelium/ips/default.nix new file mode 100644 index 00000000..4d94e0cb --- /dev/null +++ b/modules/system/devices/networking/mycelium/ips/default.nix @@ -0,0 +1,13 @@ +{ config, lib, ... }: +{ + options.services.mycelium.ips = lib.mkOption { + type = lib.types.attrs; + }; + + config.services.mycelium.ips = { + tower = "577:84d1:b682:9ac3:b987:b78e:33d9:2060"; + midas = "538:e163:87ba:f847:3646:18b6:6b01:d8f8"; + kitty = "2607:fea8:431d:cba5:37b6:92f8:5be:7c56"; + prophet = "42f:2737:2aed:4dee:cbe4:3c73:1918:ad9b"; + }; +} diff --git a/modules/system/services/general/ssh/fail2ban/default.nix b/modules/system/services/general/ssh/fail2ban/default.nix index 15f4349d..acc00f8c 100644 --- a/modules/system/services/general/ssh/fail2ban/default.nix +++ b/modules/system/services/general/ssh/fail2ban/default.nix @@ -4,7 +4,6 @@ enable = true; maxretry = 5; bantime = "10m"; - ignoreIP = [ "11.0.0.0/8" ]; }; environment.persistence."/persist".directories = [ "/var/lib/fail2ban" ]; diff --git a/modules/system/services/server/nfs/default.nix b/modules/system/services/server/nfs/default.nix index b08ba2a4..4457c434 100644 --- a/modules/system/services/server/nfs/default.nix +++ b/modules/system/services/server/nfs/default.nix @@ -4,6 +4,8 @@ config = lib.mkIf config.services.nfs.server.enable { services.nfs.server.exports = "/storage *(rw)"; - networking.firewall.extraInputRules = "ip saddr { 10.0.0.0/8, 11.0.0.0/8, ${config.secrets.ips.bun} } tcp dport 2049 accept"; + networking.firewall.extraInputRules = with config.services.mycelium.ips; '' + ip6 saddr { ${tower}, ${midas}, ${kitty}, ${prophet} } tcp dport 2049 accept + ''; }; } diff --git a/modules/system/services/server/nginx/rtmp/default.nix b/modules/system/services/server/nginx/rtmp/default.nix index 4a619e05..faa91cf8 100644 --- a/modules/system/services/server/nginx/rtmp/default.nix +++ b/modules/system/services/server/nginx/rtmp/default.nix @@ -23,7 +23,10 @@ } ''; }; - networking.firewall.extraInputRules = "ip saddr { 11.0.0.0/8, ${config.secrets.ips.luna}, ${config.secrets.ips.corn} } tcp dport 1935 accept"; + networking.firewall.extraInputRules = with config.services.mycelium.ips; '' + ip6 saddr ${tower} tcp dport 1935 accept + ip saddr { ${config.secrets.ips.luna}, ${config.secrets.ips.corn} } tcp dport 1935 accept + ''; systemd.services.nginx.serviceConfig.ReadWritePaths = [ "/var/www/landing-page/streams/hls/" ]; }; } diff --git a/modules/system/services/server/owncast/default.nix b/modules/system/services/server/owncast/default.nix index b98f402c..a4337e34 100644 --- a/modules/system/services/server/owncast/default.nix +++ b/modules/system/services/server/owncast/default.nix @@ -7,7 +7,9 @@ port = 8060; rtmp-port = 1945; }; - networking.firewall.extraInputRules = "ip saddr 11.0.0.0/8 tcp dport 1945 accept"; + networking.firewall.extraInputRules = '' + ip6 saddr ${tower} tcp dport 1935 accept + ''; environment.persistence."/persist".directories = [ "/var/lib/owncast" ]; }; } From c1819b68a1234899308a1f402d564bb684e35c2c Mon Sep 17 00:00:00 2001 From: Bun Date: Thu, 29 May 2025 23:40:11 -0400 Subject: [PATCH 64/98] Update some of the ips I missed oopsies --- hosts/detritus/filesystems/default.nix | 11 ++++------- hosts/intuos/filesystems/default.nix | 9 +++++---- hosts/kitty/default.nix | 1 - hosts/kitty/network/default.nix | 13 ------------- hosts/midas/network/default.nix | 3 --- hosts/tower/default.nix | 1 - hosts/tower/network/default.nix | 15 --------------- .../system/services/server/owncast/default.nix | 2 +- 8 files changed, 10 insertions(+), 45 deletions(-) delete mode 100644 hosts/kitty/network/default.nix delete mode 100644 hosts/tower/network/default.nix diff --git a/hosts/detritus/filesystems/default.nix b/hosts/detritus/filesystems/default.nix index d565576d..26ed32b1 100644 --- a/hosts/detritus/filesystems/default.nix +++ b/hosts/detritus/filesystems/default.nix @@ -1,6 +1,6 @@ { config, ... }: { - fileSystems = { + fileSystems = with config.services.mycelium.ips; { "/persist/storage" = { device = "/dev/disk/by-uuid/d0d6783f-ad51-4d85-b8a9-3374f6460ef6"; fsType = "btrfs"; @@ -22,30 +22,27 @@ # Network mounts "/home/${config.sysusers.main}/Network/Midas" = { - device = "10.2.0.1:/storage"; + device = "[${midas}]:/storage"; fsType = "nfs4"; options = [ - "noatime" "noauto" "soft" "x-systemd.automount" ]; }; "/home/${config.sysusers.main}/Network/Kitty" = { - device = "10.2.0.2:/storage/bun"; + device = "[${kitty}]:/storage/bun"; fsType = "nfs4"; options = [ - "noatime" "noauto" "soft" "x-systemd.automount" ]; }; "/home/${config.sysusers.main}/Network/Prophet" = { - device = "mx.nixfox.ca:/storage"; + device = "[${prophet}]:/storage"; fsType = "nfs4"; options = [ - "noatime" "noauto" "soft" "x-systemd.automount" diff --git a/hosts/intuos/filesystems/default.nix b/hosts/intuos/filesystems/default.nix index e17b5eec..577b5d27 100644 --- a/hosts/intuos/filesystems/default.nix +++ b/hosts/intuos/filesystems/default.nix @@ -1,8 +1,9 @@ { config, ... }: { - fileSystems = { + fileSystems = with config.services.mycelium.ips; { + # Network mounts "/home/${config.sysusers.main}/Network/Midas" = { - device = "10.2.0.1:/storage"; + device = "[${midas}]:/storage"; fsType = "nfs4"; options = [ "noauto" @@ -11,7 +12,7 @@ ]; }; "/home/${config.sysusers.main}/Network/Kitty" = { - device = "10.2.0.2:/storage/bun"; + device = "[${kitty}]:/storage/bun"; fsType = "nfs4"; options = [ "noauto" @@ -20,7 +21,7 @@ ]; }; "/home/${config.sysusers.main}/Network/Prophet" = { - device = "mx.nixfox.ca:/storage"; + device = "[${prophet}]:/storage"; fsType = "nfs4"; options = [ "noauto" diff --git a/hosts/kitty/default.nix b/hosts/kitty/default.nix index 64f97ede..3fb0b916 100644 --- a/hosts/kitty/default.nix +++ b/hosts/kitty/default.nix @@ -5,7 +5,6 @@ ./disko ./filesystems ./hardware - ./network ./user ../../modules/system ]; diff --git a/hosts/kitty/network/default.nix b/hosts/kitty/network/default.nix deleted file mode 100644 index 84a3df61..00000000 --- a/hosts/kitty/network/default.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ ... }: -{ - networking = { - interfaces."eno1".ipv4.addresses = [{ - address = "10.2.0.2"; - prefixLength = 8; - }]; - defaultGateway = { - address = "10.1.0.1"; - interface = "eno1"; - }; - }; -} diff --git a/hosts/midas/network/default.nix b/hosts/midas/network/default.nix index d3053f3d..32932ea6 100644 --- a/hosts/midas/network/default.nix +++ b/hosts/midas/network/default.nix @@ -10,7 +10,4 @@ interface = "enp0s31f6"; }; }; - - # Enable IP forwarding for the server configuration - boot.kernel.sysctl."net.ipv4.ip_forward" = 1; } diff --git a/hosts/tower/default.nix b/hosts/tower/default.nix index 362aba9c..1cfb0a01 100644 --- a/hosts/tower/default.nix +++ b/hosts/tower/default.nix @@ -5,7 +5,6 @@ ./disko ./filesystems ./hardware - ./network ./user ../../modules/system ]; diff --git a/hosts/tower/network/default.nix b/hosts/tower/network/default.nix deleted file mode 100644 index ace220c6..00000000 --- a/hosts/tower/network/default.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ ... }: -{ - networking = { - interfaces."enp42s0".ipv4.addresses = [{ - address = "10.2.0.100"; - prefixLength = 8; - }]; - defaultGateway = { - address = "10.1.0.1"; - interface = "enp42s0"; - }; - - firewall.allowedUDPPorts = [ 27015 ]; - }; -} diff --git a/modules/system/services/server/owncast/default.nix b/modules/system/services/server/owncast/default.nix index a4337e34..d689b718 100644 --- a/modules/system/services/server/owncast/default.nix +++ b/modules/system/services/server/owncast/default.nix @@ -7,7 +7,7 @@ port = 8060; rtmp-port = 1945; }; - networking.firewall.extraInputRules = '' + networking.firewall.extraInputRules = with config.services.mycelium.ips; '' ip6 saddr ${tower} tcp dport 1935 accept ''; environment.persistence."/persist".directories = [ "/var/lib/owncast" ]; From 3bf365966c0ad0ec510bbcda37215c3a676a86dd Mon Sep 17 00:00:00 2001 From: Bun Date: Thu, 29 May 2025 23:56:22 -0400 Subject: [PATCH 65/98] Update Kitty IP --- modules/home/programs/terminal/ssh/default.nix | 2 +- modules/system/devices/networking/mycelium/ips/default.nix | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/home/programs/terminal/ssh/default.nix b/modules/home/programs/terminal/ssh/default.nix index 0e1f73e9..59fe0019 100644 --- a/modules/home/programs/terminal/ssh/default.nix +++ b/modules/home/programs/terminal/ssh/default.nix @@ -8,7 +8,7 @@ # Personal servers tower.hostname = "577:84d1:b682:9ac3:b987:b78e:33d9:2060"; midas.hostname = "538:e163:87ba:f847:3646:18b6:6b01:d8f8"; - kitty.hostname = "2607:fea8:431d:cba5:37b6:92f8:5be:7c56"; + kitty.hostname = "53f:dc2d:80c9:3ca2:4b15:ef4d:38a0:c868"; prophet.hostname = "42f:2737:2aed:4dee:cbe4:3c73:1918:ad9b"; # Misc diff --git a/modules/system/devices/networking/mycelium/ips/default.nix b/modules/system/devices/networking/mycelium/ips/default.nix index 4d94e0cb..30b625f7 100644 --- a/modules/system/devices/networking/mycelium/ips/default.nix +++ b/modules/system/devices/networking/mycelium/ips/default.nix @@ -7,7 +7,7 @@ config.services.mycelium.ips = { tower = "577:84d1:b682:9ac3:b987:b78e:33d9:2060"; midas = "538:e163:87ba:f847:3646:18b6:6b01:d8f8"; - kitty = "2607:fea8:431d:cba5:37b6:92f8:5be:7c56"; + kitty = "53f:dc2d:80c9:3ca2:4b15:ef4d:38a0:c868"; prophet = "42f:2737:2aed:4dee:cbe4:3c73:1918:ad9b"; }; } From 6a2fd7822090dad45c041e14458ca0f9e4baefec Mon Sep 17 00:00:00 2001 From: Bun Date: Fri, 30 May 2025 00:42:55 -0400 Subject: [PATCH 66/98] Add Jupiter to mycelium --- hosts/detritus/filesystems/default.nix | 1 + hosts/jupiter/filesystems/default.nix | 46 ++++++++++++++++--- .../home/programs/terminal/ssh/default.nix | 1 + modules/system/devices/networking/default.nix | 5 ++ .../networking/mycelium/ips/default.nix | 1 + .../system/services/server/nfs/default.nix | 2 +- .../services/server/nginx/rtmp/default.nix | 2 +- .../services/server/owncast/default.nix | 2 +- 8 files changed, 50 insertions(+), 10 deletions(-) diff --git a/hosts/detritus/filesystems/default.nix b/hosts/detritus/filesystems/default.nix index 26ed32b1..86a993b3 100644 --- a/hosts/detritus/filesystems/default.nix +++ b/hosts/detritus/filesystems/default.nix @@ -1,6 +1,7 @@ { config, ... }: { fileSystems = with config.services.mycelium.ips; { + # Local mounts "/persist/storage" = { device = "/dev/disk/by-uuid/d0d6783f-ad51-4d85-b8a9-3374f6460ef6"; fsType = "btrfs"; diff --git a/hosts/jupiter/filesystems/default.nix b/hosts/jupiter/filesystems/default.nix index 7c1feb2d..3ad7e4eb 100644 --- a/hosts/jupiter/filesystems/default.nix +++ b/hosts/jupiter/filesystems/default.nix @@ -1,11 +1,43 @@ { config, ... }: { - fileSystems."/mnt/Games" = { - device = "/dev/disk/by-uuid/cb109a85-846d-4417-9c50-a2279bd20803"; - fsType = "btrfs"; - options = [ - "nofail" - "nosuid" - ]; + fileSystems = { + # Local mounts + "/mnt/Games" = { + device = "/dev/disk/by-uuid/cb109a85-846d-4417-9c50-a2279bd20803"; + fsType = "btrfs"; + options = [ + "nofail" + "nosuid" + ]; + }; + + # Network mounts + "/home/${config.sysusers.main}/Network/Midas" = { + device = "[${midas}]:/storage"; + fsType = "nfs4"; + options = [ + "noauto" + "soft" + "x-systemd.automount" + ]; + }; + "/home/${config.sysusers.main}/Network/Kitty" = { + device = "[${kitty}]:/storage/bun"; + fsType = "nfs4"; + options = [ + "noauto" + "soft" + "x-systemd.automount" + ]; + }; + "/home/${config.sysusers.main}/Network/Prophet" = { + device = "[${prophet}]:/storage"; + fsType = "nfs4"; + options = [ + "noauto" + "soft" + "x-systemd.automount" + ]; + }; }; } diff --git a/modules/home/programs/terminal/ssh/default.nix b/modules/home/programs/terminal/ssh/default.nix index 59fe0019..4ac3a562 100644 --- a/modules/home/programs/terminal/ssh/default.nix +++ b/modules/home/programs/terminal/ssh/default.nix @@ -7,6 +7,7 @@ matchBlocks = { # Personal servers tower.hostname = "577:84d1:b682:9ac3:b987:b78e:33d9:2060"; + jupiter.hostname = "5ce:969c:40d1:9575:f5e:591d:c377:a20b"; midas.hostname = "538:e163:87ba:f847:3646:18b6:6b01:d8f8"; kitty.hostname = "53f:dc2d:80c9:3ca2:4b15:ef4d:38a0:c868"; prophet.hostname = "42f:2737:2aed:4dee:cbe4:3c73:1918:ad9b"; diff --git a/modules/system/devices/networking/default.nix b/modules/system/devices/networking/default.nix index 5ac70401..aed59229 100644 --- a/modules/system/devices/networking/default.nix +++ b/modules/system/devices/networking/default.nix @@ -17,4 +17,9 @@ enable = config.networking.useNetworkd; dnsovertls = "true"; }; + + systemd = { + services.NetworkManager-wait-online.enable = false; + network.wait-online.enable = false; + }; } diff --git a/modules/system/devices/networking/mycelium/ips/default.nix b/modules/system/devices/networking/mycelium/ips/default.nix index 30b625f7..18f9bd6e 100644 --- a/modules/system/devices/networking/mycelium/ips/default.nix +++ b/modules/system/devices/networking/mycelium/ips/default.nix @@ -6,6 +6,7 @@ config.services.mycelium.ips = { tower = "577:84d1:b682:9ac3:b987:b78e:33d9:2060"; + jupiter = "5ce:969c:40d1:9575:f5e:591d:c377:a20b"; midas = "538:e163:87ba:f847:3646:18b6:6b01:d8f8"; kitty = "53f:dc2d:80c9:3ca2:4b15:ef4d:38a0:c868"; prophet = "42f:2737:2aed:4dee:cbe4:3c73:1918:ad9b"; diff --git a/modules/system/services/server/nfs/default.nix b/modules/system/services/server/nfs/default.nix index 4457c434..c71175c1 100644 --- a/modules/system/services/server/nfs/default.nix +++ b/modules/system/services/server/nfs/default.nix @@ -5,7 +5,7 @@ config = lib.mkIf config.services.nfs.server.enable { services.nfs.server.exports = "/storage *(rw)"; networking.firewall.extraInputRules = with config.services.mycelium.ips; '' - ip6 saddr { ${tower}, ${midas}, ${kitty}, ${prophet} } tcp dport 2049 accept + ip6 saddr { ${tower}, ${jupiter}, ${midas}, ${kitty}, ${prophet} } tcp dport 2049 accept ''; }; } diff --git a/modules/system/services/server/nginx/rtmp/default.nix b/modules/system/services/server/nginx/rtmp/default.nix index faa91cf8..ca389beb 100644 --- a/modules/system/services/server/nginx/rtmp/default.nix +++ b/modules/system/services/server/nginx/rtmp/default.nix @@ -24,7 +24,7 @@ ''; }; networking.firewall.extraInputRules = with config.services.mycelium.ips; '' - ip6 saddr ${tower} tcp dport 1935 accept + ip6 saddr { ${tower}, ${jupiter} } tcp dport 1935 accept ip saddr { ${config.secrets.ips.luna}, ${config.secrets.ips.corn} } tcp dport 1935 accept ''; systemd.services.nginx.serviceConfig.ReadWritePaths = [ "/var/www/landing-page/streams/hls/" ]; diff --git a/modules/system/services/server/owncast/default.nix b/modules/system/services/server/owncast/default.nix index d689b718..4696fe89 100644 --- a/modules/system/services/server/owncast/default.nix +++ b/modules/system/services/server/owncast/default.nix @@ -8,7 +8,7 @@ rtmp-port = 1945; }; networking.firewall.extraInputRules = with config.services.mycelium.ips; '' - ip6 saddr ${tower} tcp dport 1935 accept + ip6 saddr { ${tower}, ${jupiter} } tcp dport 1935 accept ''; environment.persistence."/persist".directories = [ "/var/lib/owncast" ]; }; From 287dcdf54e4480ae01d675da6be6a2f4be04e8a3 Mon Sep 17 00:00:00 2001 From: Bun Date: Fri, 30 May 2025 00:43:48 -0400 Subject: [PATCH 67/98] Fix typo --- hosts/kitty/filesystems/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosts/kitty/filesystems/default.nix b/hosts/kitty/filesystems/default.nix index fff08fd7..d45a0867 100644 --- a/hosts/kitty/filesystems/default.nix +++ b/hosts/kitty/filesystems/default.nix @@ -21,7 +21,7 @@ ]; }; "/home/${config.sysusers.main}/Network/Prophet" = { - device = "[${prophet}]:/storage";; + device = "[${prophet}]:/storage"; fsType = "nfs4"; options = [ "noauto" From 367febd71a18ac748dcf3d87a1727e1d9fa1823b Mon Sep 17 00:00:00 2001 From: Bun Date: Fri, 30 May 2025 00:46:10 -0400 Subject: [PATCH 68/98] Fix missed line --- hosts/jupiter/filesystems/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosts/jupiter/filesystems/default.nix b/hosts/jupiter/filesystems/default.nix index 3ad7e4eb..de292804 100644 --- a/hosts/jupiter/filesystems/default.nix +++ b/hosts/jupiter/filesystems/default.nix @@ -1,6 +1,6 @@ { config, ... }: { - fileSystems = { + fileSystems = with config.services.mycelium.ips; { # Local mounts "/mnt/Games" = { device = "/dev/disk/by-uuid/cb109a85-846d-4417-9c50-a2279bd20803"; From f008eadc2fb6b0e8a098dcb9f650110b6d40741f Mon Sep 17 00:00:00 2001 From: Bun Date: Fri, 30 May 2025 01:28:01 -0400 Subject: [PATCH 69/98] Update Tower IP --- modules/system/devices/networking/mycelium/ips/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/system/devices/networking/mycelium/ips/default.nix b/modules/system/devices/networking/mycelium/ips/default.nix index 18f9bd6e..456e6577 100644 --- a/modules/system/devices/networking/mycelium/ips/default.nix +++ b/modules/system/devices/networking/mycelium/ips/default.nix @@ -5,7 +5,7 @@ }; config.services.mycelium.ips = { - tower = "577:84d1:b682:9ac3:b987:b78e:33d9:2060"; + tower = "4e4:535:9d47:f367:becd:6557:458d:5b1b"; jupiter = "5ce:969c:40d1:9575:f5e:591d:c377:a20b"; midas = "538:e163:87ba:f847:3646:18b6:6b01:d8f8"; kitty = "53f:dc2d:80c9:3ca2:4b15:ef4d:38a0:c868"; From ef3a258b1758be0c7df6ed9b2adf1fca6c064a48 Mon Sep 17 00:00:00 2001 From: Bun Date: Fri, 30 May 2025 01:54:24 -0400 Subject: [PATCH 70/98] Missed the ssh config oops --- modules/home/programs/terminal/ssh/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/home/programs/terminal/ssh/default.nix b/modules/home/programs/terminal/ssh/default.nix index 4ac3a562..bb0580a4 100644 --- a/modules/home/programs/terminal/ssh/default.nix +++ b/modules/home/programs/terminal/ssh/default.nix @@ -6,7 +6,7 @@ compression = true; matchBlocks = { # Personal servers - tower.hostname = "577:84d1:b682:9ac3:b987:b78e:33d9:2060"; + tower.hostname = "4e4:535:9d47:f367:becd:6557:458d:5b1b"; jupiter.hostname = "5ce:969c:40d1:9575:f5e:591d:c377:a20b"; midas.hostname = "538:e163:87ba:f847:3646:18b6:6b01:d8f8"; kitty.hostname = "53f:dc2d:80c9:3ca2:4b15:ef4d:38a0:c868"; From 56a402c7db9b8124aa0d31f5459099cc16b68cf3 Mon Sep 17 00:00:00 2001 From: Bun Date: Fri, 30 May 2025 03:04:25 -0400 Subject: [PATCH 71/98] Add Intuos --- modules/home/programs/terminal/ssh/default.nix | 1 + modules/system/devices/networking/mycelium/ips/default.nix | 1 + modules/system/services/server/nfs/default.nix | 2 +- modules/system/services/server/nginx/rtmp/default.nix | 2 +- modules/system/services/server/owncast/default.nix | 2 +- 5 files changed, 5 insertions(+), 3 deletions(-) diff --git a/modules/home/programs/terminal/ssh/default.nix b/modules/home/programs/terminal/ssh/default.nix index bb0580a4..ca73dbf3 100644 --- a/modules/home/programs/terminal/ssh/default.nix +++ b/modules/home/programs/terminal/ssh/default.nix @@ -7,6 +7,7 @@ matchBlocks = { # Personal servers tower.hostname = "4e4:535:9d47:f367:becd:6557:458d:5b1b"; + intuos.hostname = "40e:404:a427:da33:163e:97b3:a2a3:9ed4"; jupiter.hostname = "5ce:969c:40d1:9575:f5e:591d:c377:a20b"; midas.hostname = "538:e163:87ba:f847:3646:18b6:6b01:d8f8"; kitty.hostname = "53f:dc2d:80c9:3ca2:4b15:ef4d:38a0:c868"; diff --git a/modules/system/devices/networking/mycelium/ips/default.nix b/modules/system/devices/networking/mycelium/ips/default.nix index 456e6577..46cfc01c 100644 --- a/modules/system/devices/networking/mycelium/ips/default.nix +++ b/modules/system/devices/networking/mycelium/ips/default.nix @@ -6,6 +6,7 @@ config.services.mycelium.ips = { tower = "4e4:535:9d47:f367:becd:6557:458d:5b1b"; + intuos = "40e:404:a427:da33:163e:97b3:a2a3:9ed4"; jupiter = "5ce:969c:40d1:9575:f5e:591d:c377:a20b"; midas = "538:e163:87ba:f847:3646:18b6:6b01:d8f8"; kitty = "53f:dc2d:80c9:3ca2:4b15:ef4d:38a0:c868"; diff --git a/modules/system/services/server/nfs/default.nix b/modules/system/services/server/nfs/default.nix index c71175c1..82dc43ba 100644 --- a/modules/system/services/server/nfs/default.nix +++ b/modules/system/services/server/nfs/default.nix @@ -5,7 +5,7 @@ config = lib.mkIf config.services.nfs.server.enable { services.nfs.server.exports = "/storage *(rw)"; networking.firewall.extraInputRules = with config.services.mycelium.ips; '' - ip6 saddr { ${tower}, ${jupiter}, ${midas}, ${kitty}, ${prophet} } tcp dport 2049 accept + ip6 saddr { ${tower}, ${intuos}, ${jupiter}, ${midas}, ${kitty}, ${prophet} } tcp dport 2049 accept ''; }; } diff --git a/modules/system/services/server/nginx/rtmp/default.nix b/modules/system/services/server/nginx/rtmp/default.nix index ca389beb..a52c1397 100644 --- a/modules/system/services/server/nginx/rtmp/default.nix +++ b/modules/system/services/server/nginx/rtmp/default.nix @@ -24,7 +24,7 @@ ''; }; networking.firewall.extraInputRules = with config.services.mycelium.ips; '' - ip6 saddr { ${tower}, ${jupiter} } tcp dport 1935 accept + ip6 saddr { ${tower}, ${intuos}, ${jupiter} } tcp dport 1935 accept ip saddr { ${config.secrets.ips.luna}, ${config.secrets.ips.corn} } tcp dport 1935 accept ''; systemd.services.nginx.serviceConfig.ReadWritePaths = [ "/var/www/landing-page/streams/hls/" ]; diff --git a/modules/system/services/server/owncast/default.nix b/modules/system/services/server/owncast/default.nix index 4696fe89..acc81c55 100644 --- a/modules/system/services/server/owncast/default.nix +++ b/modules/system/services/server/owncast/default.nix @@ -8,7 +8,7 @@ rtmp-port = 1945; }; networking.firewall.extraInputRules = with config.services.mycelium.ips; '' - ip6 saddr { ${tower}, ${jupiter} } tcp dport 1935 accept + ip6 saddr { ${tower}, ${intuos}, ${jupiter} } tcp dport 1935 accept ''; environment.persistence."/persist".directories = [ "/var/lib/owncast" ]; }; From 1bcd590c4337c7ff8045c4b514056f84bddcce96 Mon Sep 17 00:00:00 2001 From: Bun Date: Fri, 30 May 2025 11:34:25 -0400 Subject: [PATCH 72/98] Add Bloxel and fix Gamemode in Waybar --- modules/home/programs/terminal/ssh/default.nix | 3 ++- modules/home/wms/programs/waybar/default.nix | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/home/programs/terminal/ssh/default.nix b/modules/home/programs/terminal/ssh/default.nix index ca73dbf3..269710b1 100644 --- a/modules/home/programs/terminal/ssh/default.nix +++ b/modules/home/programs/terminal/ssh/default.nix @@ -13,7 +13,8 @@ kitty.hostname = "53f:dc2d:80c9:3ca2:4b15:ef4d:38a0:c868"; prophet.hostname = "42f:2737:2aed:4dee:cbe4:3c73:1918:ad9b"; - # Misc + # Other servers + bloxel.hostname = "rtmp.bloxelcom.net"; seneca = { hostname = "matrix.senecapolytechnic.ca"; user = "jhampton1"; diff --git a/modules/home/wms/programs/waybar/default.nix b/modules/home/wms/programs/waybar/default.nix index 49700001..281ebb19 100644 --- a/modules/home/wms/programs/waybar/default.nix +++ b/modules/home/wms/programs/waybar/default.nix @@ -301,7 +301,7 @@ #waybar { background: #${config.look.colors.dark}; } #network { padding: 0 6px 0 4px; } - #scratchpad, #privacy, #tray, #bluetooth { margin: 0 2px 0 2px; } + #gamemode, #scratchpad, #privacy, #tray, #bluetooth { margin: 0 2px 0 2px; } #pulseaudio, #mpris, #custom-notifs, #idle_inhibitor, #custom-weather, #cpu, #memory, #custom-vram, #backlight, #battery, #clock { margin: 0 2px 0 4px; } #workspaces { padding: 0 6px 0 0; } From a4d6a7663c6d6a0cfa24e84f1a72d6131a420547 Mon Sep 17 00:00:00 2001 From: Bun Date: Sat, 31 May 2025 16:51:16 -0400 Subject: [PATCH 73/98] Change nfs firewall to include any included mycelium ip --- hosts/tower/boot/default.nix | 1 - modules/system/services/server/nfs/default.nix | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/hosts/tower/boot/default.nix b/hosts/tower/boot/default.nix index 9f0c2504..0e2428c5 100644 --- a/hosts/tower/boot/default.nix +++ b/hosts/tower/boot/default.nix @@ -4,7 +4,6 @@ let # VM/GPU passthrough "amd_iommu=on" "iommu=pt" - "nested=1" # Isolate devices into IOMMU groups "pcie_acs_override=downstream,multifunction" diff --git a/modules/system/services/server/nfs/default.nix b/modules/system/services/server/nfs/default.nix index 82dc43ba..e241400f 100644 --- a/modules/system/services/server/nfs/default.nix +++ b/modules/system/services/server/nfs/default.nix @@ -4,8 +4,8 @@ config = lib.mkIf config.services.nfs.server.enable { services.nfs.server.exports = "/storage *(rw)"; - networking.firewall.extraInputRules = with config.services.mycelium.ips; '' - ip6 saddr { ${tower}, ${intuos}, ${jupiter}, ${midas}, ${kitty}, ${prophet} } tcp dport 2049 accept + networking.firewall.extraInputRules = with lib; '' + ip6 saddr { ${concatStringsSep ", " (attrValues config.services.mycelium.ips)} } tcp dport 2049 accept ''; }; } From 215ad6b1a7b5bb9b6d5b15113da01d43bc1c7078 Mon Sep 17 00:00:00 2001 From: Bun Date: Sat, 31 May 2025 17:47:49 -0400 Subject: [PATCH 74/98] Simplify flake readability, move NixOS configs outside of flake-utils --- flake.nix | 65 +++++++++++------------ modules/home/profiles/default.nix | 5 +- modules/home/profiles/generic/default.nix | 8 --- 3 files changed, 33 insertions(+), 45 deletions(-) delete mode 100644 modules/home/profiles/generic/default.nix diff --git a/flake.nix b/flake.nix index 85a531aa..0e2d34bb 100644 --- a/flake.nix +++ b/flake.nix @@ -52,40 +52,39 @@ outputs = inputs: with inputs; - flake-utils.lib.eachDefaultSystemPassThrough (system: - let - mkNix = name: channel: channel.lib.nixosSystem { - modules = [ (./hosts + "/${name}") ]; - specialArgs = inputs; - }; - mkHome = extraModules: hm.lib.homeManagerConfiguration { - modules = [ - ./modules/home - { targets.genericLinux.enable = true; } - ] ++ extraModules; - extraSpecialArgs = inputs; - pkgs = builtins.getAttr system stable.legacyPackages; - }; + let + mkNix = name: channel: channel.lib.nixosSystem { + modules = [ (./hosts + "/${name}") ]; + specialArgs = inputs; + }; + in { + nixosConfigurations = builtins.mapAttrs (name: channel: mkNix name channel) { + tower = stable; + detritus = stable; + hidden = stable; - hostChannels = { - tower = stable; - detritus = stable; - hidden = stable; + intuos = stable; + jupiter = unstable; - intuos = stable; - jupiter = unstable; + midas = stable; + kitty = stable; + prophet = stable; + }; + } - midas = stable; - kitty = stable; - prophet = stable; - }; - in { - nixosConfigurations = builtins.mapAttrs (name: channel: mkNix name channel) hostChannels; - - homeConfigurations = { - default = mkHome [ ]; - desktop = mkHome [{ home.guifull.enable = true; }]; - }; - } - ); + // flake-utils.lib.eachDefaultSystemPassThrough (system: let + mkHome = extraModules: hm.lib.homeManagerConfiguration { + modules = [ + ./modules/home + { targets.genericLinux.enable = true; } + ] ++ extraModules; + extraSpecialArgs = inputs; + pkgs = builtins.getAttr system stable.legacyPackages; + }; + in { + homeConfigurations = { + default = mkHome [ ]; + desktop = mkHome [{ home.guifull.enable = true; }]; + }; + }); } diff --git a/modules/home/profiles/default.nix b/modules/home/profiles/default.nix index 0f4a47f6..4c658ec6 100644 --- a/modules/home/profiles/default.nix +++ b/modules/home/profiles/default.nix @@ -1,9 +1,6 @@ { lib, ... }: { - imports = [ - ./generic - ./guifull - ]; + imports = [ ./guifull ]; options.home = with lib; { desktop.enable = mkEnableOption "Desktop programs and services"; diff --git a/modules/home/profiles/generic/default.nix b/modules/home/profiles/generic/default.nix deleted file mode 100644 index 1d0c5202..00000000 --- a/modules/home/profiles/generic/default.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ config, lib, ... }: -{ - config = lib.mkIf config.targets.genericLinux.enable { - home = { - sessionVariables.PATH = "$HOME/.nix-profile/bin:$PATH"; - }; - }; -} From 1f7d01bb4d6eaf2d0b04f43e8a253afb56e5564e Mon Sep 17 00:00:00 2001 From: Bun Date: Sun, 1 Jun 2025 06:17:48 -0400 Subject: [PATCH 75/98] Add Colmena to manage systems, use better pathing for smallfetch, use better mountpoints and hostnames from Colema --- flake.lock | 42 +++++++++--------- flake.nix | 39 +++++++++------- hosts/detritus/colmena/default.nix | 10 +++++ hosts/detritus/default.nix | 7 +-- hosts/detritus/filesystems/default.nix | 18 ++++---- hosts/hidden/boot/default.nix | 3 +- hosts/hidden/colmena/default.nix | 10 +++++ hosts/hidden/default.nix | 3 +- hosts/intuos/colmena/default.nix | 10 +++++ hosts/intuos/default.nix | 3 +- hosts/intuos/filesystems/default.nix | 16 +++---- hosts/jupiter/boot/default.nix | 2 +- hosts/jupiter/colmena/default.nix | 10 +++++ hosts/jupiter/default.nix | 3 +- hosts/jupiter/filesystems/default.nix | 16 +++---- hosts/jupiter/jovian/default.nix | 2 +- hosts/kitty/colmena/default.nix | 7 +++ hosts/kitty/default.nix | 6 +-- hosts/kitty/filesystems/default.nix | 14 +++--- hosts/midas/colmena/default.nix | 7 +++ hosts/midas/default.nix | 6 +-- hosts/midas/filesystems/default.nix | 6 +-- hosts/prophet/colmena/default.nix | 8 ++++ hosts/prophet/default.nix | 6 +-- hosts/tower/boot/default.nix | 5 ++- hosts/tower/colmena/default.nix | 10 +++++ hosts/tower/default.nix | 3 +- hosts/tower/filesystems/default.nix | 16 +++---- .../home/programs/misc/headless/default.nix | 1 + modules/home/programs/terminal/default.nix | 1 - .../terminal/fastfetch/smallfetch/default.nix | 8 ++-- .../smallfetch/{config.jsonc => small.jsonc} | 0 modules/home/programs/terminal/nh/default.nix | 12 ----- modules/home/wms/programs/default.nix | 2 +- .../home/wms/programs/swaylock/default.nix | 2 +- .../home/wms/programs/wallpapers/default.nix | 8 ++++ .../wallpapers => wallpapers/photos}/1.png | Bin .../wallpapers => wallpapers/photos}/2.png | Bin .../wallpapers => wallpapers/photos}/3.png | Bin .../{swaylock => wallpapers/photos}/lock.png | Bin .../programs/wallpapers/wpaperd/default.nix | 12 +++++ modules/home/wms/programs/wpaperd/default.nix | 12 ----- modules/system/default.nix | 4 +- .../devices/networking/mycelium/default.nix | 2 - .../networking/mycelium/ips/default.nix | 15 ------- modules/system/programs/colmena/default.nix | 4 ++ modules/system/programs/default.nix | 1 + .../system/services/general/ssh/default.nix | 2 + .../system/services/server/nfs/default.nix | 8 ++-- .../services/server/nginx/rtmp/default.nix | 8 ++-- .../services/server/owncast/default.nix | 8 ++-- .../settings/security/privilege/default.nix | 20 +++++++++ modules/system/users/main/default.nix | 2 +- 53 files changed, 254 insertions(+), 166 deletions(-) create mode 100644 hosts/detritus/colmena/default.nix create mode 100644 hosts/hidden/colmena/default.nix create mode 100644 hosts/intuos/colmena/default.nix create mode 100644 hosts/jupiter/colmena/default.nix create mode 100644 hosts/kitty/colmena/default.nix create mode 100644 hosts/midas/colmena/default.nix create mode 100644 hosts/prophet/colmena/default.nix create mode 100644 hosts/tower/colmena/default.nix rename modules/home/programs/terminal/fastfetch/smallfetch/{config.jsonc => small.jsonc} (100%) delete mode 100644 modules/home/programs/terminal/nh/default.nix create mode 100644 modules/home/wms/programs/wallpapers/default.nix rename modules/home/wms/programs/{wpaperd/wallpapers => wallpapers/photos}/1.png (100%) rename modules/home/wms/programs/{wpaperd/wallpapers => wallpapers/photos}/2.png (100%) rename modules/home/wms/programs/{wpaperd/wallpapers => wallpapers/photos}/3.png (100%) rename modules/home/wms/programs/{swaylock => wallpapers/photos}/lock.png (100%) create mode 100644 modules/home/wms/programs/wallpapers/wpaperd/default.nix delete mode 100644 modules/home/wms/programs/wpaperd/default.nix delete mode 100644 modules/system/devices/networking/mycelium/ips/default.nix create mode 100644 modules/system/programs/colmena/default.nix diff --git a/flake.lock b/flake.lock index 5b3e579f..ad619313 100644 --- a/flake.lock +++ b/flake.lock @@ -269,11 +269,11 @@ }, "hardware": { "locked": { - "lastModified": 1747900541, - "narHash": "sha256-dn64Pg9xLETjblwZs9Euu/SsjW80pd6lr5qSiyLY1pg=", + "lastModified": 1748634340, + "narHash": "sha256-pZH4bqbOd8S+si6UcfjHovWDiWKiIGRNRMpmRWaDIms=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "11f2d9ea49c3e964315215d6baa73a8d42672f06", + "rev": "daa628a725ab4948e0e2b795e8fb6f4c3e289a7a", "type": "github" }, "original": { @@ -289,11 +289,11 @@ ] }, "locked": { - "lastModified": 1748226808, - "narHash": "sha256-GaBRgxjWO1bAQa8P2+FDxG4ANBVhjnSjBms096qQdxo=", + "lastModified": 1748665073, + "narHash": "sha256-RMhjnPKWtCoIIHiuR9QKD7xfsKb3agxzMfJY8V9MOew=", "owner": "nix-community", "repo": "home-manager", - "rev": "83665c39fa688bd6a1f7c43cf7997a70f6a109f9", + "rev": "282e1e029cb6ab4811114fc85110613d72771dea", "type": "github" }, "original": { @@ -326,11 +326,11 @@ ] }, "locked": { - "lastModified": 1748411314, - "narHash": "sha256-fvtRp+oHGDLiSQico9+LTAr6Z8CU1AIldLYLQ9mHqjo=", + "lastModified": 1748683484, + "narHash": "sha256-RXiY6t9E9oLEtfdGChHk/OIPqxYg1tu8XLvbPnJlfi4=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "9d69aed9023082af370b71bffdfcd414b6b61593", + "rev": "6f6bd4a27fb01c9dd623a157d769f34561407f47", "type": "github" }, "original": { @@ -396,11 +396,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1748225187, - "narHash": "sha256-gpNN43fNJQoHhnK1Z+nms4lo6i/t9t2rfZMAxc165vQ=", + "lastModified": 1748570485, + "narHash": "sha256-oDnEc/rxyDf+uUXO56Z2TJtrrQoBe0Z4MCIRaY6lVZ0=", "owner": "Infinidoge", "repo": "nix-minecraft", - "rev": "98c1bcaaa4dbd5980523a08a5b32e35d44e830e5", + "rev": "6c961ee42ff2301ee61c75aa42cbe8c8adecf3c8", "type": "github" }, "original": { @@ -487,11 +487,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1748444636, - "narHash": "sha256-wjcrY2/bFfHLm16HPuxDhHEqe3HBbLwZ5kT/BBklPKE=", + "lastModified": 1748748623, + "narHash": "sha256-ajFTvgFyRxLMjpJxK+KOEp2+dNRl/Bc8Mnby7W8uPk4=", "owner": "nix-community", "repo": "NUR", - "rev": "c68efc6197f91cae2904f68937bdfb235c3c7799", + "rev": "58a80c3ede0cdfa480f3bd8f0e79c010677f2a07", "type": "github" }, "original": { @@ -566,11 +566,11 @@ }, "stable": { "locked": { - "lastModified": 1748162331, - "narHash": "sha256-rqc2RKYTxP3tbjA+PB3VMRQNnjesrT0pEofXQTrMsS8=", + "lastModified": 1748437600, + "narHash": "sha256-hYKMs3ilp09anGO7xzfGs3JqEgUqFMnZ8GMAqI6/k04=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "7c43f080a7f28b2774f3b3f43234ca11661bf334", + "rev": "7282cb574e0607e65224d33be8241eae7cfe0979", "type": "github" }, "original": { @@ -632,11 +632,11 @@ }, "unstable": { "locked": { - "lastModified": 1748370509, - "narHash": "sha256-QlL8slIgc16W5UaI3w7xHQEP+Qmv/6vSNTpoZrrSlbk=", + "lastModified": 1748460289, + "narHash": "sha256-7doLyJBzCllvqX4gszYtmZUToxKvMUrg45EUWaUYmBg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4faa5f5321320e49a78ae7848582f684d64783e9", + "rev": "96ec055edbe5ee227f28cdbc3f1ddf1df5965102", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 0e2d34bb..8b9cd5e5 100644 --- a/flake.nix +++ b/flake.nix @@ -41,6 +41,7 @@ url = "github:nix-community/home-manager/release-25.05"; inputs.nixpkgs.follows = "stable"; }; + nur = { url = "github:nix-community/NUR"; inputs.nixpkgs.follows = "unstable"; @@ -52,23 +53,31 @@ outputs = inputs: with inputs; - let - mkNix = name: channel: channel.lib.nixosSystem { - modules = [ (./hosts + "/${name}") ]; - specialArgs = inputs; - }; - in { - nixosConfigurations = builtins.mapAttrs (name: channel: mkNix name channel) { - tower = stable; - detritus = stable; - hidden = stable; + { + colmena = { + meta = { + nixpkgs = import stable {}; + specialArgs = inputs; - intuos = stable; - jupiter = unstable; + # Use a different Nixpkgs import on some systems + nodeNixpkgs.jupiter = import unstable {}; + }; - midas = stable; - kitty = stable; - prophet = stable; + # Desktops + tower.imports = [ ./hosts/tower ]; + #detritus.imports = [ ./hosts/detritus ]; + + # Laptops + intuos.imports = [ ./hosts/intuos ]; + jupiter.imports = [ ./hosts/jupiter ]; + + # Servers + midas.imports = [ ./hosts/midas ]; + kitty.imports = [ ./hosts/kitty ]; + prophet.imports = [ ./hosts/prophet ]; + + # Misc + hidden.imports = [ ./hosts/hidden ]; }; } diff --git a/hosts/detritus/colmena/default.nix b/hosts/detritus/colmena/default.nix new file mode 100644 index 00000000..654be402 --- /dev/null +++ b/hosts/detritus/colmena/default.nix @@ -0,0 +1,10 @@ +{ config, ... }: +{ + deployment = { + tags = [ + "latptop" + "pc" + ]; + targetHost = ""; + }; +} diff --git a/hosts/detritus/default.nix b/hosts/detritus/default.nix index 04eda225..209d0479 100644 --- a/hosts/detritus/default.nix +++ b/hosts/detritus/default.nix @@ -2,6 +2,7 @@ { imports = [ ./boot + ./colmena ./disko ./filesystems ./hardware @@ -9,12 +10,8 @@ ../../modules/system ]; - networking.hostName = "detritus"; - system = { desktop.enable = true; - stateVersion = "24.11"; + stateVersion = "25.05"; }; - - services.xserver.videoDrivers = [ "amdgpu" ]; } diff --git a/hosts/detritus/filesystems/default.nix b/hosts/detritus/filesystems/default.nix index 86a993b3..d8b41833 100644 --- a/hosts/detritus/filesystems/default.nix +++ b/hosts/detritus/filesystems/default.nix @@ -1,6 +1,6 @@ -{ config, ... }: +{ config, nodes, ... }: { - fileSystems = with config.services.mycelium.ips; { + fileSystems = with config.sysusers; with nodes; { # Local mounts "/persist/storage" = { device = "/dev/disk/by-uuid/d0d6783f-ad51-4d85-b8a9-3374f6460ef6"; @@ -11,7 +11,7 @@ "subvol=storage" ]; }; - "/persist/home/${config.sysusers.main}/games" = { + "/persist/home/${main}/games" = { device = "/dev/disk/by-uuid/d0d6783f-ad51-4d85-b8a9-3374f6460ef6"; fsType = "btrfs"; options = [ @@ -22,8 +22,8 @@ }; # Network mounts - "/home/${config.sysusers.main}/Network/Midas" = { - device = "[${midas}]:/storage"; + "/home/${main}/Network/Midas" = { + device = "[${midas.config.deployment.targetHost}]:/storage"; fsType = "nfs4"; options = [ "noauto" @@ -31,8 +31,8 @@ "x-systemd.automount" ]; }; - "/home/${config.sysusers.main}/Network/Kitty" = { - device = "[${kitty}]:/storage/bun"; + "/home/${main}/Network/Kitty" = { + device = "[${kitty.config.deployment.targetHost}]:/storage/bun"; fsType = "nfs4"; options = [ "noauto" @@ -40,8 +40,8 @@ "x-systemd.automount" ]; }; - "/home/${config.sysusers.main}/Network/Prophet" = { - device = "[${prophet}]:/storage"; + "/home/${main}/Network/Prophet" = { + device = "[${prophet.config.deployment.targetHost}]:/storage"; fsType = "nfs4"; options = [ "noauto" diff --git a/hosts/hidden/boot/default.nix b/hosts/hidden/boot/default.nix index fae86e7f..85554c2c 100644 --- a/hosts/hidden/boot/default.nix +++ b/hosts/hidden/boot/default.nix @@ -1,6 +1,7 @@ -{ ... }: +{ pkgs, ... }: { boot = { + kernelPackages = pkgs.linuxPackages_6_14; loader.systemd-boot.enable = true; plymouth.enable = true; }; diff --git a/hosts/hidden/colmena/default.nix b/hosts/hidden/colmena/default.nix new file mode 100644 index 00000000..fee43533 --- /dev/null +++ b/hosts/hidden/colmena/default.nix @@ -0,0 +1,10 @@ +{ config, ... }: +{ + deployment = { + tags = [ + "misc" + "pc" + ]; + targetHost = "4ec:1001:ca5a:ae79:40e2:cb4c:e3c9:f401"; + }; +} diff --git a/hosts/hidden/default.nix b/hosts/hidden/default.nix index 18cb16db..c552cd89 100644 --- a/hosts/hidden/default.nix +++ b/hosts/hidden/default.nix @@ -2,6 +2,7 @@ { imports = [ ./boot + ./colmena ./disko ./hardware ./services @@ -9,8 +10,6 @@ ../../modules/system ]; - networking.hostName = "hidden"; - system = { desktop.enable = true; stateVersion = "24.11"; diff --git a/hosts/intuos/colmena/default.nix b/hosts/intuos/colmena/default.nix new file mode 100644 index 00000000..65811f1e --- /dev/null +++ b/hosts/intuos/colmena/default.nix @@ -0,0 +1,10 @@ +{ config, ... }: +{ + deployment = { + tags = [ + "latptop" + "pc" + ]; + targetHost = "40e:404:a427:da33:163e:97b3:a2a3:9ed4"; + }; +} diff --git a/hosts/intuos/default.nix b/hosts/intuos/default.nix index ceea57fa..b12e9c30 100644 --- a/hosts/intuos/default.nix +++ b/hosts/intuos/default.nix @@ -2,6 +2,7 @@ { imports = [ ./boot + ./colmena ./disko ./filesystems ./hardware @@ -9,8 +10,6 @@ ../../modules/system ]; - networking.hostName = "intuos"; - system = { desktop.enable = true; stateVersion = "24.11"; diff --git a/hosts/intuos/filesystems/default.nix b/hosts/intuos/filesystems/default.nix index 577b5d27..dc72c3fd 100644 --- a/hosts/intuos/filesystems/default.nix +++ b/hosts/intuos/filesystems/default.nix @@ -1,9 +1,9 @@ -{ config, ... }: +{ config, nodes, ... }: { - fileSystems = with config.services.mycelium.ips; { + fileSystems = with config.sysusers; with nodes; { # Network mounts - "/home/${config.sysusers.main}/Network/Midas" = { - device = "[${midas}]:/storage"; + "/home/${main}/Network/Midas" = { + device = "[${midas.config.deployment.targetHost}]:/storage"; fsType = "nfs4"; options = [ "noauto" @@ -11,8 +11,8 @@ "x-systemd.automount" ]; }; - "/home/${config.sysusers.main}/Network/Kitty" = { - device = "[${kitty}]:/storage/bun"; + "/home/${main}/Network/Kitty" = { + device = "[${kitty.config.deployment.targetHost}]:/storage/bun"; fsType = "nfs4"; options = [ "noauto" @@ -20,8 +20,8 @@ "x-systemd.automount" ]; }; - "/home/${config.sysusers.main}/Network/Prophet" = { - device = "[${prophet}]:/storage"; + "/home/${main}/Network/Prophet" = { + device = "[${prophet.config.deployment.targetHost}]:/storage"; fsType = "nfs4"; options = [ "noauto" diff --git a/hosts/jupiter/boot/default.nix b/hosts/jupiter/boot/default.nix index 133c08ac..ff9d9cee 100644 --- a/hosts/jupiter/boot/default.nix +++ b/hosts/jupiter/boot/default.nix @@ -1,7 +1,7 @@ { pkgsStable, ... }: { boot = { - kernelPackages = pkgsStable.linuxPackages_latest; + kernelPackages = pkgsStable.linuxPackages_6_14; loader.systemd-boot.enable = true; plymouth.enable = true; }; diff --git a/hosts/jupiter/colmena/default.nix b/hosts/jupiter/colmena/default.nix new file mode 100644 index 00000000..29231ea0 --- /dev/null +++ b/hosts/jupiter/colmena/default.nix @@ -0,0 +1,10 @@ +{ config, ... }: +{ + deployment = { + tags = [ + "latptop" + "pc" + ]; + targetHost = "5ce:969c:40d1:9575:f5e:591d:c377:a20b"; + }; +} diff --git a/hosts/jupiter/default.nix b/hosts/jupiter/default.nix index fb5554d1..e2fad6f5 100644 --- a/hosts/jupiter/default.nix +++ b/hosts/jupiter/default.nix @@ -2,6 +2,7 @@ { imports = [ ./boot + ./colmena ./disko ./filesystems ./hardware @@ -11,8 +12,6 @@ ../../modules/system ]; - networking.hostName = "jupiter"; - system = { desktop.enable = true; steamdeck.enable = true; diff --git a/hosts/jupiter/filesystems/default.nix b/hosts/jupiter/filesystems/default.nix index de292804..f2428858 100644 --- a/hosts/jupiter/filesystems/default.nix +++ b/hosts/jupiter/filesystems/default.nix @@ -1,6 +1,6 @@ -{ config, ... }: +{ config, nodes, ... }: { - fileSystems = with config.services.mycelium.ips; { + fileSystems = with config.sysusers; with nodes; { # Local mounts "/mnt/Games" = { device = "/dev/disk/by-uuid/cb109a85-846d-4417-9c50-a2279bd20803"; @@ -12,8 +12,8 @@ }; # Network mounts - "/home/${config.sysusers.main}/Network/Midas" = { - device = "[${midas}]:/storage"; + "/home/${main}/Network/Midas" = { + device = "[${midas.config.deployment.targetHost}]:/storage"; fsType = "nfs4"; options = [ "noauto" @@ -21,8 +21,8 @@ "x-systemd.automount" ]; }; - "/home/${config.sysusers.main}/Network/Kitty" = { - device = "[${kitty}]:/storage/bun"; + "/home/${main}/Network/Kitty" = { + device = "[${kitty.config.deployment.targetHost}]:/storage/bun"; fsType = "nfs4"; options = [ "noauto" @@ -30,8 +30,8 @@ "x-systemd.automount" ]; }; - "/home/${config.sysusers.main}/Network/Prophet" = { - device = "[${prophet}]:/storage"; + "/home/${main}/Network/Prophet" = { + device = "[${prophet.config.deployment.targetHost}]:/storage"; fsType = "nfs4"; options = [ "noauto" diff --git a/hosts/jupiter/jovian/default.nix b/hosts/jupiter/jovian/default.nix index 0d4f8db6..68264bb0 100644 --- a/hosts/jupiter/jovian/default.nix +++ b/hosts/jupiter/jovian/default.nix @@ -32,7 +32,7 @@ services = { keyd.enable = lib.mkForce false; tlp.enable = lib.mkForce false; - xserver.desktopManager.gnome.enable = true; + desktopManager.gnome.enable = true; }; hardware.xone.enable = true; diff --git a/hosts/kitty/colmena/default.nix b/hosts/kitty/colmena/default.nix new file mode 100644 index 00000000..a9d36fa0 --- /dev/null +++ b/hosts/kitty/colmena/default.nix @@ -0,0 +1,7 @@ +{ config, ... }: +{ + deployment = { + tags = [ "server" ]; + targetHost = "53f:dc2d:80c9:3ca2:4b15:ef4d:38a0:c868"; + }; +} diff --git a/hosts/kitty/default.nix b/hosts/kitty/default.nix index 3fb0b916..908f7d33 100644 --- a/hosts/kitty/default.nix +++ b/hosts/kitty/default.nix @@ -2,6 +2,7 @@ { imports = [ ./boot + ./colmena ./disko ./filesystems ./hardware @@ -9,10 +10,7 @@ ../../modules/system ]; - networking = { - hostName = "kitty"; - hostId = "8745e22e"; - }; + networking.hostId = "8745e22e"; system = { server.enable = true; diff --git a/hosts/kitty/filesystems/default.nix b/hosts/kitty/filesystems/default.nix index d45a0867..71035999 100644 --- a/hosts/kitty/filesystems/default.nix +++ b/hosts/kitty/filesystems/default.nix @@ -1,6 +1,6 @@ -{ config, ... }: +{ config, nodes, ... }: { - fileSystems = with config.services.mycelium.ips; { + fileSystems = with config.sysusers; with nodes; { "/persist/storage" = { device = "/dev/disk/by-uuid/edd3e293-1aff-4fc0-96fa-4e17d6cccfca"; fsType = "btrfs"; @@ -11,17 +11,17 @@ }; # Network mounts - "/home/${config.sysusers.main}/Network/Midas" = { - device = "[${midas}]:/storage"; + "/home/${main}/Network/Midas" = { + device = "[${midas.config.deployment.targetHost}]:/storage"; fsType = "nfs4"; options = [ - "x-systemd.automount" "noauto" "soft" + "x-systemd.automount" ]; }; - "/home/${config.sysusers.main}/Network/Prophet" = { - device = "[${prophet}]:/storage"; + "/home/${main}/Network/Prophet" = { + device = "[${prophet.config.deployment.targetHost}]:/storage"; fsType = "nfs4"; options = [ "noauto" diff --git a/hosts/midas/colmena/default.nix b/hosts/midas/colmena/default.nix new file mode 100644 index 00000000..a6f434c3 --- /dev/null +++ b/hosts/midas/colmena/default.nix @@ -0,0 +1,7 @@ +{ config, ... }: +{ + deployment = { + tags = [ "server" ]; + targetHost = "538:e163:87ba:f847:3646:18b6:6b01:d8f8"; + }; +} diff --git a/hosts/midas/default.nix b/hosts/midas/default.nix index 766fb372..e2be2de8 100644 --- a/hosts/midas/default.nix +++ b/hosts/midas/default.nix @@ -2,6 +2,7 @@ { imports = [ ./boot + ./colmena ./disko ./filesystems ./hardware @@ -11,10 +12,7 @@ ../../modules/system ]; - networking = { - hostName = "midas"; - hostId = "38ba3f57"; - }; + networking.hostId = "38ba3f57"; system = { server.enable = true; diff --git a/hosts/midas/filesystems/default.nix b/hosts/midas/filesystems/default.nix index bdeba56d..e68fd763 100644 --- a/hosts/midas/filesystems/default.nix +++ b/hosts/midas/filesystems/default.nix @@ -1,6 +1,6 @@ -{ config, ... }: +{ config, nodes, ... }: { - fileSystems = with config.services.mycelium.ips; { + fileSystems = with config.sysusers; with nodes; { "/persist" = { device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325"; fsType = "btrfs"; @@ -11,7 +11,7 @@ ]; }; "/kitty" = { - device = "[${kitty}]:/storage/bun"; + device = "[${kitty.config.deployment.targetHost}]:/storage/${main}"; fsType = "nfs4"; options = [ "noauto" diff --git a/hosts/prophet/colmena/default.nix b/hosts/prophet/colmena/default.nix new file mode 100644 index 00000000..ea5fbdc9 --- /dev/null +++ b/hosts/prophet/colmena/default.nix @@ -0,0 +1,8 @@ +{ config, ... }: +{ + deployment = { + buildOnTarget = true; + tags = [ "server" ]; + targetHost = "42f:2737:2aed:4dee:cbe4:3c73:1918:ad9b"; + }; +} diff --git a/hosts/prophet/default.nix b/hosts/prophet/default.nix index cafc1fea..171c6311 100644 --- a/hosts/prophet/default.nix +++ b/hosts/prophet/default.nix @@ -2,6 +2,7 @@ { imports = [ ./boot + ./colmena ./disko ./filesystems ./hardware @@ -11,10 +12,7 @@ (modulesPath + "/profiles/headless.nix") ]; - networking = { - hostName = "prophet"; - hostId = "97a21a38"; - }; + networking.hostId = "97a21a38"; system = { server.enable = true; diff --git a/hosts/tower/boot/default.nix b/hosts/tower/boot/default.nix index 0e2428c5..7d9298aa 100644 --- a/hosts/tower/boot/default.nix +++ b/hosts/tower/boot/default.nix @@ -12,7 +12,7 @@ let in { boot = { # Latest kernel and IOMMU isolation - kernelPackages = pkgs.linuxPackages_latest; + kernelPackages = pkgs.linuxPackages_6_14; kernelParams = commonKernelParams ++ [ "vfio-pci.ids=10de:1f82,10de:10fa" ]; # Load into GPU before video driver @@ -24,6 +24,9 @@ in { # Secure boot lanzaboote.enable = true; + + # Emulate different architectures for remote builds + binfmt.emulatedSystems = [ "aarch64-linux" ]; }; # Use second GPU on boot diff --git a/hosts/tower/colmena/default.nix b/hosts/tower/colmena/default.nix new file mode 100644 index 00000000..a9fee8f3 --- /dev/null +++ b/hosts/tower/colmena/default.nix @@ -0,0 +1,10 @@ +{ config, ... }: +{ + deployment = { + tags = [ + "desktop" + "pc" + ]; + targetHost = "4e4:535:9d47:f367:becd:6557:458d:5b1b"; + }; +} diff --git a/hosts/tower/default.nix b/hosts/tower/default.nix index 1cfb0a01..49b7c8aa 100644 --- a/hosts/tower/default.nix +++ b/hosts/tower/default.nix @@ -2,6 +2,7 @@ { imports = [ ./boot + ./colmena ./disko ./filesystems ./hardware @@ -9,8 +10,6 @@ ../../modules/system ]; - networking.hostName = "tower"; - system = { desktop.enable = true; nvidia.enable = true; diff --git a/hosts/tower/filesystems/default.nix b/hosts/tower/filesystems/default.nix index e8a8fc50..a80b45f9 100644 --- a/hosts/tower/filesystems/default.nix +++ b/hosts/tower/filesystems/default.nix @@ -1,6 +1,6 @@ -{ config, ... }: +{ config, nodes, ... }: { - fileSystems = with config.services.mycelium.ips; { + fileSystems = with config.sysusers; with nodes; { # Games and such "/mnt/Linux1" = { device = "/dev/disk/by-uuid/b2901f8c-ffda-4b88-bb63-a9ea0c96ccb4"; @@ -39,8 +39,8 @@ }; # Network mounts - "/home/${config.sysusers.main}/Network/Midas" = { - device = "[${midas}]:/storage"; + "/home/${main}/Network/Midas" = { + device = "[${midas.config.deployment.targetHost}]:/storage"; fsType = "nfs4"; options = [ "noauto" @@ -48,8 +48,8 @@ "x-systemd.automount" ]; }; - "/home/${config.sysusers.main}/Network/Kitty" = { - device = "[${kitty}]:/storage/bun"; + "/home/${main}/Network/Kitty" = { + device = "[${kitty.config.deployment.targetHost}]:/storage/${main}"; fsType = "nfs4"; options = [ "noauto" @@ -57,8 +57,8 @@ "x-systemd.automount" ]; }; - "/home/${config.sysusers.main}/Network/Prophet" = { - device = "[${prophet}]:/storage"; + "/home/${main}/Network/Prophet" = { + device = "[${prophet.config.deployment.targetHost}]:/storage"; fsType = "nfs4"; options = [ "noauto" diff --git a/modules/home/programs/misc/headless/default.nix b/modules/home/programs/misc/headless/default.nix index 43d8e3f0..e36efce0 100644 --- a/modules/home/programs/misc/headless/default.nix +++ b/modules/home/programs/misc/headless/default.nix @@ -2,6 +2,7 @@ { home.packages = with pkgs; [ bc + colmena ncdu p7zip vimv diff --git a/modules/home/programs/terminal/default.nix b/modules/home/programs/terminal/default.nix index 8589ca96..43a041ea 100644 --- a/modules/home/programs/terminal/default.nix +++ b/modules/home/programs/terminal/default.nix @@ -11,7 +11,6 @@ ./lazygit ./ncmpcpp ./neovim - ./nh ./nix-index ./ranger ./ssh diff --git a/modules/home/programs/terminal/fastfetch/smallfetch/default.nix b/modules/home/programs/terminal/fastfetch/smallfetch/default.nix index 8b03d77f..7fe46f91 100644 --- a/modules/home/programs/terminal/fastfetch/smallfetch/default.nix +++ b/modules/home/programs/terminal/fastfetch/smallfetch/default.nix @@ -1,9 +1,11 @@ -{ pkgs, ... }: +{ config, pkgs, ... }: { - home.packages = with pkgs; [ + home.packages = with pkgs; with lib; with config.home; with config.xdg; [ (writeScriptBin "smallfetch" '' #!/bin/sh - fastfetch --config ${builtins.toString ./config.jsonc} + fastfetch --config ${removePrefix "${homeDirectory}/" configHome}/fastfetch/small.jsonc '') ]; + + xdg.configFile."fastfetch/small.jsonc".source = ./small.jsonc; } diff --git a/modules/home/programs/terminal/fastfetch/smallfetch/config.jsonc b/modules/home/programs/terminal/fastfetch/smallfetch/small.jsonc similarity index 100% rename from modules/home/programs/terminal/fastfetch/smallfetch/config.jsonc rename to modules/home/programs/terminal/fastfetch/smallfetch/small.jsonc diff --git a/modules/home/programs/terminal/nh/default.nix b/modules/home/programs/terminal/nh/default.nix deleted file mode 100644 index 71697b6f..00000000 --- a/modules/home/programs/terminal/nh/default.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ config, ... }: -{ - programs.nh = { - enable = true; - flake = "${config.xdg.userDirs.extraConfig.XDG_PROJECTS_DIR}/nixos-config"; - }; - - home.shellAliases = { - nhs = "nh os switch"; - nht = "nh os test"; - }; -} diff --git a/modules/home/wms/programs/default.nix b/modules/home/wms/programs/default.nix index 4ab6f6e3..924e4a0b 100644 --- a/modules/home/wms/programs/default.nix +++ b/modules/home/wms/programs/default.nix @@ -8,9 +8,9 @@ ./rofi ./swayidle ./swaylock + ./wallpapers ./waybar ./wlsunset - ./wpaperd ]; home.packages = with pkgs; lib.mkIf config.home.desktop.enable [ diff --git a/modules/home/wms/programs/swaylock/default.nix b/modules/home/wms/programs/swaylock/default.nix index 33b18cfa..c2494e4e 100644 --- a/modules/home/wms/programs/swaylock/default.nix +++ b/modules/home/wms/programs/swaylock/default.nix @@ -12,7 +12,7 @@ in { package = pkgs.swaylock-effects; settings = { clock = true; - image = builtins.toString ./lock.png; + image = ".wallpapers/lock.png"; font = config.look.fonts.main; font-size = 30; timestr = "%I:%M%p"; diff --git a/modules/home/wms/programs/wallpapers/default.nix b/modules/home/wms/programs/wallpapers/default.nix new file mode 100644 index 00000000..9077d586 --- /dev/null +++ b/modules/home/wms/programs/wallpapers/default.nix @@ -0,0 +1,8 @@ +{ config, lib, ... }: +{ + imports = [ ./wpaperd ]; + + config = lib.mkIf config.home.desktop.enable { + home.file.".wallpapers".source = ./photos; + }; +} diff --git a/modules/home/wms/programs/wpaperd/wallpapers/1.png b/modules/home/wms/programs/wallpapers/photos/1.png similarity index 100% rename from modules/home/wms/programs/wpaperd/wallpapers/1.png rename to modules/home/wms/programs/wallpapers/photos/1.png diff --git a/modules/home/wms/programs/wpaperd/wallpapers/2.png b/modules/home/wms/programs/wallpapers/photos/2.png similarity index 100% rename from modules/home/wms/programs/wpaperd/wallpapers/2.png rename to modules/home/wms/programs/wallpapers/photos/2.png diff --git a/modules/home/wms/programs/wpaperd/wallpapers/3.png b/modules/home/wms/programs/wallpapers/photos/3.png similarity index 100% rename from modules/home/wms/programs/wpaperd/wallpapers/3.png rename to modules/home/wms/programs/wallpapers/photos/3.png diff --git a/modules/home/wms/programs/swaylock/lock.png b/modules/home/wms/programs/wallpapers/photos/lock.png similarity index 100% rename from modules/home/wms/programs/swaylock/lock.png rename to modules/home/wms/programs/wallpapers/photos/lock.png diff --git a/modules/home/wms/programs/wallpapers/wpaperd/default.nix b/modules/home/wms/programs/wallpapers/wpaperd/default.nix new file mode 100644 index 00000000..c3575bda --- /dev/null +++ b/modules/home/wms/programs/wallpapers/wpaperd/default.nix @@ -0,0 +1,12 @@ +{ config, ... }: +{ + services.wpaperd = { + enable = config.home.desktop.enable; + settings = { + default.mode = "center"; + any.path = ".wallpapers/1.png"; + "${config.displays.tower2}".path = ".wallpapers/2.png"; + "${config.displays.tower3}".path = ".wallpapers/3.png"; + }; + }; +} diff --git a/modules/home/wms/programs/wpaperd/default.nix b/modules/home/wms/programs/wpaperd/default.nix deleted file mode 100644 index b8d125f9..00000000 --- a/modules/home/wms/programs/wpaperd/default.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ config, ... }: -{ - services.wpaperd = { - enable = config.home.desktop.enable; - settings = { - default.mode = "center"; - any.path = builtins.toString ./wallpapers/1.png; - "${config.displays.tower2}".path = builtins.toString ./wallpapers/2.png; - "${config.displays.tower3}".path = builtins.toString ./wallpapers/3.png; - }; - }; -} diff --git a/modules/system/default.nix b/modules/system/default.nix index 1e750aaf..b397e67a 100644 --- a/modules/system/default.nix +++ b/modules/system/default.nix @@ -1,4 +1,4 @@ -{ config, lib, ... }: +{ config, lib, name, ... }: { imports = [ ./devices @@ -13,4 +13,6 @@ desktop.enable = mkEnableOption "Desktop apps and services"; server.enable = mkEnableOption "Server apps and services"; }; + + config.networking.hostName = name; } diff --git a/modules/system/devices/networking/mycelium/default.nix b/modules/system/devices/networking/mycelium/default.nix index 726b51de..0d178877 100644 --- a/modules/system/devices/networking/mycelium/default.nix +++ b/modules/system/devices/networking/mycelium/default.nix @@ -1,7 +1,5 @@ { ... }: { - imports = [ ./ips ]; - services.mycelium = { enable = true; openFirewall = true; diff --git a/modules/system/devices/networking/mycelium/ips/default.nix b/modules/system/devices/networking/mycelium/ips/default.nix deleted file mode 100644 index 46cfc01c..00000000 --- a/modules/system/devices/networking/mycelium/ips/default.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ config, lib, ... }: -{ - options.services.mycelium.ips = lib.mkOption { - type = lib.types.attrs; - }; - - config.services.mycelium.ips = { - tower = "4e4:535:9d47:f367:becd:6557:458d:5b1b"; - intuos = "40e:404:a427:da33:163e:97b3:a2a3:9ed4"; - jupiter = "5ce:969c:40d1:9575:f5e:591d:c377:a20b"; - midas = "538:e163:87ba:f847:3646:18b6:6b01:d8f8"; - kitty = "53f:dc2d:80c9:3ca2:4b15:ef4d:38a0:c868"; - prophet = "42f:2737:2aed:4dee:cbe4:3c73:1918:ad9b"; - }; -} diff --git a/modules/system/programs/colmena/default.nix b/modules/system/programs/colmena/default.nix new file mode 100644 index 00000000..a25b73f0 --- /dev/null +++ b/modules/system/programs/colmena/default.nix @@ -0,0 +1,4 @@ +{ ... }: +{ + deployment.targetUser = "sudo"; +} diff --git a/modules/system/programs/default.nix b/modules/system/programs/default.nix index beb3354e..2b6eefc6 100644 --- a/modules/system/programs/default.nix +++ b/modules/system/programs/default.nix @@ -1,6 +1,7 @@ { ... }: { imports = [ + ./colmena ./desktops ./gaming ./git diff --git a/modules/system/services/general/ssh/default.nix b/modules/system/services/general/ssh/default.nix index 9560df9e..f1280759 100644 --- a/modules/system/services/general/ssh/default.nix +++ b/modules/system/services/general/ssh/default.nix @@ -12,6 +12,8 @@ }; }; + programs.ssh.startAgent = true; + security.pam.services.sshd.allowNullPassword = true; environment.persistence."/persist".files = [ diff --git a/modules/system/services/server/nfs/default.nix b/modules/system/services/server/nfs/default.nix index e241400f..236a7147 100644 --- a/modules/system/services/server/nfs/default.nix +++ b/modules/system/services/server/nfs/default.nix @@ -1,11 +1,13 @@ -{ config, lib, ... }: +{ config, lib, nodes, ... }: { imports = [ ./user ]; config = lib.mkIf config.services.nfs.server.enable { services.nfs.server.exports = "/storage *(rw)"; - networking.firewall.extraInputRules = with lib; '' - ip6 saddr { ${concatStringsSep ", " (attrValues config.services.mycelium.ips)} } tcp dport 2049 accept + networking.firewall.extraInputRules = let + targetHosts = lib.attrValues (lib.mapAttrs (_: node: node.config.deployment.targetHost) nodes); + in '' + ip6 saddr { ${lib.concatStringsSep ", " targetHosts} } tcp dport 2049 accept ''; }; } diff --git a/modules/system/services/server/nginx/rtmp/default.nix b/modules/system/services/server/nginx/rtmp/default.nix index a52c1397..a8bdca83 100644 --- a/modules/system/services/server/nginx/rtmp/default.nix +++ b/modules/system/services/server/nginx/rtmp/default.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ config, lib, pkgs, nodes, ... }: { config = lib.mkIf config.services.webserver.enable { services.nginx = { @@ -23,8 +23,10 @@ } ''; }; - networking.firewall.extraInputRules = with config.services.mycelium.ips; '' - ip6 saddr { ${tower}, ${intuos}, ${jupiter} } tcp dport 1935 accept + networking.firewall.extraInputRules = let + targetHosts = lib.attrValues (lib.mapAttrs (_: node: node.config.deployment.targetHost) nodes); + in '' + ip6 saddr { ${lib.concatStringsSep ", " targetHosts} } tcp dport 1935 accept ip saddr { ${config.secrets.ips.luna}, ${config.secrets.ips.corn} } tcp dport 1935 accept ''; systemd.services.nginx.serviceConfig.ReadWritePaths = [ "/var/www/landing-page/streams/hls/" ]; diff --git a/modules/system/services/server/owncast/default.nix b/modules/system/services/server/owncast/default.nix index acc81c55..4f620795 100644 --- a/modules/system/services/server/owncast/default.nix +++ b/modules/system/services/server/owncast/default.nix @@ -1,4 +1,4 @@ -{ config, lib, ... }: +{ config, lib, nodes, ... }: { imports = [ ./nginx ]; @@ -7,8 +7,10 @@ port = 8060; rtmp-port = 1945; }; - networking.firewall.extraInputRules = with config.services.mycelium.ips; '' - ip6 saddr { ${tower}, ${intuos}, ${jupiter} } tcp dport 1935 accept + networking.firewall.extraInputRules = let + targetHosts = lib.attrValues (lib.mapAttrs (_: node: node.config.deployment.targetHost) nodes); + in '' + ip6 saddr { ${lib.concatStringsSep ", " targetHosts} } tcp dport ${toString config.services.owncast.rtmp-port} accept ''; environment.persistence."/persist".directories = [ "/var/lib/owncast" ]; }; diff --git a/modules/system/settings/security/privilege/default.nix b/modules/system/settings/security/privilege/default.nix index a2700af0..0fac0ed7 100644 --- a/modules/system/settings/security/privilege/default.nix +++ b/modules/system/settings/security/privilege/default.nix @@ -3,5 +3,25 @@ security.sudo-rs = { enable = true; execWheelOnly = true; + extraRules = [ + { + users = [ "sudo" ]; + commands = [ + { + command = "ALL"; + options = [ "NOPASSWD" ]; + } + ]; + } + ]; + }; + + # Create a user that has admin non-interactively + users.users.sudo = { + isNormalUser = true; + extraGroups = [ "wheel" ]; + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN3B9Uf3h5JiD2HjF/vQ5Zx9pibMgRrlf7ZoBktev9eB Warden" + ]; }; } diff --git a/modules/system/users/main/default.nix b/modules/system/users/main/default.nix index acd1cce6..c306192a 100644 --- a/modules/system/users/main/default.nix +++ b/modules/system/users/main/default.nix @@ -23,7 +23,7 @@ ../../../../hosts/prophet/id_ed25519.pub ]; openssh.authorizedKeys.keys = [ - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKn+61Hd+nQ5tQgt4219+h/zsnej1j2dHU5uvC3k3Bnw Warden" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN3B9Uf3h5JiD2HjF/vQ5Zx9pibMgRrlf7ZoBktev9eB Warden" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJahAoF74BY6GCTsFkt1ADKaraFgJJozW1Y1aBTLK0j9 Pixel9" ]; extraGroups = [ From d5605448a1f23c10d12262857f12686d8d790465 Mon Sep 17 00:00:00 2001 From: Bun Date: Sun, 1 Jun 2025 06:27:55 -0400 Subject: [PATCH 76/98] Avoid errors. This is stupid. --- flake.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/flake.nix b/flake.nix index 8b9cd5e5..e43e7717 100644 --- a/flake.nix +++ b/flake.nix @@ -56,11 +56,11 @@ { colmena = { meta = { - nixpkgs = import stable {}; + nixpkgs = import stable { system = "x86_64-linux"; }; specialArgs = inputs; # Use a different Nixpkgs import on some systems - nodeNixpkgs.jupiter = import unstable {}; + nodeNixpkgs.jupiter = import unstable { system = "x86_64-linux"; }; }; # Desktops From e5abaafa8d612dac04368d0317bc9c29112afd34 Mon Sep 17 00:00:00 2001 From: Bun Date: Sun, 1 Jun 2025 14:51:35 -0400 Subject: [PATCH 77/98] Change mycelium ips and upate flake --- flake.lock | 55 ++----------------- flake.nix | 12 ++-- .../devices/networking/mycelium/default.nix | 8 ++- 3 files changed, 19 insertions(+), 56 deletions(-) diff --git a/flake.lock b/flake.lock index ad619313..1a131f0f 100644 --- a/flake.lock +++ b/flake.lock @@ -2,7 +2,9 @@ "nodes": { "blender": { "inputs": { - "nixpkgs": "nixpkgs" + "nixpkgs": [ + "unstable" + ] }, "locked": { "dir": "blender", @@ -267,21 +269,6 @@ "type": "github" } }, - "hardware": { - "locked": { - "lastModified": 1748634340, - "narHash": "sha256-pZH4bqbOd8S+si6UcfjHovWDiWKiIGRNRMpmRWaDIms=", - "owner": "NixOS", - "repo": "nixos-hardware", - "rev": "daa628a725ab4948e0e2b795e8fb6f4c3e289a7a", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixos-hardware", - "type": "github" - } - }, "hm": { "inputs": { "nixpkgs": [ @@ -393,7 +380,9 @@ "inputs": { "flake-compat": "flake-compat_3", "flake-utils": "flake-utils_2", - "nixpkgs": "nixpkgs_2" + "nixpkgs": [ + "stable" + ] }, "locked": { "lastModified": 1748570485, @@ -431,21 +420,6 @@ "type": "github" } }, - "nixpkgs": { - "locked": { - "lastModified": 1733808091, - "narHash": "sha256-KWwINTQelKOoQgrXftxoqxmKFZb9pLVfnRvK270nkVk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "a0f3e10d94359665dba45b71b4227b0aeb851f8e", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-24.11", - "type": "indirect" - } - }, "nixpkgs-25_05": { "locked": { "lastModified": 1747610100, @@ -462,22 +436,6 @@ "type": "github" } }, - "nixpkgs_2": { - "locked": { - "lastModified": 1742889210, - "narHash": "sha256-hw63HnwnqU3ZQfsMclLhMvOezpM7RSB0dMAtD5/sOiw=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "698214a32beb4f4c8e3942372c694f40848b360d", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, "nur": { "inputs": { "flake-parts": "flake-parts_2", @@ -531,7 +489,6 @@ "blender": "blender", "disko": "disko", "flake-utils": "flake-utils", - "hardware": "hardware", "hm": "hm", "impermanence": "impermanence", "jovian": "jovian", diff --git a/flake.nix b/flake.nix index e43e7717..e1635813 100644 --- a/flake.nix +++ b/flake.nix @@ -21,8 +21,6 @@ }; # Hardware specific - hardware.url = "github:NixOS/nixos-hardware"; - jovian = { url = "github:Jovian-Experiments/Jovian-NixOS"; inputs.nixpkgs.follows = "unstable"; @@ -34,7 +32,10 @@ inputs.nixpkgs.follows = "stable"; }; - minecraft.url = "github:Infinidoge/nix-minecraft"; + minecraft = { + url = "github:Infinidoge/nix-minecraft"; + inputs.nixpkgs.follows = "stable"; + }; # Home inputs hm = { @@ -48,7 +49,10 @@ }; # Specific apps - blender.url = "github:edolstra/nix-warez?dir=blender"; + blender = { + url = "github:edolstra/nix-warez?dir=blender"; + inputs.nixpkgs.follows = "unstable"; + }; }; outputs = inputs: with inputs; diff --git a/modules/system/devices/networking/mycelium/default.nix b/modules/system/devices/networking/mycelium/default.nix index 0d178877..f8a21214 100644 --- a/modules/system/devices/networking/mycelium/default.nix +++ b/modules/system/devices/networking/mycelium/default.nix @@ -5,9 +5,11 @@ openFirewall = true; addHostedPublicNodes = false; peers = [ - "quic://[2607:fea8:431d:cba5:16bf:db31:5797:4170]:9651" - "quic://[2607:fea8:431d:cba5:d104:b60a:c847:9797]:9651" - "quic://[2607:fea8:431d:cba5:1963:58fa:50f4:f841]:9651" + "quic://[2607:fea8:431d:cba5:d254:c02e:e19e:7bce]:9651" + "quic://[2607:fea8:431d:cba5:ebb7:3826:6f74:f29f]:9651" + "quic://[2607:fea8:431d:cba5:a239:58ce:a49b:9661]:9651" + + "quic://99.247.177.43:9651" "quic://150.230.26.224:9651" ]; }; From 90976edeeca51bf14b9d3467338fd27180089eff Mon Sep 17 00:00:00 2001 From: Bun Date: Sun, 1 Jun 2025 16:39:21 -0400 Subject: [PATCH 78/98] The sudo user was stupid. Provide a password protected key for the root user, have colmena go through that. As intended. --- modules/system/programs/colmena/default.nix | 4 ---- modules/system/programs/default.nix | 1 - .../system/services/general/ssh/default.nix | 1 - .../settings/security/privilege/default.nix | 23 ++++--------------- 4 files changed, 4 insertions(+), 25 deletions(-) delete mode 100644 modules/system/programs/colmena/default.nix diff --git a/modules/system/programs/colmena/default.nix b/modules/system/programs/colmena/default.nix deleted file mode 100644 index a25b73f0..00000000 --- a/modules/system/programs/colmena/default.nix +++ /dev/null @@ -1,4 +0,0 @@ -{ ... }: -{ - deployment.targetUser = "sudo"; -} diff --git a/modules/system/programs/default.nix b/modules/system/programs/default.nix index 2b6eefc6..beb3354e 100644 --- a/modules/system/programs/default.nix +++ b/modules/system/programs/default.nix @@ -1,7 +1,6 @@ { ... }: { imports = [ - ./colmena ./desktops ./gaming ./git diff --git a/modules/system/services/general/ssh/default.nix b/modules/system/services/general/ssh/default.nix index f1280759..90bd0dee 100644 --- a/modules/system/services/general/ssh/default.nix +++ b/modules/system/services/general/ssh/default.nix @@ -5,7 +5,6 @@ services.openssh = { enable = true; settings = { - AllowGroups = [ "users" ]; AuthenticationMethods = "publickey"; PermitEmptyPasswords = true; PrintLastLog = "no"; diff --git a/modules/system/settings/security/privilege/default.nix b/modules/system/settings/security/privilege/default.nix index 0fac0ed7..0dd9a19c 100644 --- a/modules/system/settings/security/privilege/default.nix +++ b/modules/system/settings/security/privilege/default.nix @@ -3,25 +3,10 @@ security.sudo-rs = { enable = true; execWheelOnly = true; - extraRules = [ - { - users = [ "sudo" ]; - commands = [ - { - command = "ALL"; - options = [ "NOPASSWD" ]; - } - ]; - } - ]; }; - # Create a user that has admin non-interactively - users.users.sudo = { - isNormalUser = true; - extraGroups = [ "wheel" ]; - openssh.authorizedKeys.keys = [ - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN3B9Uf3h5JiD2HjF/vQ5Zx9pibMgRrlf7ZoBktev9eB Warden" - ]; - }; + # Allow root to be accessed via ssh + users.users.root.openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN3B9Uf3h5JiD2HjF/vQ5Zx9pibMgRrlf7ZoBktev9eB Warden" + ]; } From 72d7b9d03894ee9ff20fe8d2ddab10a13c1616f4 Mon Sep 17 00:00:00 2001 From: Bun Date: Sun, 1 Jun 2025 19:10:33 -0400 Subject: [PATCH 79/98] Change permissions of Mycelium key folder --- modules/system/devices/networking/mycelium/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/system/devices/networking/mycelium/default.nix b/modules/system/devices/networking/mycelium/default.nix index f8a21214..82ae571d 100644 --- a/modules/system/devices/networking/mycelium/default.nix +++ b/modules/system/devices/networking/mycelium/default.nix @@ -14,5 +14,5 @@ ]; }; - environment.persistence."/persist".directories = [ "/var/lib/private/mycelium" ]; + environment.persistence."/persist".directories = [ { directory = "/var/lib/private/mycelium"; mode = "0700"; } ]; } From 43546073cfe64886ac6a6c11a2ccf702448f1b5d Mon Sep 17 00:00:00 2001 From: Bun Date: Mon, 2 Jun 2025 16:47:10 -0400 Subject: [PATCH 80/98] Add lingering, remove kill on exit, fix smallfetch, replace tmux with zellij --- modules/home/programs/terminal/default.nix | 2 +- .../terminal/fastfetch/smallfetch/default.nix | 2 +- .../home/programs/terminal/tmux/default.nix | 24 ------------------- .../home/programs/terminal/zellij/default.nix | 13 ++++++++++ modules/system/settings/logind/default.nix | 1 - modules/system/users/main/default.nix | 1 + 6 files changed, 16 insertions(+), 27 deletions(-) delete mode 100644 modules/home/programs/terminal/tmux/default.nix create mode 100644 modules/home/programs/terminal/zellij/default.nix diff --git a/modules/home/programs/terminal/default.nix b/modules/home/programs/terminal/default.nix index 43a041ea..5fbad56b 100644 --- a/modules/home/programs/terminal/default.nix +++ b/modules/home/programs/terminal/default.nix @@ -14,8 +14,8 @@ ./nix-index ./ranger ./ssh - ./tmux ./yt-dlp + ./zellij ./zoxide ./zsh ]; diff --git a/modules/home/programs/terminal/fastfetch/smallfetch/default.nix b/modules/home/programs/terminal/fastfetch/smallfetch/default.nix index 7fe46f91..fcd5fddd 100644 --- a/modules/home/programs/terminal/fastfetch/smallfetch/default.nix +++ b/modules/home/programs/terminal/fastfetch/smallfetch/default.nix @@ -3,7 +3,7 @@ home.packages = with pkgs; with lib; with config.home; with config.xdg; [ (writeScriptBin "smallfetch" '' #!/bin/sh - fastfetch --config ${removePrefix "${homeDirectory}/" configHome}/fastfetch/small.jsonc + fastfetch --config $HOME/${removePrefix "${homeDirectory}/" configHome}/fastfetch/small.jsonc '') ]; diff --git a/modules/home/programs/terminal/tmux/default.nix b/modules/home/programs/terminal/tmux/default.nix deleted file mode 100644 index 338fa76e..00000000 --- a/modules/home/programs/terminal/tmux/default.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ ... }: -{ - programs.tmux = { - enable = true; - keyMode = "vi"; - mouse = true; - terminal = "st-256color"; - historyLimit = 4096; - baseIndex = 1; - extraConfig = '' - set -g status on - set -g status-left "" - set -g status-position bottom - set -g status-right "#[bg=brightblack]#[fg=dark_purple] #T " - set -g status-style "bg=black" - - set -g set-titles on - set -g set-titles-string "#T" - - setw -g window-status-format "#[bg=brightmagenta]#[fg=black] #I #[bg=brightblack]#[fg=white] #W " - setw -g window-status-current-format "#[bg=brightmagenta]#[fg=black] #I #[bg=white]#[fg=black] #W " - ''; - }; -} diff --git a/modules/home/programs/terminal/zellij/default.nix b/modules/home/programs/terminal/zellij/default.nix new file mode 100644 index 00000000..e37bff8e --- /dev/null +++ b/modules/home/programs/terminal/zellij/default.nix @@ -0,0 +1,13 @@ +{ config, lib, ... }: +{ + programs.zellij = { + enable = true; + attachExistingSession = true; + }; + + home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = + with lib; with config.home; with config.xdg; [ + "state/${removePrefix "${homeDirectory}/" cacheHome}/zellij" + "state/${removePrefix "${homeDirectory}/" configHome}/zellij" + ]; +} diff --git a/modules/system/settings/logind/default.nix b/modules/system/settings/logind/default.nix index a5b4471f..4df55cd5 100644 --- a/modules/system/settings/logind/default.nix +++ b/modules/system/settings/logind/default.nix @@ -1,7 +1,6 @@ { config, lib, ... }: { services.logind = { - killUserProcesses = true; powerKey = lib.mkIf config.system.desktop.enable "suspend"; powerKeyLongPress = "reboot"; }; diff --git a/modules/system/users/main/default.nix b/modules/system/users/main/default.nix index c306192a..7c65165f 100644 --- a/modules/system/users/main/default.nix +++ b/modules/system/users/main/default.nix @@ -10,6 +10,7 @@ users.users."${config.sysusers.main}" = { isNormalUser = true; createHome = true; + linger = true; hashedPassword = config.secrets.accPass.main; openssh.authorizedKeys.keyFiles = [ ../../../../hosts/tower/id_ed25519.pub From dbc0ab6dd36082d9b2a3d5a9799ae1f7ec6fba85 Mon Sep 17 00:00:00 2001 From: Bun Date: Tue, 3 Jun 2025 01:44:05 -0400 Subject: [PATCH 81/98] Switch to more reliable Steam mount, add new network --- .../misc/gaming/launchers/default.nix | 5 ++++- modules/system/secrets/networks/default.nix | Bin 1111 -> 1205 bytes 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/home/programs/misc/gaming/launchers/default.nix b/modules/home/programs/misc/gaming/launchers/default.nix index 92c1e23b..2cc451d0 100644 --- a/modules/home/programs/misc/gaming/launchers/default.nix +++ b/modules/home/programs/misc/gaming/launchers/default.nix @@ -14,12 +14,15 @@ "games/${removePrefix "${homeDirectory}/" "Games"}" "games/${removePrefix "${homeDirectory}/" configHome}/heroic" "games/${removePrefix "${homeDirectory}/" dataHome}/PrismLauncher" + { + directory = "games/.steam"; + method = "symlink"; + } { directory = "games/${removePrefix "${homeDirectory}/" dataHome}/Steam"; method = "symlink"; } ]; - files = [ "games/.steam/registry.vdf" ]; }; }; diff --git a/modules/system/secrets/networks/default.nix b/modules/system/secrets/networks/default.nix index 69744caa0a446099efd11f4960de5af533b39d93..78d2b0bb0b14dfdd69985df99a64b531b8ce93a1 100644 GIT binary patch literal 1205 zcmZQ@_Y83kiVO&0Q0iq`yM<{^@~NX%e*NEe3UVBpVy`-rNA+vzTT2nus9$r7I>Z`x zP4Wym~4jEPr>E3IpwB1(=S(L@$Q=NWm)=1W&z&cl4Ty6v#i)kH~M;Azw$w$ z;%|ic^VFp$AHRG2H!W5@T$C?;Momllik4N&zWje_V3pW(xgnuro|eb`d(qzd)xQjz z>uxdRK0R~fe}h(!y#6|eJ+X;`A8go@WE*cRUjOrvH9xmf@z;*1_7m&V_rH+e*RA|G z`;-n}{k#|Qi=3|KC2nl~VwV>bV4WDkb$#|Wrcdm zn>;Pzz>kVG7Z)7j}9GzLeFH}Wd+u~V&ZD}H}(5;O{_Ug~IPR>ntH|$wB>2Q3CKKC_&^%@uC z=P@0V`+Ze!g5C9~rd@4k@2_~f@0G;Qje;SQdUpArY^a^J?Q135-lzWyd0wT>5qY*J z)!F<(?lc|u$z8WsR*Sx~FLd93^L5wV&6(UUcmAmQ`2E~NjjZP@Z(RNqA+ai4GSXD% z?87yLw)xz~bHx-ANxebEwt& zT+Ey8di}S;TJ4;kin(*XJ#Ts#V|QJUB&v}4XR&$cSprhDo>x0s() z_V3#EcXRs@xlH!;?HnP;ScG0)WH*ztn4YQgkxTJpgjdOV##phrSJ%e=+SYAUCil(Z z#fp_n^io#O_|*Awo5a;WjNK+Wl>)9-;@{-AX?B(s-0EAa%<^UGLN=~2{r_R{Z=Nw5 z&Z)ay@}Vbc;zWNT^9Mc)?#$k~asm6QD(B2M+BqCg1QM6-WXt~c;r!ds6oHqMllLS% zp1Aym+}oL#KiM5$+v$JsZ;4g~3pfAI)u+B5>nX3{oYvF(=2nGF%rlv*+j9B8nyp*+ zXvTJyT`KRiEEa9EEHVA`c6MjY?SRX_A{JFTBxJV4G$piV^BON-)+$ms`Q+0LjJhrP zRoZ74rtt)9YF~eRIn&SA(^hrmR~4{|ZRa}nv3%;i8zxWFWk27$z%=*9uO-b7#W($N zo^M>36zdd==X6Qx#+_CT4i-N-cvjR2FJKXfyB=I-?Sh@dw eA^9y4ReL(3YSdi59QJx4{;cMPt-+T`jLZO9U0;a+ literal 1111 zcmZQ@_Y83kiVO&0Fur%{#)|80pA)5Llx{L~XxVFKa(sr^!XmNPZqMg+BRd zP0Q-z%a&>NKCn{KZ1~>rWSc_JjU6(RN?w%y_02AR?`rqF(A*_)!33Vz>#Hiyy?U?9 zbX<|k*;BVhz>`aHt--di4~P9;2q_*p`ufl3e;*F{tIUaRkcmCsz_nx2UcK!{Q_Pn6 z?z+^qnoCEAXa3zg7deVocbkUuzOb4tvFMH)cj~Rok^|lP&KtaMe>VTpe&+X%V{@it zPG~rL-lO%2$*cDo(fNUEn@$yrWS-(t72AF(Zpvn5hB>p2Co@iT{8rk3N$tnsbAK4; zMZ8%i5U9O3`{U*Mz1h|w8-o7VJ8Kl}J)me&IZ5z+qf@__d8L>0reD2hLiacL`N^)H zFjZ~Krf=;wT$T%uOXbIzt8AU-65^A1NjcATn^8|N_wnSfVU6=zYMwI4PYwK>tHgJ> z#e1R9{aN?e7wdmhV=5B=dhGITvA031ebGJGo!eF~(W>}sRR86@#r%5<&UmlOl$h2rTBb{a4GY2?I}~OldKoi9Wm^lz#FqUZbCwp#HxgO)Al_5`Tq|yi$+dG z#?!r5rhZ*|Px?n=*XocR*1R7rnpp*{|4*urH{U)d&@gM2;H>qQ#Trrfq8==Gcs$bC zws)(}X2pM7cSvh)e(Q2te0o=@#r;)b(Q8)(Y}9efdZAeNc+b(JIqiBz2XD_lci(Vf z!4dxkK1s$&0?!t?DZWYPPrEzA>vuNWtJ;J{_PsqSy!<`wkr%l)-Z<WXos5m zs|9Mso1c~L-+ybdyqnz;4$j2obNJ%I<1(Xoc{l6{ioAJ!`uPBdojw;XKah(Td&>O# z?8fKitMBf6wN_$X?|vC>;rkf}PX0Z5CdW8?uGzJ2Th#*HXhR4#CZy z>wNF_ycdx>nQC#6)85FLW5<@?>T%D#D>HYjsrouw_sPnj-YNH13+TR#@tqwUkuGZR zdg{y{k@NOl?DQ)VIgpXBAQdAuiNAH3oT0?Y zy3F2ZrA*9qR$pt)pZz#xnr+qckI&Bw1}?OY>RfUwV#VCz>nc)H`Gpu>eVV_ZK;*M+ zOYicJ#~*NCQlIwd`fSfFRaYbZi^|^5`Ev5ezg4~qqr089hR5|jcyn)ls(gz5S#71W zwp-R^C$e<%J!35P>M%Auyf^)bs)33hbN<}lyX|J^%(#DT-*x}9LBIUmnmp{;WQ`fG zrlvRrU)}rUp`;l9`O*U|OFp&k%*hGe`F<6@yYyVuYfiI&fALq!&0xH&CY|2-Me=%z iT)XBvolC#^S#uIp_!Ji2VV9DA>$#WZmwa=7eJlX;LLs#P From 7667ef9a1b88aa85520077b5d5c9b626b09f9d78 Mon Sep 17 00:00:00 2001 From: Bun Date: Wed, 4 Jun 2025 16:12:08 -0400 Subject: [PATCH 82/98] Update a lot of options, simplify variables, replace options with tags --- flake.lock | 12 +-- hosts/detritus/colmena/default.nix | 10 -- hosts/detritus/default.nix | 5 +- hosts/detritus/filesystems/default.nix | 44 +------- hosts/detritus/hardware/default.nix | 7 +- hosts/detritus/user/default.nix | 2 +- hosts/hidden/colmena/default.nix | 10 -- hosts/hidden/default.nix | 7 +- hosts/hidden/hardware/default.nix | 10 +- hosts/hidden/user/default.nix | 2 +- hosts/intuos/colmena/default.nix | 10 -- hosts/intuos/default.nix | 5 +- hosts/intuos/filesystems/default.nix | 34 +------ hosts/intuos/hardware/default.nix | 7 +- hosts/intuos/user/default.nix | 2 +- hosts/jupiter/colmena/default.nix | 10 -- hosts/jupiter/default.nix | 5 +- hosts/jupiter/filesystems/default.nix | 35 +------ hosts/jupiter/hardware/default.nix | 7 +- hosts/jupiter/jovian/default.nix | 2 +- hosts/jupiter/user/default.nix | 2 +- hosts/kitty/colmena/default.nix | 7 -- hosts/kitty/default.nix | 13 ++- hosts/kitty/filesystems/default.nix | 24 +---- hosts/kitty/hardware/default.nix | 7 +- hosts/kitty/user/default.nix | 2 +- hosts/midas/colmena/default.nix | 7 -- hosts/midas/default.nix | 7 +- hosts/midas/filesystems/default.nix | 17 ++-- hosts/midas/hardware/default.nix | 7 +- hosts/midas/network/default.nix | 1 + hosts/midas/services/default.nix | 5 +- hosts/midas/services/nginx/default.nix | 6 ++ .../midas/services/nginx}/nixfox/default.nix | 2 +- hosts/midas/user/default.nix | 2 +- hosts/prophet/colmena/default.nix | 8 -- hosts/prophet/default.nix | 12 ++- hosts/prophet/filesystems/default.nix | 20 ++-- hosts/prophet/hardware/default.nix | 4 +- hosts/prophet/services/default.nix | 3 +- hosts/prophet/user/@! | 6 ++ hosts/prophet/user/default.nix | 2 +- hosts/tower/boot/default.nix | 11 +- hosts/tower/colmena/default.nix | 2 +- hosts/tower/default.nix | 8 +- hosts/tower/filesystems/default.nix | 34 +------ hosts/tower/hardware/default.nix | 7 +- hosts/tower/user/default.nix | 2 +- modules/home/default.nix | 2 +- modules/home/programs/gui/foot/default.nix | 9 +- .../home/programs/gui/librewolf/default.nix | 24 ++--- .../home/programs/terminal/neovim/default.nix | 4 +- .../settings/fonts/fontconfig/default.nix | 4 +- modules/home/settings/gtk/theme/default.nix | 4 +- modules/home/settings/xdg/default.nix | 5 +- .../home/settings/xdg/defaults/default.nix | 21 ---- .../xdg/{folders => dirs}/default.nix | 2 +- .../variables/{look => }/border/default.nix | 2 +- .../variables/{look => }/colors/default.nix | 2 +- modules/home/variables/default.nix | 10 +- modules/home/variables/displays/default.nix | 8 +- .../variables/{look => }/fonts/default.nix | 2 +- modules/home/variables/look/default.nix | 12 --- modules/home/variables/workspaces/default.nix | 8 +- modules/home/wms/programs/kanshi/default.nix | 22 ++-- modules/home/wms/programs/mako/default.nix | 8 +- modules/home/wms/programs/rofi/default.nix | 28 +++--- .../home/wms/programs/swaylock/default.nix | 8 +- .../programs/wallpapers/wpaperd/default.nix | 4 +- modules/home/wms/programs/waybar/default.nix | 25 +++-- modules/home/wms/sway/hotkeys/default.nix | 78 +++++++-------- modules/home/wms/sway/outputs/default.nix | 53 +++++----- modules/home/wms/sway/rules/default.nix | 16 +-- modules/home/wms/sway/theme/default.nix | 44 ++++---- modules/system/default.nix | 11 +- modules/system/devices/audio/default.nix | 4 +- modules/system/devices/bluetooth/default.nix | 10 +- modules/system/devices/boot/default.nix | 1 - modules/system/devices/default.nix | 1 + .../devices/disks/filesystems/default.nix | 11 +- modules/system/devices/networking/default.nix | 1 + .../devices/networking/mounts/default.nix | 32 ++++++ .../devices/networking/wireless/default.nix | 4 +- modules/system/devices/printing/default.nix | 2 +- modules/system/devices/tlp/default.nix | 31 ++++++ modules/system/devices/udev/default.nix | 5 +- modules/system/devices/video/default.nix | 2 +- .../system/devices/video/nvidia/default.nix | 12 +-- modules/system/programs/desktops/default.nix | 2 +- modules/system/programs/gaming/default.nix | 2 +- modules/system/programs/udevil/default.nix | 4 +- modules/system/secrets/default.nix | Bin 1662 -> 1640 bytes modules/system/services/general/default.nix | 1 - .../general/displaymanager/default.nix | 2 +- .../services/general/libvirtd/default.nix | 12 ++- .../system/services/general/tlp/default.nix | 4 - .../services/server/cfdyndns/default.nix | 2 +- modules/system/services/server/default.nix | 1 - .../services/server/forgejo/default.nix | 12 +-- .../services/server/forgejo/nginx/default.nix | 2 +- .../services/server/icecast/default.nix | 6 +- .../services/server/icecast/nginx/default.nix | 2 +- .../server/jellyfin/nginx/default.nix | 2 +- .../system/services/server/lemmy/default.nix | 22 ---- .../services/server/lemmy/nginx/default.nix | 7 -- .../services/server/mailserver/default.nix | 70 ++++++++++++- .../mailserver/go-autoconfig/default.nix | 2 +- .../go-autoconfig/nginx/default.nix | 2 +- .../server/mailserver/radicale/default.nix | 2 +- .../mailserver/radicale/nginx/default.nix | 2 +- .../server/mailserver/roundcube/default.nix | 6 +- .../server/mailserver/simplenix/default.nix | 72 -------------- .../services/server/matrix/coturn/default.nix | 2 +- .../server/matrix/coturn/nginx/default.nix | 10 +- .../server/matrix/element/default.nix | 10 +- .../server/matrix/element/nginx/default.nix | 2 +- .../server/matrix/synapse/default.nix | 10 +- .../server/matrix/synapse/nginx/default.nix | 2 +- .../minecraft/servers/blockworld/default.nix | 2 +- .../minecraft/servers/cornworld/default.nix | 2 +- .../server/minecraft/servers/default.nix | 1 - .../servers/dewdemolisher/default.nix | 2 +- .../minecraft/servers/johnside/default.nix | 2 +- .../minecraft/servers/marsh/default.nix | 2 +- .../minecraft/servers/roguecraft/default.nix | 36 ------- .../minecraft/servers/skyblock/default.nix | 2 +- .../minecraft/servers/uberbeta/default.nix | 2 +- .../services/server/nextcloud/default.nix | 10 +- .../server/nextcloud/nginx/default.nix | 2 +- .../services/server/nginx/acme/default.nix | 2 +- .../system/services/server/nginx/default.nix | 14 ++- .../services/server/nginx/hosts/default.nix | 9 -- .../server/nginx/hosts/files/default.nix | 8 -- .../services/server/nginx/rtmp/default.nix | 34 ------- .../services/server/owncast/nginx/default.nix | 2 +- .../services/server/transmission/default.nix | 1 + .../server/transmission/nginx/default.nix | 2 +- .../services/server/vaultwarden/default.nix | 8 +- .../server/vaultwarden/nginx/default.nix | 2 +- modules/system/settings/logind/default.nix | 2 +- .../settings/security/rtkit/default.nix | 2 +- modules/system/users/corn/default.nix | 19 ---- modules/system/users/default.nix | 10 +- modules/system/users/freecorn/default.nix | 19 ++++ modules/system/users/luna/default.nix | 28 +++--- modules/system/users/main/default.nix | 94 ++++++++---------- modules/system/variables/default.nix | 11 ++ 147 files changed, 663 insertions(+), 928 deletions(-) delete mode 100644 hosts/detritus/colmena/default.nix delete mode 100644 hosts/hidden/colmena/default.nix delete mode 100644 hosts/intuos/colmena/default.nix delete mode 100644 hosts/jupiter/colmena/default.nix delete mode 100644 hosts/kitty/colmena/default.nix delete mode 100644 hosts/midas/colmena/default.nix create mode 100644 hosts/midas/services/nginx/default.nix rename {modules/system/services/server/nginx/hosts => hosts/midas/services/nginx}/nixfox/default.nix (90%) delete mode 100644 hosts/prophet/colmena/default.nix create mode 100644 hosts/prophet/user/@! delete mode 100644 modules/home/settings/xdg/defaults/default.nix rename modules/home/settings/xdg/{folders => dirs}/default.nix (91%) rename modules/home/variables/{look => }/border/default.nix (72%) rename modules/home/variables/{look => }/colors/default.nix (94%) rename modules/home/variables/{look => }/fonts/default.nix (83%) delete mode 100644 modules/home/variables/look/default.nix create mode 100644 modules/system/devices/networking/mounts/default.nix create mode 100644 modules/system/devices/tlp/default.nix delete mode 100644 modules/system/services/general/tlp/default.nix delete mode 100644 modules/system/services/server/lemmy/default.nix delete mode 100644 modules/system/services/server/lemmy/nginx/default.nix delete mode 100644 modules/system/services/server/mailserver/simplenix/default.nix delete mode 100644 modules/system/services/server/minecraft/servers/roguecraft/default.nix delete mode 100644 modules/system/services/server/nginx/hosts/default.nix delete mode 100644 modules/system/services/server/nginx/hosts/files/default.nix delete mode 100644 modules/system/services/server/nginx/rtmp/default.nix delete mode 100644 modules/system/users/corn/default.nix create mode 100644 modules/system/users/freecorn/default.nix create mode 100644 modules/system/variables/default.nix diff --git a/flake.lock b/flake.lock index 1a131f0f..ed171014 100644 --- a/flake.lock +++ b/flake.lock @@ -523,11 +523,11 @@ }, "stable": { "locked": { - "lastModified": 1748437600, - "narHash": "sha256-hYKMs3ilp09anGO7xzfGs3JqEgUqFMnZ8GMAqI6/k04=", + "lastModified": 1749024892, + "narHash": "sha256-OGcDEz60TXQC+gVz5sdtgGJdKVYr6rwdzQKuZAJQpCA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "7282cb574e0607e65224d33be8241eae7cfe0979", + "rev": "8f1b52b04f2cb6e5ead50bd28d76528a2f0380ef", "type": "github" }, "original": { @@ -589,11 +589,11 @@ }, "unstable": { "locked": { - "lastModified": 1748460289, - "narHash": "sha256-7doLyJBzCllvqX4gszYtmZUToxKvMUrg45EUWaUYmBg=", + "lastModified": 1748929857, + "narHash": "sha256-lcZQ8RhsmhsK8u7LIFsJhsLh/pzR9yZ8yqpTzyGdj+Q=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "96ec055edbe5ee227f28cdbc3f1ddf1df5965102", + "rev": "c2a03962b8e24e669fb37b7df10e7c79531ff1a4", "type": "github" }, "original": { diff --git a/hosts/detritus/colmena/default.nix b/hosts/detritus/colmena/default.nix deleted file mode 100644 index 654be402..00000000 --- a/hosts/detritus/colmena/default.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ config, ... }: -{ - deployment = { - tags = [ - "latptop" - "pc" - ]; - targetHost = ""; - }; -} diff --git a/hosts/detritus/default.nix b/hosts/detritus/default.nix index 209d0479..d5241c60 100644 --- a/hosts/detritus/default.nix +++ b/hosts/detritus/default.nix @@ -2,7 +2,6 @@ { imports = [ ./boot - ./colmena ./disko ./filesystems ./hardware @@ -11,7 +10,9 @@ ]; system = { - desktop.enable = true; + nixos.tags = [ "pc" ]; stateVersion = "25.05"; }; + + deployment.targetHost = ""; } diff --git a/hosts/detritus/filesystems/default.nix b/hosts/detritus/filesystems/default.nix index d8b41833..8d38c55d 100644 --- a/hosts/detritus/filesystems/default.nix +++ b/hosts/detritus/filesystems/default.nix @@ -1,7 +1,6 @@ -{ config, nodes, ... }: +{ ... }: { - fileSystems = with config.sysusers; with nodes; { - # Local mounts + fileSystems = { "/persist/storage" = { device = "/dev/disk/by-uuid/d0d6783f-ad51-4d85-b8a9-3374f6460ef6"; fsType = "btrfs"; @@ -11,43 +10,10 @@ "subvol=storage" ]; }; - "/persist/home/${main}/games" = { - device = "/dev/disk/by-uuid/d0d6783f-ad51-4d85-b8a9-3374f6460ef6"; - fsType = "btrfs"; - options = [ - "nofail" - "nosuid" - "subvol=games" - ]; - }; # Network mounts - "/home/${main}/Network/Midas" = { - device = "[${midas.config.deployment.targetHost}]:/storage"; - fsType = "nfs4"; - options = [ - "noauto" - "soft" - "x-systemd.automount" - ]; - }; - "/home/${main}/Network/Kitty" = { - device = "[${kitty.config.deployment.targetHost}]:/storage/bun"; - fsType = "nfs4"; - options = [ - "noauto" - "soft" - "x-systemd.automount" - ]; - }; - "/home/${main}/Network/Prophet" = { - device = "[${prophet.config.deployment.targetHost}]:/storage"; - fsType = "nfs4"; - options = [ - "noauto" - "soft" - "x-systemd.automount" - ]; - }; + "kitty".enable = true; + "midas".enable = true; + "prophet".enable = true; }; } diff --git a/hosts/detritus/hardware/default.nix b/hosts/detritus/hardware/default.nix index 3154c225..73a80f35 100644 --- a/hosts/detritus/hardware/default.nix +++ b/hosts/detritus/hardware/default.nix @@ -1,4 +1,4 @@ -{ config, lib, modulesPath, ... }: +{ modulesPath, ... }: { imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; @@ -17,6 +17,7 @@ kernelModules = [ "kvm-intel" ]; }; - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + hardware.cpu.intel.updateMicrocode = true; + + nixpkgs.hostPlatform = "x86_64-linux"; } diff --git a/hosts/detritus/user/default.nix b/hosts/detritus/user/default.nix index 90368007..7f8f4e27 100644 --- a/hosts/detritus/user/default.nix +++ b/hosts/detritus/user/default.nix @@ -1,6 +1,6 @@ { config, lib, pkgs, ... }: { - home-manager.users."${config.sysusers.main}" = { + home-manager.users."${config.vars.mainUser}" = { home = { desktop.enable = true; gaming.enable = true; diff --git a/hosts/hidden/colmena/default.nix b/hosts/hidden/colmena/default.nix deleted file mode 100644 index fee43533..00000000 --- a/hosts/hidden/colmena/default.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ config, ... }: -{ - deployment = { - tags = [ - "misc" - "pc" - ]; - targetHost = "4ec:1001:ca5a:ae79:40e2:cb4c:e3c9:f401"; - }; -} diff --git a/hosts/hidden/default.nix b/hosts/hidden/default.nix index c552cd89..cff6beaf 100644 --- a/hosts/hidden/default.nix +++ b/hosts/hidden/default.nix @@ -1,8 +1,7 @@ -{ lib, ... }: +{ ... }: { imports = [ ./boot - ./colmena ./disko ./hardware ./services @@ -11,7 +10,9 @@ ]; system = { - desktop.enable = true; + nixos.tags = [ "pc" ]; stateVersion = "24.11"; }; + + deployment.targetHost = "4ec:1001:ca5a:ae79:40e2:cb4c:e3c9:f401"; } diff --git a/hosts/hidden/hardware/default.nix b/hosts/hidden/hardware/default.nix index 46514093..93d299a4 100644 --- a/hosts/hidden/hardware/default.nix +++ b/hosts/hidden/hardware/default.nix @@ -1,4 +1,4 @@ -{ config, lib, modulesPath, ... }: +{ modulesPath, ... }: { imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; @@ -18,6 +18,10 @@ kernelModules = [ "kvm-intel" ]; }; - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + hardware.cpu = { + amd.updateMicrocode = true; + intel.updateMicrocode = true; + }; + + nixpkgs.hostPlatform = "x86_64-linux"; } diff --git a/hosts/hidden/user/default.nix b/hosts/hidden/user/default.nix index 4e49c399..129d9409 100644 --- a/hosts/hidden/user/default.nix +++ b/hosts/hidden/user/default.nix @@ -1,6 +1,6 @@ { config, lib, ... }: { - home-manager.users."${config.sysusers.main}".home = { + home-manager.users."${config.vars.mainUser}".home = { desktop.enable = true; school.enable = true; stateVersion = lib.mkForce config.system.stateVersion; diff --git a/hosts/intuos/colmena/default.nix b/hosts/intuos/colmena/default.nix deleted file mode 100644 index 65811f1e..00000000 --- a/hosts/intuos/colmena/default.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ config, ... }: -{ - deployment = { - tags = [ - "latptop" - "pc" - ]; - targetHost = "40e:404:a427:da33:163e:97b3:a2a3:9ed4"; - }; -} diff --git a/hosts/intuos/default.nix b/hosts/intuos/default.nix index b12e9c30..98bf8713 100644 --- a/hosts/intuos/default.nix +++ b/hosts/intuos/default.nix @@ -2,7 +2,6 @@ { imports = [ ./boot - ./colmena ./disko ./filesystems ./hardware @@ -11,7 +10,9 @@ ]; system = { - desktop.enable = true; + nixos.tags = [ "pc" ]; stateVersion = "24.11"; }; + + deployment.targetHost = "40e:404:a427:da33:163e:97b3:a2a3:9ed4"; } diff --git a/hosts/intuos/filesystems/default.nix b/hosts/intuos/filesystems/default.nix index dc72c3fd..ee9adee1 100644 --- a/hosts/intuos/filesystems/default.nix +++ b/hosts/intuos/filesystems/default.nix @@ -1,33 +1,9 @@ -{ config, nodes, ... }: +{ ... }: { - fileSystems = with config.sysusers; with nodes; { + fileSystems = { # Network mounts - "/home/${main}/Network/Midas" = { - device = "[${midas.config.deployment.targetHost}]:/storage"; - fsType = "nfs4"; - options = [ - "noauto" - "soft" - "x-systemd.automount" - ]; - }; - "/home/${main}/Network/Kitty" = { - device = "[${kitty.config.deployment.targetHost}]:/storage/bun"; - fsType = "nfs4"; - options = [ - "noauto" - "soft" - "x-systemd.automount" - ]; - }; - "/home/${main}/Network/Prophet" = { - device = "[${prophet.config.deployment.targetHost}]:/storage"; - fsType = "nfs4"; - options = [ - "noauto" - "soft" - "x-systemd.automount" - ]; - }; + "kitty".enable = true; + "midas".enable = true; + "prophet".enable = true; }; } diff --git a/hosts/intuos/hardware/default.nix b/hosts/intuos/hardware/default.nix index a6b9aa1b..bf6c9f70 100644 --- a/hosts/intuos/hardware/default.nix +++ b/hosts/intuos/hardware/default.nix @@ -1,4 +1,4 @@ -{ config, lib, modulesPath, ... }: +{ modulesPath, ... }: { imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; @@ -16,6 +16,7 @@ kernelModules = [ "kvm-intel" ]; }; - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + hardware.cpu.intel.updateMicrocode = true; + + nixpkgs.hostPlatform = "x86_64-linux"; } diff --git a/hosts/intuos/user/default.nix b/hosts/intuos/user/default.nix index b609338c..ad39df5c 100644 --- a/hosts/intuos/user/default.nix +++ b/hosts/intuos/user/default.nix @@ -1,6 +1,6 @@ { config, lib, ... }: { - home-manager.users."${config.sysusers.main}".home = { + home-manager.users."${config.vars.mainUser}".home = { desktop.enable = true; production.enable = true; stateVersion = lib.mkForce config.system.stateVersion; diff --git a/hosts/jupiter/colmena/default.nix b/hosts/jupiter/colmena/default.nix deleted file mode 100644 index 29231ea0..00000000 --- a/hosts/jupiter/colmena/default.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ config, ... }: -{ - deployment = { - tags = [ - "latptop" - "pc" - ]; - targetHost = "5ce:969c:40d1:9575:f5e:591d:c377:a20b"; - }; -} diff --git a/hosts/jupiter/default.nix b/hosts/jupiter/default.nix index e2fad6f5..cf2feb40 100644 --- a/hosts/jupiter/default.nix +++ b/hosts/jupiter/default.nix @@ -2,7 +2,6 @@ { imports = [ ./boot - ./colmena ./disko ./filesystems ./hardware @@ -13,8 +12,10 @@ ]; system = { - desktop.enable = true; + nixos.tags = [ "pc" ]; steamdeck.enable = true; stateVersion = "24.11"; }; + + deployment.targetHost = "5ce:969c:40d1:9575:f5e:591d:c377:a20b"; } diff --git a/hosts/jupiter/filesystems/default.nix b/hosts/jupiter/filesystems/default.nix index f2428858..33a063c6 100644 --- a/hosts/jupiter/filesystems/default.nix +++ b/hosts/jupiter/filesystems/default.nix @@ -1,7 +1,6 @@ -{ config, nodes, ... }: +{ config, ... }: { - fileSystems = with config.sysusers; with nodes; { - # Local mounts + fileSystems = { "/mnt/Games" = { device = "/dev/disk/by-uuid/cb109a85-846d-4417-9c50-a2279bd20803"; fsType = "btrfs"; @@ -12,32 +11,8 @@ }; # Network mounts - "/home/${main}/Network/Midas" = { - device = "[${midas.config.deployment.targetHost}]:/storage"; - fsType = "nfs4"; - options = [ - "noauto" - "soft" - "x-systemd.automount" - ]; - }; - "/home/${main}/Network/Kitty" = { - device = "[${kitty.config.deployment.targetHost}]:/storage/bun"; - fsType = "nfs4"; - options = [ - "noauto" - "soft" - "x-systemd.automount" - ]; - }; - "/home/${main}/Network/Prophet" = { - device = "[${prophet.config.deployment.targetHost}]:/storage"; - fsType = "nfs4"; - options = [ - "noauto" - "soft" - "x-systemd.automount" - ]; - }; + "kitty".enable = !config.system.steamdeck.enable; + "midas".enable = !config.system.steamdeck.enable; + "prophet".enable = !config.system.steamdeck.enable; }; } diff --git a/hosts/jupiter/hardware/default.nix b/hosts/jupiter/hardware/default.nix index a3e7b2bf..811cc7c9 100644 --- a/hosts/jupiter/hardware/default.nix +++ b/hosts/jupiter/hardware/default.nix @@ -1,4 +1,4 @@ -{ config, lib, modulesPath, ... }: +{ modulesPath, ... }: { imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; @@ -15,6 +15,7 @@ kernelModules = [ "kvm-amd" ]; }; - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + hardware.cpu.amd.updateMicrocode = true; + + nixpkgs.hostPlatform = "x86_64-linux"; } diff --git a/hosts/jupiter/jovian/default.nix b/hosts/jupiter/jovian/default.nix index 68264bb0..0384fe5f 100644 --- a/hosts/jupiter/jovian/default.nix +++ b/hosts/jupiter/jovian/default.nix @@ -30,9 +30,9 @@ programs.steam.extest.enable = true; services = { + desktopManager.gnome.enable = true; keyd.enable = lib.mkForce false; tlp.enable = lib.mkForce false; - desktopManager.gnome.enable = true; }; hardware.xone.enable = true; diff --git a/hosts/jupiter/user/default.nix b/hosts/jupiter/user/default.nix index 94de4373..0298f932 100644 --- a/hosts/jupiter/user/default.nix +++ b/hosts/jupiter/user/default.nix @@ -1,6 +1,6 @@ { config, lib, ... }: { - home-manager.users."${config.sysusers.main}".home = { + home-manager.users."${config.vars.mainUser}".home = { guifull.enable = true; school.enable = true; enableNixpkgsReleaseCheck = false; diff --git a/hosts/kitty/colmena/default.nix b/hosts/kitty/colmena/default.nix deleted file mode 100644 index a9d36fa0..00000000 --- a/hosts/kitty/colmena/default.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ config, ... }: -{ - deployment = { - tags = [ "server" ]; - targetHost = "53f:dc2d:80c9:3ca2:4b15:ef4d:38a0:c868"; - }; -} diff --git a/hosts/kitty/default.nix b/hosts/kitty/default.nix index 908f7d33..29f7a690 100644 --- a/hosts/kitty/default.nix +++ b/hosts/kitty/default.nix @@ -2,7 +2,6 @@ { imports = [ ./boot - ./colmena ./disko ./filesystems ./hardware @@ -10,13 +9,17 @@ ../../modules/system ]; - networking.hostId = "8745e22e"; - system = { - server.enable = true; - extraUsers.enable = true; + nixos.tags = [ + "extra-users" + "server" + ]; stateVersion = "24.11"; }; + deployment.targetHost = "53f:dc2d:80c9:3ca2:4b15:ef4d:38a0:c868"; + + networking.hostId = "8745e22e"; + services.nfs.server.enable = true; } diff --git a/hosts/kitty/filesystems/default.nix b/hosts/kitty/filesystems/default.nix index 71035999..c23bf7ca 100644 --- a/hosts/kitty/filesystems/default.nix +++ b/hosts/kitty/filesystems/default.nix @@ -1,6 +1,6 @@ -{ config, nodes, ... }: +{ ... }: { - fileSystems = with config.sysusers; with nodes; { + fileSystems = { "/persist/storage" = { device = "/dev/disk/by-uuid/edd3e293-1aff-4fc0-96fa-4e17d6cccfca"; fsType = "btrfs"; @@ -11,23 +11,7 @@ }; # Network mounts - "/home/${main}/Network/Midas" = { - device = "[${midas.config.deployment.targetHost}]:/storage"; - fsType = "nfs4"; - options = [ - "noauto" - "soft" - "x-systemd.automount" - ]; - }; - "/home/${main}/Network/Prophet" = { - device = "[${prophet.config.deployment.targetHost}]:/storage"; - fsType = "nfs4"; - options = [ - "noauto" - "soft" - "x-systemd.automount" - ]; - }; + "midas".enable = true; + "prophet".enable = true; }; } diff --git a/hosts/kitty/hardware/default.nix b/hosts/kitty/hardware/default.nix index 3e917a7a..64943f7a 100644 --- a/hosts/kitty/hardware/default.nix +++ b/hosts/kitty/hardware/default.nix @@ -1,4 +1,4 @@ -{ config, lib, ... }: +{ ... }: { boot.initrd = { availableKernelModules = [ @@ -9,6 +9,7 @@ kernelModules = [ "dm-snapshot" ]; }; - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + hardware.cpu.intel.updateMicrocode = true; + + nixpkgs.hostPlatform = "x86_64-linux"; } diff --git a/hosts/kitty/user/default.nix b/hosts/kitty/user/default.nix index 9366cadc..f07f3b38 100644 --- a/hosts/kitty/user/default.nix +++ b/hosts/kitty/user/default.nix @@ -1,6 +1,6 @@ { config, lib, ... }: { - home-manager.users."${config.sysusers.main}".home = { + home-manager.users."${config.vars.mainUser}".home = { stateVersion = lib.mkForce config.system.stateVersion; }; } diff --git a/hosts/midas/colmena/default.nix b/hosts/midas/colmena/default.nix deleted file mode 100644 index a6f434c3..00000000 --- a/hosts/midas/colmena/default.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ config, ... }: -{ - deployment = { - tags = [ "server" ]; - targetHost = "538:e163:87ba:f847:3646:18b6:6b01:d8f8"; - }; -} diff --git a/hosts/midas/default.nix b/hosts/midas/default.nix index e2be2de8..9eca5e59 100644 --- a/hosts/midas/default.nix +++ b/hosts/midas/default.nix @@ -2,7 +2,6 @@ { imports = [ ./boot - ./colmena ./disko ./filesystems ./hardware @@ -12,10 +11,10 @@ ../../modules/system ]; - networking.hostId = "38ba3f57"; - system = { - server.enable = true; + nixos.tags = [ "server" ]; stateVersion = "24.11"; }; + + deployment.targetHost = "538:e163:87ba:f847:3646:18b6:6b01:d8f8"; } diff --git a/hosts/midas/filesystems/default.nix b/hosts/midas/filesystems/default.nix index e68fd763..bd59eb6e 100644 --- a/hosts/midas/filesystems/default.nix +++ b/hosts/midas/filesystems/default.nix @@ -1,6 +1,6 @@ -{ config, nodes, ... }: +{ ... }: { - fileSystems = with config.sysusers; with nodes; { + fileSystems = { "/persist" = { device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325"; fsType = "btrfs"; @@ -10,14 +10,9 @@ "subvol=persist" ]; }; - "/kitty" = { - device = "[${kitty.config.deployment.targetHost}]:/storage/${main}"; - fsType = "nfs4"; - options = [ - "noauto" - "soft" - "x-systemd.automount" - ]; - }; + + # Network mounts + "kitty".enable = true; + "prophet".enable = true; }; } diff --git a/hosts/midas/hardware/default.nix b/hosts/midas/hardware/default.nix index 4793a3aa..d3f129ad 100644 --- a/hosts/midas/hardware/default.nix +++ b/hosts/midas/hardware/default.nix @@ -1,4 +1,4 @@ -{ config, lib, ... }: +{ ... }: { boot.initrd = { availableKernelModules = [ @@ -10,6 +10,7 @@ kernelModules = [ "dm-snapshot" ]; }; - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + hardware.cpu.intel.updateMicrocode = true; + + nixpkgs.hostPlatform = "x86_64-linux"; } diff --git a/hosts/midas/network/default.nix b/hosts/midas/network/default.nix index 32932ea6..1066ff65 100644 --- a/hosts/midas/network/default.nix +++ b/hosts/midas/network/default.nix @@ -9,5 +9,6 @@ address = "10.1.0.1"; interface = "enp0s31f6"; }; + hostId = "38ba3f57"; }; } diff --git a/hosts/midas/services/default.nix b/hosts/midas/services/default.nix index 683391b3..439e9348 100644 --- a/hosts/midas/services/default.nix +++ b/hosts/midas/services/default.nix @@ -1,21 +1,20 @@ { ... }: { + imports = [ ./nginx ]; + services = { cloudflare-dyndns.enable = true; forgejo.enable = true; icecast.enable = true; jellyfin.enable = true; - lemmy.enable = true; mastodon.enable = true; matrix-synapse.enable = true; mysql.enable = true; nextcloud.enable = true; nfs.server.enable = true; - nginx.enable = true; owncast.enable = true; transmission.enable = true; vaultwarden.enable = true; - webserver.enable = true; minecraft-servers = { enable = true; diff --git a/hosts/midas/services/nginx/default.nix b/hosts/midas/services/nginx/default.nix new file mode 100644 index 00000000..99142a59 --- /dev/null +++ b/hosts/midas/services/nginx/default.nix @@ -0,0 +1,6 @@ +{ ... }: +{ + imports = [ ./nixfox ]; + + services.nginx.enable = true; +} diff --git a/modules/system/services/server/nginx/hosts/nixfox/default.nix b/hosts/midas/services/nginx/nixfox/default.nix similarity index 90% rename from modules/system/services/server/nginx/hosts/nixfox/default.nix rename to hosts/midas/services/nginx/nixfox/default.nix index adbcbd1c..c8264276 100644 --- a/modules/system/services/server/nginx/hosts/nixfox/default.nix +++ b/hosts/midas/services/nginx/nixfox/default.nix @@ -1,6 +1,6 @@ { config, lib, ... }: { - services.nginx.virtualHosts = lib.mkIf config.services.webserver.enable { + services.nginx.virtualHosts = { "www.nixfox.ca" = { enableACME = true; addSSL = true; diff --git a/hosts/midas/user/default.nix b/hosts/midas/user/default.nix index 9366cadc..f07f3b38 100644 --- a/hosts/midas/user/default.nix +++ b/hosts/midas/user/default.nix @@ -1,6 +1,6 @@ { config, lib, ... }: { - home-manager.users."${config.sysusers.main}".home = { + home-manager.users."${config.vars.mainUser}".home = { stateVersion = lib.mkForce config.system.stateVersion; }; } diff --git a/hosts/prophet/colmena/default.nix b/hosts/prophet/colmena/default.nix deleted file mode 100644 index ea5fbdc9..00000000 --- a/hosts/prophet/colmena/default.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ config, ... }: -{ - deployment = { - buildOnTarget = true; - tags = [ "server" ]; - targetHost = "42f:2737:2aed:4dee:cbe4:3c73:1918:ad9b"; - }; -} diff --git a/hosts/prophet/default.nix b/hosts/prophet/default.nix index 171c6311..f2a75861 100644 --- a/hosts/prophet/default.nix +++ b/hosts/prophet/default.nix @@ -2,7 +2,6 @@ { imports = [ ./boot - ./colmena ./disko ./filesystems ./hardware @@ -12,10 +11,15 @@ (modulesPath + "/profiles/headless.nix") ]; - networking.hostId = "97a21a38"; - system = { - server.enable = true; + nixos.tags = [ "server" ]; stateVersion = "24.05"; }; + + deployment = { + buildOnTarget = true; + targetHost = "42f:2737:2aed:4dee:cbe4:3c73:1918:ad9b"; + }; + + networking.hostId = "97a21a38"; } diff --git a/hosts/prophet/filesystems/default.nix b/hosts/prophet/filesystems/default.nix index f3943967..57be3eb0 100644 --- a/hosts/prophet/filesystems/default.nix +++ b/hosts/prophet/filesystems/default.nix @@ -1,11 +1,17 @@ { ... }: { - fileSystems."/persist/storage" = { - device = "/dev/disk/by-uuid/ef465845-cc56-4db5-9260-8ae515eb025e"; - fsType = "btrfs"; - options = [ - "nofail" - "nosuid" - ]; + fileSystems = { + "/persist/storage" = { + device = "/dev/disk/by-uuid/ef465845-cc56-4db5-9260-8ae515eb025e"; + fsType = "btrfs"; + options = [ + "nofail" + "nosuid" + ]; + }; + + # Network mounts + "kitty".enable = true; + "midas".enable = true; }; } diff --git a/hosts/prophet/hardware/default.nix b/hosts/prophet/hardware/default.nix index 4b2b3178..3e057fc7 100644 --- a/hosts/prophet/hardware/default.nix +++ b/hosts/prophet/hardware/default.nix @@ -1,4 +1,4 @@ -{ lib, ... }: +{ ... }: { boot.initrd = { availableKernelModules = [ @@ -8,5 +8,5 @@ kernelModules = [ "dm-snapshot" ]; }; - nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux"; + nixpkgs.hostPlatform = "aarch64-linux"; } diff --git a/hosts/prophet/services/default.nix b/hosts/prophet/services/default.nix index 1c8b896a..71ffb3cf 100644 --- a/hosts/prophet/services/default.nix +++ b/hosts/prophet/services/default.nix @@ -2,9 +2,10 @@ { services = { cloudflare-dyndns.enable = true; - mailserver.enable = true; mysql.enable = true; nfs.server.enable = true; nginx.enable = true; }; + + mailserver.enable = true; } diff --git a/hosts/prophet/user/@! b/hosts/prophet/user/@! new file mode 100644 index 00000000..f07f3b38 --- /dev/null +++ b/hosts/prophet/user/@! @@ -0,0 +1,6 @@ +{ config, lib, ... }: +{ + home-manager.users."${config.vars.mainUser}".home = { + stateVersion = lib.mkForce config.system.stateVersion; + }; +} diff --git a/hosts/prophet/user/default.nix b/hosts/prophet/user/default.nix index 9366cadc..f07f3b38 100644 --- a/hosts/prophet/user/default.nix +++ b/hosts/prophet/user/default.nix @@ -1,6 +1,6 @@ { config, lib, ... }: { - home-manager.users."${config.sysusers.main}".home = { + home-manager.users."${config.vars.mainUser}".home = { stateVersion = lib.mkForce config.system.stateVersion; }; } diff --git a/hosts/tower/boot/default.nix b/hosts/tower/boot/default.nix index 7d9298aa..25e12301 100644 --- a/hosts/tower/boot/default.nix +++ b/hosts/tower/boot/default.nix @@ -1,17 +1,11 @@ { config, lib, pkgs, ... }: let commonKernelParams = [ - # VM/GPU passthrough "amd_iommu=on" "iommu=pt" - - # Isolate devices into IOMMU groups - "pcie_acs_override=downstream,multifunction" - "pci=routeirq" ]; in { boot = { - # Latest kernel and IOMMU isolation kernelPackages = pkgs.linuxPackages_6_14; kernelParams = commonKernelParams ++ [ "vfio-pci.ids=10de:1f82,10de:10fa" ]; @@ -30,8 +24,5 @@ in { }; # Use second GPU on boot - specialisation.gputwo.configuration = { - boot.kernelParams = commonKernelParams ++ [ "vfio-pci.ids=10de:2504,10de:228e" ]; - environment.sessionVariables.WLR_RENDERER = lib.mkForce "gles2"; - }; + specialisation.gputwo.configuration.boot.kernelParams = commonKernelParams ++ [ "vfio-pci.ids=10de:2504,10de:228e" ]; } diff --git a/hosts/tower/colmena/default.nix b/hosts/tower/colmena/default.nix index a9fee8f3..b04b69b6 100644 --- a/hosts/tower/colmena/default.nix +++ b/hosts/tower/colmena/default.nix @@ -1,4 +1,4 @@ -{ config, ... }: +{ ... }: { deployment = { tags = [ diff --git a/hosts/tower/default.nix b/hosts/tower/default.nix index 49b7c8aa..a4deabb7 100644 --- a/hosts/tower/default.nix +++ b/hosts/tower/default.nix @@ -2,7 +2,6 @@ { imports = [ ./boot - ./colmena ./disko ./filesystems ./hardware @@ -11,10 +10,13 @@ ]; system = { - desktop.enable = true; - nvidia.enable = true; + nixos.tags = [ "pc" ]; stateVersion = "24.05"; }; + deployment.targetHost = "4e4:535:9d47:f367:becd:6557:458d:5b1b"; + + services.xserver.videoDrivers = [ "nvidia" ]; + virtualisation.libvirtd.enable = true; } diff --git a/hosts/tower/filesystems/default.nix b/hosts/tower/filesystems/default.nix index a80b45f9..ad9f218f 100644 --- a/hosts/tower/filesystems/default.nix +++ b/hosts/tower/filesystems/default.nix @@ -1,6 +1,6 @@ -{ config, nodes, ... }: +{ ... }: { - fileSystems = with config.sysusers; with nodes; { + fileSystems = { # Games and such "/mnt/Linux1" = { device = "/dev/disk/by-uuid/b2901f8c-ffda-4b88-bb63-a9ea0c96ccb4"; @@ -39,32 +39,8 @@ }; # Network mounts - "/home/${main}/Network/Midas" = { - device = "[${midas.config.deployment.targetHost}]:/storage"; - fsType = "nfs4"; - options = [ - "noauto" - "soft" - "x-systemd.automount" - ]; - }; - "/home/${main}/Network/Kitty" = { - device = "[${kitty.config.deployment.targetHost}]:/storage/${main}"; - fsType = "nfs4"; - options = [ - "noauto" - "soft" - "x-systemd.automount" - ]; - }; - "/home/${main}/Network/Prophet" = { - device = "[${prophet.config.deployment.targetHost}]:/storage"; - fsType = "nfs4"; - options = [ - "noauto" - "soft" - "x-systemd.automount" - ]; - }; + "kitty".enable = true; + "midas".enable = true; + "prophet".enable = true; }; } diff --git a/hosts/tower/hardware/default.nix b/hosts/tower/hardware/default.nix index 4ee8328d..37c93ab7 100644 --- a/hosts/tower/hardware/default.nix +++ b/hosts/tower/hardware/default.nix @@ -1,4 +1,4 @@ -{ config, lib, modulesPath, ... }: +{ modulesPath, ... }: { imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; @@ -16,6 +16,7 @@ kernelModules = [ "kvm-amd" ]; }; - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + hardware.cpu.amd.updateMicrocode = true; + + nixpkgs.hostPlatform = "x86_64-linux"; } diff --git a/hosts/tower/user/default.nix b/hosts/tower/user/default.nix index becbf7bc..3eaf7dc9 100644 --- a/hosts/tower/user/default.nix +++ b/hosts/tower/user/default.nix @@ -1,6 +1,6 @@ { config, lib, ... }: { - home-manager.users."${config.sysusers.main}" = { + home-manager.users."${config.vars.mainUser}" = { home = { guifull.enable = true; stateVersion = lib.mkForce config.system.stateVersion; diff --git a/modules/home/default.nix b/modules/home/default.nix index 6527a8ba..c1e04428 100644 --- a/modules/home/default.nix +++ b/modules/home/default.nix @@ -9,5 +9,5 @@ ./wms ]; - config.home.stateVersion = "24.11"; + config.home.stateVersion = "25.05"; } diff --git a/modules/home/programs/gui/foot/default.nix b/modules/home/programs/gui/foot/default.nix index 27f704d5..a1974e51 100644 --- a/modules/home/programs/gui/foot/default.nix +++ b/modules/home/programs/gui/foot/default.nix @@ -6,11 +6,11 @@ settings = { main = { term = "xterm-256color"; - font = "${config.look.fonts.mono}:size=14.7"; + font = "${config.vars.fonts.mono}:size=14.7"; }; colors = { alpha = "0.85"; - background = config.look.colors.dark; + background = config.vars.colors.dark; regular0 = "3f3f3f"; regular1 = "cc0000"; regular2 = "4e9a06"; @@ -29,7 +29,10 @@ bright7 = "ffffff"; }; cursor.style = "beam"; - key-bindings.search-start = "Control+f"; + key-bindings = { + search-start = "Control+f"; + show-urls-launch = "Control+s"; + }; }; }; } diff --git a/modules/home/programs/gui/librewolf/default.nix b/modules/home/programs/gui/librewolf/default.nix index e28e01ac..6e208d51 100644 --- a/modules/home/programs/gui/librewolf/default.nix +++ b/modules/home/programs/gui/librewolf/default.nix @@ -146,9 +146,9 @@ "webgl.disabled" = false; # Fonts - "font.name.monospace.x-western" = config.look.fonts.mono; - "font.name.sans-serif.x-western" = config.look.fonts.main; - "font.name.serif.x-western" = config.look.fonts.main; + "font.name.monospace.x-western" = config.vars.fonts.mono; + "font.name.sans-serif.x-western" = config.vars.fonts.main; + "font.name.serif.x-western" = config.vars.fonts.main; # Theming and visibility "browser.aboutConfig.showWarning" = false; @@ -235,16 +235,16 @@ userChrome = '' :root { - --tab-active-bg-color: #${config.look.colors.prime}; - --tab-hover-bg-color: #${config.look.colors.accent}; - --tab-inactive-bg-color: #${config.look.colors.dark}; + --tab-active-bg-color: #${config.vars.colors.prime}; + --tab-hover-bg-color: #${config.vars.colors.accent}; + --tab-inactive-bg-color: #${config.vars.colors.dark}; --tab-active-fg-fallback-color: #FFFFFF; - --tab-inactive-fg-fallback-color: #${config.look.colors.text}; - --urlbar-focused-bg-color: #${config.look.colors.dark}; - --urlbar-not-focused-bg-color: #${config.look.colors.dark}; - --toolbar-bgcolor: #${config.look.colors.dark} !important; - --tab-font: '${config.look.fonts.main}'; - --urlbar-font: '${config.look.fonts.main}'; + --tab-inactive-fg-fallback-color: #${config.vars.colors.text}; + --urlbar-focused-bg-color: #${config.vars.colors.dark}; + --urlbar-not-focused-bg-color: #${config.vars.colors.dark}; + --toolbar-bgcolor: #${config.vars.colors.dark} !important; + --tab-font: '${config.vars.fonts.main}'; + --urlbar-font: '${config.vars.fonts.main}'; ${builtins.readFile ./quteFox.css} ''; }; diff --git a/modules/home/programs/terminal/neovim/default.nix b/modules/home/programs/terminal/neovim/default.nix index 78c5225b..f07a4f3b 100644 --- a/modules/home/programs/terminal/neovim/default.nix +++ b/modules/home/programs/terminal/neovim/default.nix @@ -92,8 +92,8 @@ let g:airline_theme='onedark' let g:airline#extensions#tabline#enabled = 1 hi Normal guibg=none - hi Visual guibg=#${config.look.colors.mid} - hi Pmenu guibg=#${config.look.colors.mid} + hi Visual guibg=#${config.vars.colors.mid} + hi Pmenu guibg=#${config.vars.colors.mid} hi EndOfBuffer guibg=none hi LineNr guibg=none lua require'colorizer'.setup() diff --git a/modules/home/settings/fonts/fontconfig/default.nix b/modules/home/settings/fonts/fontconfig/default.nix index 0ad9bae1..395aeef2 100644 --- a/modules/home/settings/fonts/fontconfig/default.nix +++ b/modules/home/settings/fonts/fontconfig/default.nix @@ -3,8 +3,8 @@ fonts.fontconfig = { enable = config.home.desktop.enable; defaultFonts = { - sansSerif = [ config.look.fonts.main ]; - monospace = [ config.look.fonts.mono ]; + sansSerif = [ config.vars.fonts.main ]; + monospace = [ config.vars.fonts.mono ]; emoji = [ "Twitter Color Emoji" ]; }; }; diff --git a/modules/home/settings/gtk/theme/default.nix b/modules/home/settings/gtk/theme/default.nix index 34918d00..9b7f6719 100644 --- a/modules/home/settings/gtk/theme/default.nix +++ b/modules/home/settings/gtk/theme/default.nix @@ -2,7 +2,7 @@ { gtk = with pkgs; { font = { - name = config.look.fonts.main; + name = config.vars.fonts.main; size = 11; }; theme = { @@ -21,7 +21,7 @@ iconTheme = { name = "Papirus-Dark"; package = papirus-icon-theme.override { - color = config.look.colors.folder; + color = config.vars.colors.folder; }; }; }; diff --git a/modules/home/settings/xdg/default.nix b/modules/home/settings/xdg/default.nix index f489ee0e..daa8a344 100644 --- a/modules/home/settings/xdg/default.nix +++ b/modules/home/settings/xdg/default.nix @@ -1,9 +1,6 @@ { config, ... }: { - imports = [ - ./defaults - ./folders - ]; + imports = [ ./dirs ]; xdg.enable = config.home.desktop.enable; diff --git a/modules/home/settings/xdg/defaults/default.nix b/modules/home/settings/xdg/defaults/default.nix deleted file mode 100644 index 8a1f04d4..00000000 --- a/modules/home/settings/xdg/defaults/default.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ config, ... }: -{ - xdg.mimeApps = { - enable = config.xdg.enable; - defaultApplications = { - # Media - "image/*" = [ "imv.desktop" ]; - "image/gif" = [ "mpv.desktop" ]; - "video/*" = [ "mpv.desktop" ]; - - # Apps - "inode/directory" = [ "pcmanfm-qt.desktop" ]; - "text/plain" = [ "nvim.desktop" ]; - - # Browser - "application/x-mswinurl" = [ "librewolf.desktop" ]; - "x-scheme-handler/http" = [ "librewolf.desktop" ]; - "x-scheme-handler/https" = [ "librewolf.desktop" ]; - }; - }; -} diff --git a/modules/home/settings/xdg/folders/default.nix b/modules/home/settings/xdg/dirs/default.nix similarity index 91% rename from modules/home/settings/xdg/folders/default.nix rename to modules/home/settings/xdg/dirs/default.nix index 5722c561..5473ab0a 100644 --- a/modules/home/settings/xdg/folders/default.nix +++ b/modules/home/settings/xdg/dirs/default.nix @@ -13,7 +13,7 @@ extraConfig = { XDG_GAMES_DIR = "${homeDirectory}/Games"; XDG_KEEPERS_DIR = "${homeDirectory}/Keepers"; - XDG_NETWORK_DIR = "${homeDirectory}/Network"; + XDG_NETWORK_DIR = "/network"; XDG_PERSIST_DIR = "/persist${homeDirectory}"; XDG_PROJECTS_DIR = "${homeDirectory}/Projects"; XDG_SCREENSHOTS_DIR = "${config.xdg.userDirs.pictures}/Screenshots"; diff --git a/modules/home/variables/look/border/default.nix b/modules/home/variables/border/default.nix similarity index 72% rename from modules/home/variables/look/border/default.nix rename to modules/home/variables/border/default.nix index 1c81d9c5..938c98b5 100644 --- a/modules/home/variables/look/border/default.nix +++ b/modules/home/variables/border/default.nix @@ -1,6 +1,6 @@ { ... }: { - look.border = rec { + vars.border = rec { int = 3; string = toString int; }; diff --git a/modules/home/variables/look/colors/default.nix b/modules/home/variables/colors/default.nix similarity index 94% rename from modules/home/variables/look/colors/default.nix rename to modules/home/variables/colors/default.nix index 1376a541..b15c1a34 100644 --- a/modules/home/variables/look/colors/default.nix +++ b/modules/home/variables/colors/default.nix @@ -1,6 +1,6 @@ { ... }: { - look.colors = { + vars.colors = { prime = "3823C4"; #3823C4 accent = "1B1F59"; #1B1F59 split = "555B9E"; #555B9E diff --git a/modules/home/variables/default.nix b/modules/home/variables/default.nix index 2a4872ac..675dee94 100644 --- a/modules/home/variables/default.nix +++ b/modules/home/variables/default.nix @@ -1,8 +1,14 @@ -{ ... }: +{ lib, ... }: { imports = [ + ./border + ./colors ./displays - ./look + ./fonts ./workspaces ]; + + options.vars = lib.mkOption { + type = lib.types.attrs; + }; } diff --git a/modules/home/variables/displays/default.nix b/modules/home/variables/displays/default.nix index 883ae4d6..e923dc96 100644 --- a/modules/home/variables/displays/default.nix +++ b/modules/home/variables/displays/default.nix @@ -1,10 +1,6 @@ -{ config, lib, ... }: +{ ... }: { - options.displays = lib.mkOption { - type = lib.types.attrs; - }; - - config.displays = { + vars.displays = { tower1 = "Microstep MSI G24C 0000000000001"; tower2 = "BNQ BenQ GW2270 6CH00781019"; tower3 = "Eizo Nanao Corporation CG223W 23252050"; diff --git a/modules/home/variables/look/fonts/default.nix b/modules/home/variables/fonts/default.nix similarity index 83% rename from modules/home/variables/look/fonts/default.nix rename to modules/home/variables/fonts/default.nix index 3a55f47d..a9a26c8b 100644 --- a/modules/home/variables/look/fonts/default.nix +++ b/modules/home/variables/fonts/default.nix @@ -1,6 +1,6 @@ { ... }: { - look.fonts = { + vars.fonts = { main = "Ubuntu Nerd Font"; mono = "UbuntuMono Nerd Font"; }; diff --git a/modules/home/variables/look/default.nix b/modules/home/variables/look/default.nix deleted file mode 100644 index 82be4f01..00000000 --- a/modules/home/variables/look/default.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ config, lib, ... }: -{ - imports = [ - ./border - ./colors - ./fonts - ]; - - options.look = lib.mkOption { - type = lib.types.attrs; - }; -} diff --git a/modules/home/variables/workspaces/default.nix b/modules/home/variables/workspaces/default.nix index ead54949..80875cb0 100644 --- a/modules/home/variables/workspaces/default.nix +++ b/modules/home/variables/workspaces/default.nix @@ -1,10 +1,6 @@ -{ config, lib, ... }: +{ ... }: { - options.ws = lib.mkOption { - type = lib.types.attrs; - }; - - config.ws = { + vars.ws = { w0 = "0"; w1 = "1"; w2 = "2"; diff --git a/modules/home/wms/programs/kanshi/default.nix b/modules/home/wms/programs/kanshi/default.nix index 1e30d7da..0d18aa3d 100644 --- a/modules/home/wms/programs/kanshi/default.nix +++ b/modules/home/wms/programs/kanshi/default.nix @@ -2,11 +2,11 @@ { services.kanshi = { enable = config.home.desktop.enable; - settings = [ + settings = with config.vars.displays; [ # Outputs { output = { - criteria = config.displays.tower1; + criteria = tower1; adaptiveSync = true; mode = "1920x1080@143.979996Hz"; }; @@ -18,20 +18,20 @@ name = "tower-tv"; outputs = [ { - criteria = config.displays.tower1; + criteria = tower1; position = "3840,405"; } { - criteria = config.displays.tower2; + criteria = tower2; position = "1920,405"; } { - criteria = config.displays.tower3; + criteria = tower3; position = "5760,0"; transform = "90"; } { - criteria = config.displays.tower4; + criteria = tower4; position = "0,405"; } ]; @@ -42,15 +42,15 @@ name = "tower"; outputs = [ { - criteria = config.displays.tower1; + criteria = tower1; position = "1920,405"; } { - criteria = config.displays.tower2; + criteria = tower2; position = "0,405"; } { - criteria = config.displays.tower3; + criteria = tower3; position = "3840,0"; transform = "90"; } @@ -63,11 +63,11 @@ name = "detritus"; outputs = [ { - criteria = config.displays.detritus1; + criteria = detritus1; position = "0,0"; } { - criteria = config.displays.detritus2; + criteria = detritus2; position = "1920,0"; scale = 0.85; } diff --git a/modules/home/wms/programs/mako/default.nix b/modules/home/wms/programs/mako/default.nix index b8555a15..1e689e1e 100644 --- a/modules/home/wms/programs/mako/default.nix +++ b/modules/home/wms/programs/mako/default.nix @@ -4,10 +4,10 @@ enable = config.home.desktop.enable; settings = { # Theme - background-color = "#${config.look.colors.dark}D9"; - border-color = "#${config.look.colors.accent}"; - border-size = config.look.border.int; - font = "${config.look.fonts.main} 12"; + background-color = "#${config.vars.colors.dark}D9"; + border-color = "#${config.vars.colors.accent}"; + border-size = config.vars.border.int; + font = "${config.vars.fonts.main} 12"; margin = 0; max-icon-size = 40; outer-margin = 10; diff --git a/modules/home/wms/programs/rofi/default.nix b/modules/home/wms/programs/rofi/default.nix index a32f7076..bcdaddf5 100644 --- a/modules/home/wms/programs/rofi/default.nix +++ b/modules/home/wms/programs/rofi/default.nix @@ -7,7 +7,7 @@ enable = true; package = pkgs.rofi-wayland; terminal = "foot"; - font = "${config.look.fonts.main} 14"; + font = "${config.vars.fonts.main} 14"; theme = let inherit (config.lib.formats.rasi) mkLiteral; in { @@ -18,24 +18,24 @@ red = mkLiteral "#DC322F"; background-color = mkLiteral "#00000000"; separatorcolor = mkLiteral "#00000000"; - normal-foreground = mkLiteral "#${config.look.colors.text}"; - normal-background = mkLiteral "#${config.look.colors.dark}1A"; - urgent-foreground = mkLiteral "#${config.look.colors.urgent}"; - active-foreground = mkLiteral "#${config.look.colors.split}"; - selected-active-foreground = mkLiteral "#${config.look.colors.prime}"; - background = mkLiteral "#${config.look.colors.dark}D9"; - bordercolor = mkLiteral "#${config.look.colors.prime}"; + normal-foreground = mkLiteral "#${config.vars.colors.text}"; + normal-background = mkLiteral "#${config.vars.colors.dark}1A"; + urgent-foreground = mkLiteral "#${config.vars.colors.urgent}"; + active-foreground = mkLiteral "#${config.vars.colors.split}"; + selected-active-foreground = mkLiteral "#${config.vars.colors.prime}"; + background = mkLiteral "#${config.vars.colors.dark}D9"; + bordercolor = mkLiteral "#${config.vars.colors.prime}"; selected-normal-foreground = mkLiteral "#FFFFFF"; - selected-normal-background = mkLiteral "#${config.look.colors.prime}80"; - border-color = mkLiteral "#${config.look.colors.prime}"; - urgent-background = mkLiteral "#${config.look.colors.accent}26"; - active-background = mkLiteral "#${config.look.colors.accent}26"; - selected-active-background = mkLiteral "#${config.look.colors.split}54"; + selected-normal-background = mkLiteral "#${config.vars.colors.prime}80"; + border-color = mkLiteral "#${config.vars.colors.prime}"; + urgent-background = mkLiteral "#${config.vars.colors.accent}26"; + active-background = mkLiteral "#${config.vars.colors.accent}26"; + selected-active-background = mkLiteral "#${config.vars.colors.split}54"; }; "#window" = { background-color = mkLiteral "@background"; width = 500; - border = mkLiteral "${config.look.border.string}"; + border = mkLiteral "${config.vars.border.string}"; padding = 5; }; "#message" = { diff --git a/modules/home/wms/programs/swaylock/default.nix b/modules/home/wms/programs/swaylock/default.nix index c2494e4e..ca361fd9 100644 --- a/modules/home/wms/programs/swaylock/default.nix +++ b/modules/home/wms/programs/swaylock/default.nix @@ -1,8 +1,8 @@ { config, pkgs, ... }: let - default = "#${config.look.colors.prime}FF"; - wrong = "#${config.look.colors.split}FF"; - verifying = "#${config.look.colors.accent}FF"; + default = "#${config.vars.colors.prime}FF"; + wrong = "#${config.vars.colors.split}FF"; + verifying = "#${config.vars.colors.accent}FF"; blank = "#00000000"; clear = "#FFFFFF22"; text = "#FFFFFFFF"; @@ -13,7 +13,7 @@ in { settings = { clock = true; image = ".wallpapers/lock.png"; - font = config.look.fonts.main; + font = config.vars.fonts.main; font-size = 30; timestr = "%I:%M%p"; datestr = "%a %b %d %Y"; diff --git a/modules/home/wms/programs/wallpapers/wpaperd/default.nix b/modules/home/wms/programs/wallpapers/wpaperd/default.nix index c3575bda..98892d90 100644 --- a/modules/home/wms/programs/wallpapers/wpaperd/default.nix +++ b/modules/home/wms/programs/wallpapers/wpaperd/default.nix @@ -5,8 +5,8 @@ settings = { default.mode = "center"; any.path = ".wallpapers/1.png"; - "${config.displays.tower2}".path = ".wallpapers/2.png"; - "${config.displays.tower3}".path = ".wallpapers/3.png"; + "${config.vars.displays.tower2}".path = ".wallpapers/2.png"; + "${config.vars.displays.tower3}".path = ".wallpapers/3.png"; }; }; } diff --git a/modules/home/wms/programs/waybar/default.nix b/modules/home/wms/programs/waybar/default.nix index 281ebb19..ad68a398 100644 --- a/modules/home/wms/programs/waybar/default.nix +++ b/modules/home/wms/programs/waybar/default.nix @@ -236,9 +236,9 @@ position = "top"; layer = "top"; output = [ - "!${config.displays.tower2}" - "!${config.displays.tower3}" - "!${config.displays.detritus2}" + "!${config.vars.displays.tower2}" + "!${config.vars.displays.tower3}" + "!${config.vars.displays.detritus2}" "*" ]; modules-left = [ @@ -271,9 +271,9 @@ position = "top"; layer = "top"; output = [ - config.displays.tower2 - config.displays.tower3 - config.displays.detritus2 + config.vars.displays.tower2 + config.vars.displays.tower3 + config.vars.displays.detritus2 ]; modules-left = [ "sway/workspaces" @@ -294,12 +294,11 @@ border: 0; border-radius: 0; min-height: 0; - font-family: ${config.look.fonts.main}; font-size: 15.5px; - color: #${config.look.colors.text}; + color: #${config.vars.colors.text}; } - #waybar { background: #${config.look.colors.dark}; } + #waybar { background: #${config.vars.colors.dark}; } #network { padding: 0 6px 0 4px; } #gamemode, #scratchpad, #privacy, #tray, #bluetooth { margin: 0 2px 0 2px; } #pulseaudio, #mpris, #custom-notifs, #idle_inhibitor, #custom-weather, #cpu, #memory, #custom-vram, #backlight, #battery, #clock { margin: 0 2px 0 4px; } @@ -312,15 +311,15 @@ min-width: 20px; } #workspaces button.visible, #workspaces button.active { - border-bottom: 3px solid #${config.look.colors.prime}; - background: #${config.look.colors.mid}; + border-bottom: 3px solid #${config.vars.colors.prime}; + background: #${config.vars.colors.mid}; } #workspaces button.urgent { - border-bottom: 3px solid #${config.look.colors.urgent}; + border-bottom: 3px solid #${config.vars.colors.urgent}; } #workspaces button:hover { box-shadow: none; - background: #${config.look.colors.light}; + background: #${config.vars.colors.light}; } #mpris { border-bottom: 3px solid #ffb066; } diff --git a/modules/home/wms/sway/hotkeys/default.nix b/modules/home/wms/sway/hotkeys/default.nix index c14d1a90..ffd9e6e2 100644 --- a/modules/home/wms/sway/hotkeys/default.nix +++ b/modules/home/wms/sway/hotkeys/default.nix @@ -8,7 +8,7 @@ in { # Hotkeys modifier = "${primeMod}"; - keybindings = { + keybindings = with config.vars.ws; { ## Launchers # Browser @@ -78,50 +78,50 @@ "${primeMod}+Shift+r" = ''reload''; # Switch to workspaces - "${primeMod}+grave" = ''workspace 0:${config.ws.w0}''; - "${primeMod}+1" = ''workspace 1:${config.ws.w1}''; - "${primeMod}+2" = ''workspace 2:${config.ws.w2}''; - "${primeMod}+3" = ''workspace 3:${config.ws.w3}''; - "${primeMod}+4" = ''workspace 4:${config.ws.w4}''; - "${primeMod}+5" = ''workspace 5:${config.ws.w5}''; - "${primeMod}+6" = ''workspace 6:${config.ws.w6}''; - "${primeMod}+7" = ''workspace 7:${config.ws.w7}''; - "${primeMod}+8" = ''workspace 8:${config.ws.w8}''; - "${primeMod}+9" = ''workspace 9:${config.ws.w9}''; + "${primeMod}+grave" = ''workspace 0:${w0}''; + "${primeMod}+1" = ''workspace 1:${w1}''; + "${primeMod}+2" = ''workspace 2:${w2}''; + "${primeMod}+3" = ''workspace 3:${w3}''; + "${primeMod}+4" = ''workspace 4:${w4}''; + "${primeMod}+5" = ''workspace 5:${w5}''; + "${primeMod}+6" = ''workspace 6:${w6}''; + "${primeMod}+7" = ''workspace 7:${w7}''; + "${primeMod}+8" = ''workspace 8:${w8}''; + "${primeMod}+9" = ''workspace 9:${w9}''; # Switch to alternate workspaces - "${secMod}+F1" = ''workspace 11:${config.ws.w1a}''; - "${secMod}+F2" = ''workspace 22:${config.ws.w2a}''; - "${secMod}+F3" = ''workspace 33:${config.ws.w3a}''; - "${secMod}+F4" = ''workspace 44:${config.ws.w4a}''; - "${secMod}+F5" = ''workspace 55:${config.ws.w5a}''; - "${secMod}+F6" = ''workspace 66:${config.ws.w6a}''; - "${secMod}+F7" = ''workspace 77:${config.ws.w7a}''; - "${secMod}+F8" = ''workspace 88:${config.ws.w8a}''; - "${secMod}+F9" = ''workspace 99:${config.ws.w9a}''; + "${secMod}+F1" = ''workspace 11:${w1a}''; + "${secMod}+F2" = ''workspace 22:${w2a}''; + "${secMod}+F3" = ''workspace 33:${w3a}''; + "${secMod}+F4" = ''workspace 44:${w4a}''; + "${secMod}+F5" = ''workspace 55:${w5a}''; + "${secMod}+F6" = ''workspace 66:${w6a}''; + "${secMod}+F7" = ''workspace 77:${w7a}''; + "${secMod}+F8" = ''workspace 88:${w8a}''; + "${secMod}+F9" = ''workspace 99:${w9a}''; # Move window to and focus workspace - "${primeMod}+Shift+grave" = ''move container to workspace 0:${config.ws.w0}; workspace 0:${config.ws.w0}''; - "${primeMod}+Shift+1" = ''move container to workspace 1:${config.ws.w1}; workspace 1:${config.ws.w1}''; - "${primeMod}+Shift+2" = ''move container to workspace 2:${config.ws.w2}; workspace 2:${config.ws.w2}''; - "${primeMod}+Shift+3" = ''move container to workspace 3:${config.ws.w3}; workspace 3:${config.ws.w3}''; - "${primeMod}+Shift+4" = ''move container to workspace 4:${config.ws.w4}; workspace 4:${config.ws.w4}''; - "${primeMod}+Shift+5" = ''move container to workspace 5:${config.ws.w5}; workspace 5:${config.ws.w5}''; - "${primeMod}+Shift+6" = ''move container to workspace 6:${config.ws.w6}; workspace 6:${config.ws.w6}''; - "${primeMod}+Shift+7" = ''move container to workspace 7:${config.ws.w7}; workspace 7:${config.ws.w7}''; - "${primeMod}+Shift+8" = ''move container to workspace 8:${config.ws.w8}; workspace 8:${config.ws.w8}''; - "${primeMod}+Shift+9" = ''move container to workspace 9:${config.ws.w9}; workspace 9:${config.ws.w9}''; + "${primeMod}+Shift+grave" = ''move container to workspace 0:${w0}; workspace 0:${w0}''; + "${primeMod}+Shift+1" = ''move container to workspace 1:${w1}; workspace 1:${w1}''; + "${primeMod}+Shift+2" = ''move container to workspace 2:${w2}; workspace 2:${w2}''; + "${primeMod}+Shift+3" = ''move container to workspace 3:${w3}; workspace 3:${w3}''; + "${primeMod}+Shift+4" = ''move container to workspace 4:${w4}; workspace 4:${w4}''; + "${primeMod}+Shift+5" = ''move container to workspace 5:${w5}; workspace 5:${w5}''; + "${primeMod}+Shift+6" = ''move container to workspace 6:${w6}; workspace 6:${w6}''; + "${primeMod}+Shift+7" = ''move container to workspace 7:${w7}; workspace 7:${w7}''; + "${primeMod}+Shift+8" = ''move container to workspace 8:${w8}; workspace 8:${w8}''; + "${primeMod}+Shift+9" = ''move container to workspace 9:${w9}; workspace 9:${w9}''; # Move window to and focus alternate workspace - "${secMod}+Shift+F1" = ''move container to workspace 11:${config.ws.w1a}; workspace 11:${config.ws.w1a}''; - "${secMod}+Shift+F2" = ''move container to workspace 22:${config.ws.w2a}; workspace 22:${config.ws.w2a}''; - "${secMod}+Shift+F3" = ''move container to workspace 33:${config.ws.w3a}; workspace 33:${config.ws.w3a}''; - "${secMod}+Shift+F4" = ''move container to workspace 44:${config.ws.w4a}; workspace 44:${config.ws.w4a}''; - "${secMod}+Shift+F5" = ''move container to workspace 55:${config.ws.w5a}; workspace 55:${config.ws.w5a}''; - "${secMod}+Shift+F6" = ''move container to workspace 66:${config.ws.w6a}; workspace 66:${config.ws.w6a}''; - "${secMod}+Shift+F7" = ''move container to workspace 77:${config.ws.w7a}; workspace 77:${config.ws.w7a}''; - "${secMod}+Shift+F8" = ''move container to workspace 88:${config.ws.w8a}; workspace 88:${config.ws.w8a}''; - "${secMod}+Shift+F9" = ''move container to workspace 99:${config.ws.w9a}; workspace 99:${config.ws.w9a}''; + "${secMod}+Shift+F1" = ''move container to workspace 11:${w1a}; workspace 11:${w1a}''; + "${secMod}+Shift+F2" = ''move container to workspace 22:${w2a}; workspace 22:${w2a}''; + "${secMod}+Shift+F3" = ''move container to workspace 33:${w3a}; workspace 33:${w3a}''; + "${secMod}+Shift+F4" = ''move container to workspace 44:${w4a}; workspace 44:${w4a}''; + "${secMod}+Shift+F5" = ''move container to workspace 55:${w5a}; workspace 55:${w5a}''; + "${secMod}+Shift+F6" = ''move container to workspace 66:${w6a}; workspace 66:${w6a}''; + "${secMod}+Shift+F7" = ''move container to workspace 77:${w7a}; workspace 77:${w7a}''; + "${secMod}+Shift+F8" = ''move container to workspace 88:${w8a}; workspace 88:${w8a}''; + "${secMod}+Shift+F9" = ''move container to workspace 99:${w9a}; workspace 99:${w9a}''; # Change focused window "${primeMod}+h" = ''focus left''; diff --git a/modules/home/wms/sway/outputs/default.nix b/modules/home/wms/sway/outputs/default.nix index e44120f2..8416e7dd 100644 --- a/modules/home/wms/sway/outputs/default.nix +++ b/modules/home/wms/sway/outputs/default.nix @@ -2,47 +2,42 @@ { # Monitors wayland.windowManager.sway.config = { - workspaceOutputAssign = let + workspaceOutputAssign = with config.vars.ws; with config.vars.displays; let workspaces1 = [ - "0:${config.ws.w0}" - "1:${config.ws.w1}" - "2:${config.ws.w2}" - "3:${config.ws.w3}" - "11:${config.ws.w1a}" - "22:${config.ws.w2a}" - "33:${config.ws.w3a}" + "0:${w0}" + "1:${w1}" + "2:${w2}" + "3:${w3}" + "11:${w1a}" + "22:${w2a}" + "33:${w3a}" ]; workspaces2 = [ - "4:${config.ws.w4}" - "5:${config.ws.w5}" - "6:${config.ws.w6}" - "44:${config.ws.w4a}" - "55:${config.ws.w5a}" + "4:${w4}" + "5:${w5}" + "6:${w6}" + "44:${w4a}" + "55:${w5a}" ]; workspaces3 = [ - "7:${config.ws.w7}" - "8:${config.ws.w8}" - "9:${config.ws.w9}" - "77:${config.ws.w7a}" - "88:${config.ws.w8a}" + "7:${w7}" + "8:${w8}" + "9:${w9}" + "77:${w7a}" + "88:${w8a}" ]; workspaces4 = [ - "66:${config.ws.w6a}" - "99:${config.ws.w9a}" + "66:${w6a}" + "99:${w9a}" ]; assign = output: workspaces: map (workspace: { inherit workspace; inherit output; }) workspaces; in - (assign "${config.displays.tower1}" workspaces1) ++ - (assign "${config.displays.tower2}" workspaces2) ++ - (assign "${config.displays.tower3}" workspaces3) ++ - (assign "${config.displays.tower4}" workspaces4) ++ - - (assign "${config.displays.detritus1}" workspaces1) ++ - (assign "${config.displays.detritus1}" workspaces2) ++ - (assign "${config.displays.detritus2}" workspaces3) ++ - (assign "${config.displays.detritus2}" workspaces4); + (assign "${tower1}" workspaces1) ++ + (assign "${tower2}" workspaces2) ++ + (assign "${tower3}" workspaces3) ++ + (assign "${tower4}" workspaces4); }; } diff --git a/modules/home/wms/sway/rules/default.nix b/modules/home/wms/sway/rules/default.nix index d50a4e73..8d213281 100644 --- a/modules/home/wms/sway/rules/default.nix +++ b/modules/home/wms/sway/rules/default.nix @@ -1,7 +1,7 @@ { config, ... }: { - wayland.windowManager.sway.config = { - defaultWorkspace = "workspace 1:${config.ws.w1}"; + wayland.windowManager.sway.config = with config.vars.ws; { + defaultWorkspace = "workspace 1:${w1}"; focus = { mouseWarping = "container"; @@ -34,7 +34,7 @@ # Give apps that don't have them borders { criteria = { con_mark = "giveborder"; }; - command = ''border pixel ${config.look.border.string}''; + command = ''border pixel ${config.vars.border.string}''; } { criteria = { class = "steam"; }; @@ -56,22 +56,22 @@ }; assigns = { # Browser - "1:${config.ws.w1}" = [{ app_id = "librewolf"; }]; + "1:${w1}" = [{ app_id = "librewolf"; }]; # Communication - "7:${config.ws.w7}" = [ + "7:${w7}" = [ { app_id = "teams-for-linux"; } { app_id = "vesktop"; } { class = "vesktop"; } ]; - "9:${config.ws.w9}" = [{ app_id = "thunderbird"; }]; + "9:${w9}" = [{ app_id = "thunderbird"; }]; # Etc - "2:${config.ws.w2}" = [ + "2:${w2}" = [ { class = "steam"; } { app_id = "heroic"; } ]; - "44:${config.ws.w4a}" = [{ app_id = "com.obsproject.Studio"; }]; + "44:${w4a}" = [{ app_id = "com.obsproject.Studio"; }]; }; }; } diff --git a/modules/home/wms/sway/theme/default.nix b/modules/home/wms/sway/theme/default.nix index 94e997a9..6c042bdb 100644 --- a/modules/home/wms/sway/theme/default.nix +++ b/modules/home/wms/sway/theme/default.nix @@ -3,49 +3,49 @@ wayland.windowManager.sway.config = { colors = { focused = { - border = "#${config.look.colors.prime}"; - background = "#${config.look.colors.prime}"; + border = "#${config.vars.colors.prime}"; + background = "#${config.vars.colors.prime}"; text = "#FFFFFF"; - indicator = "#${config.look.colors.actSplit}"; - childBorder = "#${config.look.colors.prime}"; + indicator = "#${config.vars.colors.actSplit}"; + childBorder = "#${config.vars.colors.prime}"; }; focusedInactive = { - border = "#${config.look.colors.accent}"; - background = "#${config.look.colors.accent}"; - text = "#${config.look.colors.text}"; - indicator = "#${config.look.colors.split}"; - childBorder = "#${config.look.colors.accent}"; + border = "#${config.vars.colors.accent}"; + background = "#${config.vars.colors.accent}"; + text = "#${config.vars.colors.text}"; + indicator = "#${config.vars.colors.split}"; + childBorder = "#${config.vars.colors.accent}"; }; unfocused = { - border = "#${config.look.colors.dark}"; - background = "#${config.look.colors.dark}"; - text = "#${config.look.colors.text}"; - indicator = "#${config.look.colors.split}"; - childBorder = "#${config.look.colors.split}"; + border = "#${config.vars.colors.dark}"; + background = "#${config.vars.colors.dark}"; + text = "#${config.vars.colors.text}"; + indicator = "#${config.vars.colors.split}"; + childBorder = "#${config.vars.colors.split}"; }; urgent = { - border = "#${config.look.colors.urgent}"; - background = "#${config.look.colors.urgent}"; - text = "#${config.look.colors.text}"; - indicator = "#${config.look.colors.urgent}"; - childBorder = "#${config.look.colors.urgent}"; + border = "#${config.vars.colors.urgent}"; + background = "#${config.vars.colors.urgent}"; + text = "#${config.vars.colors.text}"; + indicator = "#${config.vars.colors.urgent}"; + childBorder = "#${config.vars.colors.urgent}"; }; }; bars = [ ]; fonts = { - names = [ config.look.fonts.main ]; + names = [ config.vars.fonts.main ]; size = 10.5; }; window = { - border = config.look.border.int; + border = config.vars.border.int; hideEdgeBorders = "smart"; }; floating = { - border = config.look.border.int; + border = config.vars.border.int; titlebar = false; }; diff --git a/modules/system/default.nix b/modules/system/default.nix index b397e67a..e2c3b9d7 100644 --- a/modules/system/default.nix +++ b/modules/system/default.nix @@ -1,4 +1,4 @@ -{ config, lib, name, ... }: +{ config, name, ... }: { imports = [ ./devices @@ -7,12 +7,9 @@ ./services ./settings ./users + ./variables ]; - options.system = with lib; { - desktop.enable = mkEnableOption "Desktop apps and services"; - server.enable = mkEnableOption "Server apps and services"; - }; - - config.networking.hostName = name; + networking.hostName = name; + deployment.tags = config.system.nixos.tags; } diff --git a/modules/system/devices/audio/default.nix b/modules/system/devices/audio/default.nix index 08950259..4d66e614 100644 --- a/modules/system/devices/audio/default.nix +++ b/modules/system/devices/audio/default.nix @@ -1,13 +1,13 @@ { config, ... }: { services.pipewire = { - enable = config.system.desktop.enable; - wireplumber.extraConfig."wireplumber.settings"."bluetooth.autoswitch-to-headset-profile" = false; + enable = builtins.elem "pc" config.system.nixos.tags; alsa = { enable = true; support32Bit = true; }; pulse.enable = true; #jack.enable = true; + wireplumber.extraConfig."wireplumber.settings"."bluetooth.autoswitch-to-headset-profile" = false; }; } diff --git a/modules/system/devices/bluetooth/default.nix b/modules/system/devices/bluetooth/default.nix index b6885d45..e735bf31 100644 --- a/modules/system/devices/bluetooth/default.nix +++ b/modules/system/devices/bluetooth/default.nix @@ -1,6 +1,6 @@ -{ config, lib, pkgs, ... }: +{ config, lib, ... }: { - config = lib.mkIf config.system.desktop.enable { + config = lib.mkIf (builtins.elem "pc" config.system.nixos.tags) { hardware.bluetooth = { enable = true; settings = { @@ -8,9 +8,7 @@ Policy.AutoEnable = "true"; }; }; - environment = { - systemPackages = with pkgs; [ bluetui ]; - persistence."/persist".directories = [ "/var/lib/bluetooth" ]; - }; + + environment.persistence."/persist".directories = [ "/var/lib/bluetooth" ]; }; } diff --git a/modules/system/devices/boot/default.nix b/modules/system/devices/boot/default.nix index 41c0496b..40fd3718 100644 --- a/modules/system/devices/boot/default.nix +++ b/modules/system/devices/boot/default.nix @@ -10,7 +10,6 @@ boot = { kernelPackages = lib.mkDefault pkgs.linuxPackages_latest; - kernelParams = [ "nouveau.config=NvGspRm=1" ]; blacklistedKernelModules = [ "pcspkr" ]; kernel.sysctl = { "vm.max_map_count" = 2147483642; diff --git a/modules/system/devices/default.nix b/modules/system/devices/default.nix index 0ccbcf4d..a99c9a26 100644 --- a/modules/system/devices/default.nix +++ b/modules/system/devices/default.nix @@ -7,6 +7,7 @@ ./disks ./networking ./printing + ./tlp ./udev ./video ]; diff --git a/modules/system/devices/disks/filesystems/default.nix b/modules/system/devices/disks/filesystems/default.nix index a6a1f3ba..71fe167e 100644 --- a/modules/system/devices/disks/filesystems/default.nix +++ b/modules/system/devices/disks/filesystems/default.nix @@ -2,17 +2,20 @@ { boot = { supportedFilesystems = { - ntfs = config.system.desktop.enable; - zfs = config.system.server.enable; + ntfs = builtins.elem "pc" config.system.nixos.tags; + zfs = builtins.elem "server" config.system.nixos.tags; }; swraid = { - enable = config.system.server.enable; + enable = builtins.elem "server" config.system.nixos.tags; mdadmConf = "MAILADDR contact@nixfox.ca"; }; }; services = lib.mkIf config.environment.persistence."/persist".enable { - btrfs.autoScrub.enable = true; + btrfs.autoScrub = { + enable = true; + interval = "weekly"; + }; fstrim.enable = true; }; diff --git a/modules/system/devices/networking/default.nix b/modules/system/devices/networking/default.nix index aed59229..fd8e9172 100644 --- a/modules/system/devices/networking/default.nix +++ b/modules/system/devices/networking/default.nix @@ -1,6 +1,7 @@ { config, ... }: { imports = [ + ./mounts ./mycelium ./nameservers ./wireless diff --git a/modules/system/devices/networking/mounts/default.nix b/modules/system/devices/networking/mounts/default.nix new file mode 100644 index 00000000..3bb69619 --- /dev/null +++ b/modules/system/devices/networking/mounts/default.nix @@ -0,0 +1,32 @@ +{ config, lib, nodes, ... }: +{ + fileSystems = let + netOpts = [ + "noauto" + "soft" + "x-systemd.automount" + ]; + in with nodes; { + "midas" = { + enable = lib.mkDefault false; + device = "[${midas.config.deployment.targetHost}]:/storage"; + mountPoint = "/network/Midas"; + fsType = "nfs4"; + options = netOpts; + }; + "kitty" = { + enable = lib.mkDefault false; + device = "[${kitty.config.deployment.targetHost}]:/storage"; + mountPoint = "/network/Kitty"; + fsType = "nfs4"; + options = netOpts; + }; + "prophet" = { + enable = lib.mkDefault false; + device = "[${prophet.config.deployment.targetHost}]:/storage"; + mountPoint = "/network/Prophet"; + fsType = "nfs4"; + options = netOpts; + }; + }; +} diff --git a/modules/system/devices/networking/wireless/default.nix b/modules/system/devices/networking/wireless/default.nix index 2bddfeef..eab13bb7 100644 --- a/modules/system/devices/networking/wireless/default.nix +++ b/modules/system/devices/networking/wireless/default.nix @@ -1,7 +1,7 @@ -{ config, ... }: +{ ... }: { networking.wireless = { - enable = config.system.desktop.enable; + enable = true; userControlled.enable = true; }; } diff --git a/modules/system/devices/printing/default.nix b/modules/system/devices/printing/default.nix index 8ea5eed7..a57dbaff 100644 --- a/modules/system/devices/printing/default.nix +++ b/modules/system/devices/printing/default.nix @@ -2,7 +2,7 @@ { services = { printing = { - enable = config.system.desktop.enable; + enable = builtins.elem "pc" config.system.nixos.tags; drivers = with pkgs; [ hplip ]; }; avahi = { diff --git a/modules/system/devices/tlp/default.nix b/modules/system/devices/tlp/default.nix new file mode 100644 index 00000000..694db2be --- /dev/null +++ b/modules/system/devices/tlp/default.nix @@ -0,0 +1,31 @@ +{ config, ... }: +{ + services.tlp = { + enable = true; + settings = let + leastBat = 80; + maxBat = 85; + in { + # Stop battery charging after threshold + START_CHARGE_THRESH_BAT0 = leastBat; + STOP_CHARGE_THRESH_BAT0 = maxBat; + START_CHARGE_THRESH_BAT1 = leastBat; + STOP_CHARGE_THRESH_BAT1 = maxBat; + + # Change CPU energy/performance policy to power + CPU_ENERGY_PERF_POLICY_ON_AC = "performance"; + CPU_ENERGY_PERF_POLICY_ON_BAT = "power"; + + # Enable the platform profile low-power + PLATFORM_PROFILE_ON_AC = "performance"; + PLATFORM_PROFILE_ON_BAT = "low-power"; + + # Disable turbo boost + CPU_BOOST_ON_AC = 1; + CPU_BOOST_ON_BAT = 0; + + CPU_HWP_DYN_BOOST_ON_AC = 1; + CPU_HWP_DYN_BOOST_ON_BAT = 0; + }; + }; +} diff --git a/modules/system/devices/udev/default.nix b/modules/system/devices/udev/default.nix index 37191c01..728dba1e 100644 --- a/modules/system/devices/udev/default.nix +++ b/modules/system/devices/udev/default.nix @@ -1,6 +1,7 @@ -{ config, lib, pkgs, ... }: +{ pkgs, ... }: { - services.udev.packages = with pkgs; lib.mkIf config.system.desktop.enable [ + services.udev.packages = with pkgs; [ + android-udev-rules game-devices-udev-rules ]; } diff --git a/modules/system/devices/video/default.nix b/modules/system/devices/video/default.nix index de825e6f..6db0c37f 100644 --- a/modules/system/devices/video/default.nix +++ b/modules/system/devices/video/default.nix @@ -3,7 +3,7 @@ imports = [ ./nvidia ]; hardware.graphics = { - enable = config.system.desktop.enable; + enable = builtins.elem "pc" config.system.nixos.tags; enable32Bit = if config.nixpkgs.hostPlatform.linuxArch == "x86_64" then true else false; extraPackages = with pkgs; [ vulkan-loader diff --git a/modules/system/devices/video/nvidia/default.nix b/modules/system/devices/video/nvidia/default.nix index f9d10a1c..40156146 100644 --- a/modules/system/devices/video/nvidia/default.nix +++ b/modules/system/devices/video/nvidia/default.nix @@ -1,20 +1,18 @@ { config, lib, ... }: { - options.system.nvidia.enable = lib.mkEnableOption "Nvidia graphic drivers"; + config = lib.mkIf (lib.elem "nvidia" config.services.xserver.videoDrivers) { + boot.kernelParams = [ "nvidia_drm.fbdev=1" ]; # Framebuffer fixes TTY access - config = lib.mkIf config.system.nvidia.enable { hardware.nvidia = { modesetting.enable = true; nvidiaSettings = false; open = true; }; - boot.kernelParams = [ "nvidia_drm.fbdev=1" ]; # Framebuffer fixes TTY access - - services.xserver.videoDrivers = [ "nvidia" ]; - nixpkgs.allowUnfreePackages = [ "nvidia-x11" ]; - specialisation.nouveau.configuration.config.system.nvidia.enable = lib.mkForce false; + specialisation.nouveau.configuration.config.services.xserver.videoDrivers = lib.mkForce [ "nouveau" ]; + } // { + boot.kernelParams = [ "nouveau.config=NvGspRm=1" ]; }; } diff --git a/modules/system/programs/desktops/default.nix b/modules/system/programs/desktops/default.nix index 9ffc2855..39b1ab5c 100644 --- a/modules/system/programs/desktops/default.nix +++ b/modules/system/programs/desktops/default.nix @@ -1,6 +1,6 @@ { config, lib, ... }: { - config = lib.mkIf config.system.desktop.enable { + config = lib.mkIf (builtins.elem "pc" config.system.nixos.tags) { programs.sway.enable = true; security.pam.services.swaylock = {}; }; diff --git a/modules/system/programs/gaming/default.nix b/modules/system/programs/gaming/default.nix index b2a135a6..44949786 100644 --- a/modules/system/programs/gaming/default.nix +++ b/modules/system/programs/gaming/default.nix @@ -1,7 +1,7 @@ { config, ... }: { programs.gamemode = { - enable = config.system.desktop.enable; + enable = builtins.elem "pc" config.system.nixos.tags; settings = { general.renice = 10; gpu = { diff --git a/modules/system/programs/udevil/default.nix b/modules/system/programs/udevil/default.nix index 604943ab..d5dac7fb 100644 --- a/modules/system/programs/udevil/default.nix +++ b/modules/system/programs/udevil/default.nix @@ -1,4 +1,4 @@ -{ config, ... }: +{ ... }: { - programs.udevil.enable = config.system.desktop.enable; + programs.udevil.enable = true; } diff --git a/modules/system/secrets/default.nix b/modules/system/secrets/default.nix index e2904a3e00a21a9904186c48e89ab31bd8eba635..0ba12e4de6f9928092c284e094e53ad653279aa7 100644 GIT binary patch literal 1640 zcmZQ@_Y83kiVO&0V5??zZe6CEkfN}3SEXUH_ZqLSe-@aOE)I_9m9sc>Z3a8@wdCg} z?Iw?FKRcTpx@$M@>Y7D@^9=ZymQ+s6Te!7&(`&8(>7M$aOT|{tRBkK$@ZZ#&HucP` z#d8y9_AXl+IqUFBY4Pv-sz2Tkjksf!Y~%RKIO?mF#ENM(GiFZq+wlEap7o4hNu6aD zQg*Zcz0*_n&Nun7B>jftW5#%uj~17G?fOdgOx^L~Ck>n%a_457`&%!X zI`gu`eto`$lWh)6PkVpSR(zh@#^Mu)57_8Dj>wz1Pr?6pxV75ZX(@4w$e<^qG<~+H+^fV=|$V#sh`jZ}S z)K2P~^gaJu@Bf6E>|%bCDh?i(n3r}xZiOsNw!csKTfXgBuk7}xeZ%xe@`3l_j<>h1Qk!{~xbc)5@8} z+vm9O*_U_G)2yQSA8l4$UZ%Hd(QAuc{JH6Vzb{l)u3vZk`^CfWs$! #-!^B-JFi zJgL8b_r1U4GN*c1yng@SyaBS*qX_Gnr34KC|7!a%!im1S{~K zh_%YTeM#8Rd#!nnwr{}&b6)95HXZ848)kfVJ#V$JvZp0-!pU0>iS~LOl{PPrW>n58 z;t-H1|37Qit9@T!{={WpWN{SE{WfG9_w!~ zQK#-Fm*=$x(VqVc1lHy){ShBkV7!oR^S7Xosf}veXYGpTRC=`KCfDrgpXTnk7iMy~ z;o=f`jRpHHar{MfsuR3$ssF;u$0$-!@SG<$Y? zXtV6aMH+KG7u+~9;qmFIyXA%F%eaR&iSJuIe*=%>1C19;CaKNR?>}tx&pa->e4=?; z>4ywo20{IWSF4Xrypr+x%*3q18J=@A%Pj6?_XZxFZnS#qpOs1(_ZzBgE(kqR(D|ODwh}ywY9E(Aq?+l2xJy)ta4v- zse4iIv5DEb7bYFJuI*!zy4Bk5wQbcD*4aDqJ|ACf@YW`EL3H8WlGzES9{%4AV;9)w z=N~?QH$drmo3j1!uPciAj;!w6<33IOw<*u$Eva^CHX6ohjT@M3mw($O@T8?{>t;0r znbLHRCkNRr@3AJ&zAyc>q02gOS4mo}@sDs5~+3BaiCsXYqMu{oBRelc9&<%+klQ@pbxUWeTgyZh{o|A8Q5ZN*AO*(-B6H+3o3 z_ITL%S8J}GrvB-q#0$2Lw9Exl9;@_yJbuYM=kba^e^owy^7{Oa=eeivl?~4Bh7zhP z*C@Ucysa2Iea4Zs?!_DGIbU+IGghT5wFKP$c6_6Pu0Xxo?;D!Q$3FhNIPcS?U2~N+ VqOQG4{@dBbRF%PZVS2IG8UTI>D@6bR literal 1662 zcmZQ@_Y83kiVO&0_^CYOx6USw^S^!+eQthe$@NFmQgQM2hs(Dsbc$=Sy0J#_U&;S@ zIZ}Bl4d~3U+YihMJXvgw*7xfdSRR}-- zo7(qxo^j@{|GRfQiLKxGLNM#WycF42lb)LWJSH73*XI}!eeF;3|NR|nww>Rlc|@+T zN@BH3SOMoHH52J$#$S`CywhfSx_sw@he~%89_K$2shY;axJ|p_NafqZ6B!d)k9M5C>za`3zEH@*LLud)=Je?O z%5JL7rx~xZKiBHf*zxY9vX;-UJ}u2n{%3A^wK5cx78b5P;-CLQYEFu%i01v%;rl8w zRySyWt?u?o70TaVcXmnB&elgvw(o-irEM2aZ~wJ!Dr=B`&b$4Y57_=ql?~ATHRs;S zsk?s{J~}pa=5*)F{?n`d37M5Lz(d*pxr# z1nvae{)_!=|J(VWWn;D1sZ7nL8L>U`)shV%ZL3c;8*Or6(G%WO?Y{epcQZw;`dXo$`>BI6`>;9sk%(kA|XRQ z^J;9|G-lu6-w}z?y}!Qj?m61FLHY8IHiocSiaHDa?U3Ezzt{>-*FDk2&wrmJUfPxb3O5 z_E_iTip^2NIiOKh?Q=S~nx3a!?)m~X4d`T9l2j~^44_}jib@VW~h?0MECO>0nR=#Fd zbb}*Cm0LpkKxbe|_Q&)EcHtcg-y`B}npM9~5YU^-`SOTvp;6@50=|$VDVom@nQr)B zZ?M0-QzJw4%Ac+0^F5(*cagWB!S#TD2GSE3XlctBN~QI4K3o<( z)qTnGEDw{YN&K6IEleKh%oV>Uzhujei6wXT9M@am9yj57i*}p8ZSVeKN16YYTRT^; z|Gbj>?ZOE!1fGh^&05hv@A;(UXU$hv>9|c{|ED`kVe7L;3)XtyWMo`=Y({(Yr)``K zyWe|MPTXQXXIg{tTkh_CJy{nwY&+(bo&NAsqE4o&!NsYvx3zv>zu?j-`fNkrol{R8 zb6X_$e~x9~A%1M*CxV&dsSqe{* zDad1daZmMvWFrUj--R=dr!6;Mx<<)!@?38Q>-%X2Tf<#{T)box#Ql+Rg2!5_0e2K?K2 zOmtuM13%`a!YA|g{W~hl_g1#RICK6cZlT%FSN}ZPp41ePc#w1XrxZ7fcE2@whTHc4 zcn~L=I!|s#mCJ*he7j1Q2r+7v?0@0oe7Pp@w)2wtyQCSEb3L-FJ=Ar%_P^8S%QZVI zGWGYBwY>pO2f4O1UA}ad^YOpKcHN)nWUGbkuAkJqvrP8EwmKE7Bq^b%OeLng?|fxK zCQ2A_H(j&2T+<<4^~$$2O5u+8$%?weQxzIgj3i7t6KBobSsWVPyrwDh4&Q0Z-)oEv z|Mj{FYR|8aIp)w**xH^^+~eYsk<6*#{qqd#XI-ls^}8$-r!kZ~S@@*sEoWA?$rssY zt84#Vn|?AmV(pny?fKgU9_4%NeQqe_rL#WjURv73m(q!G%bYg2%&1wvS+w^ELu3NG o<*LbX|ANl!o#*}3Hs|ArZn<8v%0Z;@ltN;K2 diff --git a/modules/system/services/general/default.nix b/modules/system/services/general/default.nix index 96b68f06..1fbfcf57 100644 --- a/modules/system/services/general/default.nix +++ b/modules/system/services/general/default.nix @@ -6,7 +6,6 @@ ./libvirtd ./snowflake ./ssh - ./tlp ./userborn ./vmware ]; diff --git a/modules/system/services/general/displaymanager/default.nix b/modules/system/services/general/displaymanager/default.nix index 585e7f35..c1cf9e25 100644 --- a/modules/system/services/general/displaymanager/default.nix +++ b/modules/system/services/general/displaymanager/default.nix @@ -1,6 +1,6 @@ { config, lib, pkgs, ... }: { - config = lib.mkIf config.system.desktop.enable { + config = lib.mkIf (builtins.elem "pc" config.system.nixos.tags) { services.greetd = { enable = true; settings.default_session.command = lib.mkDefault (lib.strings.concatStringsSep " " [ diff --git a/modules/system/services/general/libvirtd/default.nix b/modules/system/services/general/libvirtd/default.nix index 8cb556dd..bbf47a4e 100644 --- a/modules/system/services/general/libvirtd/default.nix +++ b/modules/system/services/general/libvirtd/default.nix @@ -14,13 +14,15 @@ }; }; - programs.virt-manager.enable = true; - - networking.firewall.trustedInterfaces = [ - "virbr0" - "virbr1" + # Isolate devices into more IOMMU groups + boot.kernelParams = [ + "pcie_acs_override=downstream,multifunction" + "pci=routeirq" ]; + programs.virt-manager.enable = true; + + # Allow looking glass to be accessed by users systemd.tmpfiles.rules = [ "f /dev/shm/looking-glass 0660 - libvirtd -" ]; environment.persistence."/persist".directories = [ "/var/lib/libvirt" ]; diff --git a/modules/system/services/general/tlp/default.nix b/modules/system/services/general/tlp/default.nix deleted file mode 100644 index 4b030f55..00000000 --- a/modules/system/services/general/tlp/default.nix +++ /dev/null @@ -1,4 +0,0 @@ -{ config, ... }: -{ - services.tlp.enable = config.system.desktop.enable; -} diff --git a/modules/system/services/server/cfdyndns/default.nix b/modules/system/services/server/cfdyndns/default.nix index b281886b..922c774b 100644 --- a/modules/system/services/server/cfdyndns/default.nix +++ b/modules/system/services/server/cfdyndns/default.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ config, lib, ... }: { config = lib.mkIf config.services.cloudflare-dyndns.enable { services.cloudflare-dyndns.apiTokenFile = "/var/lib/private/cloudflare-dyndns/key"; diff --git a/modules/system/services/server/default.nix b/modules/system/services/server/default.nix index 6e2a762f..9d19264e 100644 --- a/modules/system/services/server/default.nix +++ b/modules/system/services/server/default.nix @@ -5,7 +5,6 @@ ./forgejo ./icecast ./jellyfin - ./lemmy ./mailserver ./mastodon ./matrix diff --git a/modules/system/services/server/forgejo/default.nix b/modules/system/services/server/forgejo/default.nix index 37ce0176..af4d132f 100644 --- a/modules/system/services/server/forgejo/default.nix +++ b/modules/system/services/server/forgejo/default.nix @@ -8,17 +8,17 @@ lfs.enable = true; settings = { server = { - DOMAIN = "git.nixfox.ca"; - ROOT_URL = "https://git.nixfox.ca:443"; + DOMAIN = "git.${config.vars.mainDomain}"; + ROOT_URL = "https://git.${config.vars.mainDomain}:443"; HTTP_PORT = 3110; SSH_PORT = 2299; START_SSH_SERVER = true; }; mailer = { ENABLED = true; - SMTP_ADDR = "mx.nixfox.ca"; - FROM = "NixFox Git "; - USER = "noreply@nixfox.ca"; + SMTP_ADDR = "mx.${config.vars.mainDomain}"; + FROM = "NixFox Git "; + USER = "noreply@${config.vars.mainDomain}"; PASSWD = config.secrets.mailPass.nixfoxNoReply; PROTOCOL = "smtps"; }; @@ -32,7 +32,7 @@ networking.firewall.allowedTCPPorts = [ 2299 ]; - services.cloudflare-dyndns.domains = [ "git.nixfox.ca" ]; + services.cloudflare-dyndns.domains = [ "git.${config.vars.mainDomain}" ]; environment.persistence."/persist".directories = [ "/var/lib/forgejo" ]; }; diff --git a/modules/system/services/server/forgejo/nginx/default.nix b/modules/system/services/server/forgejo/nginx/default.nix index 5428884a..ad2223ad 100644 --- a/modules/system/services/server/forgejo/nginx/default.nix +++ b/modules/system/services/server/forgejo/nginx/default.nix @@ -1,6 +1,6 @@ { config, lib, ... }: { - services.nginx.virtualHosts."git.nixfox.ca" = lib.mkIf config.services.forgejo.enable { + services.nginx.virtualHosts."git.${config.vars.mainDomain}" = lib.mkIf config.services.forgejo.enable { enableACME = true; forceSSL = true; locations."/" = { diff --git a/modules/system/services/server/icecast/default.nix b/modules/system/services/server/icecast/default.nix index ec3dce64..498c184f 100644 --- a/modules/system/services/server/icecast/default.nix +++ b/modules/system/services/server/icecast/default.nix @@ -7,9 +7,9 @@ services.icecast = { listen.port = 73; - hostname = "radio.nixfox.ca"; + hostname = "radio.${config.vars.mainDomain}"; admin = { - user = config.sysusers.main; + user = "admin"; password = config.secrets.cast.adminPass; }; extraConf = '' @@ -17,7 +17,7 @@ ${config.secrets.cast.sourcePass} Canada - contact@nixfox.ca + contact@${config.vars.mainDomain} ''; }; } diff --git a/modules/system/services/server/icecast/nginx/default.nix b/modules/system/services/server/icecast/nginx/default.nix index 6573d11f..8993503a 100644 --- a/modules/system/services/server/icecast/nginx/default.nix +++ b/modules/system/services/server/icecast/nginx/default.nix @@ -1,6 +1,6 @@ { config, lib, ... }: { - services.nginx.virtualHosts."radio.nixfox.ca" = lib.mkIf config.services.icecast.enable { + services.nginx.virtualHosts."radio.${config.vars.mainDomain}" = lib.mkIf config.services.icecast.enable { enableACME = true; forceSSL = true; locations."/" = { diff --git a/modules/system/services/server/jellyfin/nginx/default.nix b/modules/system/services/server/jellyfin/nginx/default.nix index 26d20ab9..d79599e9 100644 --- a/modules/system/services/server/jellyfin/nginx/default.nix +++ b/modules/system/services/server/jellyfin/nginx/default.nix @@ -1,6 +1,6 @@ { config, lib, ... }: { - services.nginx.virtualHosts."jelly.nixfox.ca" = lib.mkIf config.services.jellyfin.enable { + services.nginx.virtualHosts."jelly.${config.vars.mainDomain}" = lib.mkIf config.services.jellyfin.enable { enableACME = true; forceSSL = true; locations."/" = { diff --git a/modules/system/services/server/lemmy/default.nix b/modules/system/services/server/lemmy/default.nix deleted file mode 100644 index 2cc6ed6d..00000000 --- a/modules/system/services/server/lemmy/default.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ config, lib, ... }: -{ - imports = [ ./nginx ]; - - config = lib.mkIf config.services.lemmy.enable { - services.lemmy = lib.mkIf config.services.lemmy.enable { - nginx.enable = true; - database.createLocally = true; - settings = { - hostname = "lemmy.nixfox.ca"; - email = { - smtp_server = "mx.nixfox.ca:587"; - smtp_login = "noreply@nixfox.ca"; - smtp_from_address = "NixFox Lemmy "; - smtp_password = config.secrets.mailPass.nixfoxNoReply; - tls_type = "starttls"; - }; - }; - }; - environment.persistence."/persist".directories = [ "/var/lib/postgresql" ]; - }; -} diff --git a/modules/system/services/server/lemmy/nginx/default.nix b/modules/system/services/server/lemmy/nginx/default.nix deleted file mode 100644 index 0ab2106e..00000000 --- a/modules/system/services/server/lemmy/nginx/default.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ config, lib, ... }: -{ - services.nginx.virtualHosts."lemmy.nixfox.ca" = lib.mkIf config.services.lemmy.enable { - enableACME = true; - forceSSL = true; - }; -} diff --git a/modules/system/services/server/mailserver/default.nix b/modules/system/services/server/mailserver/default.nix index b2edc8eb..c2418a80 100644 --- a/modules/system/services/server/mailserver/default.nix +++ b/modules/system/services/server/mailserver/default.nix @@ -1,11 +1,75 @@ -{ lib, ... }: +{ config, lib, pkgs, mailserver, ... }: { imports = [ ./go-autoconfig ./radicale ./roundcube - ./simplenix + mailserver.nixosModule ]; - options.services.mailserver.enable = lib.mkEnableOption "Simple NixOS Mailserver"; + config = lib.mkIf config.mailserver.enable { + mailserver = { + fqdn = "mx.${config.vars.mainDomain}"; + domains = [ + "nixfox.ca" + "bloxelcom.net" + "freecorn1854.win" + "lunamoonlight.xyz" + ]; + certificateScheme = "acme-nginx"; + localDnsResolver = false; + redis.port = 1515; + + # Passwords made with 'mkpasswd -sm bcrypt' + loginAccounts = { + "jimbo@nixfox.ca" = { + hashedPassword = config.secrets.mailHash.bun; + aliases = [ + "james@nixfox.ca" + + "bun@nixfox.ca" + "bun@bloxelcom.net" + + "contact@nixfox.ca" + ]; + }; + + "luna@lunamoonlight.xyz" = { + hashedPassword = config.secrets.mailHash.luna; + aliases = [ + "luna@bloxelcom.net" + "contact@bloxelcom.net" + "ibu@bloxelcom.net" + ]; + }; + + "contact@freecorn1854.win" = { + hashedPassword = config.secrets.mailHash.corn; + aliases = [ "freecorn@bloxelcom.net" ]; + }; + + # Noreply emails + "noreply@nixfox.ca" = { + hashedPassword = config.secrets.mailHash.nixfoxNoReply; + sendOnly = true; + }; + "noreply@bloxelcom.net" = { + hashedPassword = config.secrets.mailHash.bloxelNoReply; + sendOnly = true; + }; + }; + }; + + services = { + redis.servers.rspamd.port = config.mailserver.redis.port; + cloudflare-dyndns.domains = [ config.mailserver.fqdn ]; + }; + + environment.persistence."/persist".directories = [ + "/var/vmail" + "/var/lib/dovecot" + "/var/lib/postfix" + "/var/lib/redis-rspamd" + ]; + }; } diff --git a/modules/system/services/server/mailserver/go-autoconfig/default.nix b/modules/system/services/server/mailserver/go-autoconfig/default.nix index 740a3fb6..0a9d5746 100644 --- a/modules/system/services/server/mailserver/go-autoconfig/default.nix +++ b/modules/system/services/server/mailserver/go-autoconfig/default.nix @@ -2,7 +2,7 @@ { imports = [ ./nginx ]; - services = lib.mkIf config.services.mailserver.enable { + services = lib.mkIf config.mailserver.enable { go-autoconfig = { enable = true; settings = { diff --git a/modules/system/services/server/mailserver/go-autoconfig/nginx/default.nix b/modules/system/services/server/mailserver/go-autoconfig/nginx/default.nix index 1bb0d687..14937c85 100644 --- a/modules/system/services/server/mailserver/go-autoconfig/nginx/default.nix +++ b/modules/system/services/server/mailserver/go-autoconfig/nginx/default.nix @@ -1,6 +1,6 @@ { config, lib, ... }: { - services.nginx.virtualHosts."autoconfig.nixfox.ca" = lib.mkIf config.services.go-autoconfig.enable { + services.nginx.virtualHosts."autoconfig.${config.vars.mainDomain}" = lib.mkIf config.services.go-autoconfig.enable { enableACME = true; forceSSL = true; locations."/" = { diff --git a/modules/system/services/server/mailserver/radicale/default.nix b/modules/system/services/server/mailserver/radicale/default.nix index 148d064f..6321c3d1 100644 --- a/modules/system/services/server/mailserver/radicale/default.nix +++ b/modules/system/services/server/mailserver/radicale/default.nix @@ -2,7 +2,7 @@ { imports = [ ./nginx ]; - config = lib.mkIf config.services.mailserver.enable { + config = lib.mkIf config.mailserver.enable { services = { radicale = { enable = true; diff --git a/modules/system/services/server/mailserver/radicale/nginx/default.nix b/modules/system/services/server/mailserver/radicale/nginx/default.nix index d6e1a5be..71b9481b 100644 --- a/modules/system/services/server/mailserver/radicale/nginx/default.nix +++ b/modules/system/services/server/mailserver/radicale/nginx/default.nix @@ -1,6 +1,6 @@ { config, lib, ... }: { - services.nginx.virtualHosts."cal.nixfox.ca" = lib.mkIf config.services.go-autoconfig.enable { + services.nginx.virtualHosts."cal.${config.vars.mainDomain}" = lib.mkIf config.services.radicale.enable { enableACME = true; forceSSL = true; locations."/" = { diff --git a/modules/system/services/server/mailserver/roundcube/default.nix b/modules/system/services/server/mailserver/roundcube/default.nix index f1d8d44c..ac7ad946 100644 --- a/modules/system/services/server/mailserver/roundcube/default.nix +++ b/modules/system/services/server/mailserver/roundcube/default.nix @@ -1,11 +1,11 @@ { config, lib, ... }: { - config = lib.mkIf config.services.mailserver.enable { + config = lib.mkIf config.mailserver.enable { services.roundcube = { enable = true; - hostName = "mail.nixfox.ca"; + hostName = "mail.${config.vars.mainDomain}"; extraConfig = '' - $config['smtp_server'] = "tls://mx.nixfox.ca"; + $config['smtp_server'] = "tls://mx.${config.vars.mainDomain}"; $config['smtp_user'] = "%u"; $config['smtp_pass'] = "%p"; ''; diff --git a/modules/system/services/server/mailserver/simplenix/default.nix b/modules/system/services/server/mailserver/simplenix/default.nix deleted file mode 100644 index 2e022966..00000000 --- a/modules/system/services/server/mailserver/simplenix/default.nix +++ /dev/null @@ -1,72 +0,0 @@ -{ config, lib, pkgs, mailserver, ... }: -{ - imports = [ mailserver.nixosModule ]; - - config = lib.mkIf config.services.mailserver.enable { - mailserver = { - enable = true; - fqdn = "mx.nixfox.ca"; - domains = [ - "nixfox.ca" - "bloxelcom.net" - "freecorn1854.win" - "lunamoonlight.xyz" - ]; - certificateScheme = "acme-nginx"; - localDnsResolver = false; - redis.port = 1515; - - # Passwords made with 'mkpasswd -sm bcrypt' - loginAccounts = { - "jimbo@nixfox.ca" = { - hashedPassword = config.secrets.mailHash.bun; - aliases = [ - "james@nixfox.ca" - "jimbo@bloxelcom.net" - - "bun@nixfox.ca" - "bun@bloxelcom.net" - - "contact@nixfox.ca" - ]; - }; - - "luna@lunamoonlight.xyz" = { - hashedPassword = config.secrets.mailHash.luna; - aliases = [ - "luna@bloxelcom.net" - "contact@bloxelcom.net" - "ibu@bloxelcom.net" - ]; - }; - - "contact@freecorn1854.win" = { - hashedPassword = config.secrets.mailHash.corn; - aliases = [ "freecorn@bloxelcom.net" ]; - }; - - # Noreply emails - "noreply@nixfox.ca" = { - hashedPassword = config.secrets.mailHash.nixfoxNoReply; - sendOnly = true; - }; - "noreply@bloxelcom.net" = { - hashedPassword = config.secrets.mailHash.bloxelNoReply; - sendOnly = true; - }; - }; - }; - - services = { - redis.servers.rspamd.port = config.mailserver.redis.port; - cloudflare-dyndns.domains = [ config.mailserver.fqdn ]; - }; - - environment.persistence."/persist".directories = [ - "/var/vmail" - "/var/lib/dovecot" - "/var/lib/postfix" - "/var/lib/redis-rspamd" - ]; - }; -} diff --git a/modules/system/services/server/matrix/coturn/default.nix b/modules/system/services/server/matrix/coturn/default.nix index 6f98c201..bf7c5ec5 100644 --- a/modules/system/services/server/matrix/coturn/default.nix +++ b/modules/system/services/server/matrix/coturn/default.nix @@ -12,7 +12,7 @@ max-port = 50000; use-auth-secret = true; static-auth-secret = config.secrets.coturnSecret; - realm = "turn.nixfox.ca"; + realm = "turn.${config.vars.mainDomain}"; cert = "/var/lib/acme/${config.services.coturn.realm}/fullchain.pem"; pkey = "/var/lib/acme/${config.services.coturn.realm}/key.pem"; }; diff --git a/modules/system/services/server/matrix/coturn/nginx/default.nix b/modules/system/services/server/matrix/coturn/nginx/default.nix index f73bb312..dc53becb 100644 --- a/modules/system/services/server/matrix/coturn/nginx/default.nix +++ b/modules/system/services/server/matrix/coturn/nginx/default.nix @@ -1,7 +1,7 @@ { config, lib, ... }: { config = lib.mkIf config.services.coturn.enable { - services.nginx.virtualHosts."turn.nixfox.ca" = { + services.nginx.virtualHosts."turn.${config.vars.mainDomain}" = { enableACME = true; forceSSL = true; listen = [{ @@ -12,11 +12,9 @@ locations."/".proxyPass = "http://127.0.0.1:1380"; }; - security.acme.certs = { - "turn.nixfox.ca" = { - group = "turnserver"; - postRun = "systemctl restart coturn.service"; - }; + security.acme.certs."turn.${config.vars.mainDomain}" = { + group = "turnserver"; + postRun = "systemctl restart coturn.service"; }; }; } diff --git a/modules/system/services/server/matrix/element/default.nix b/modules/system/services/server/matrix/element/default.nix index 5e8492a4..34326b31 100644 --- a/modules/system/services/server/matrix/element/default.nix +++ b/modules/system/services/server/matrix/element/default.nix @@ -4,14 +4,14 @@ nixpkgs.config.element-web.conf = { default_server_config."m.homeserver" = { - base_url = "https://matrix.nixfox.ca"; - server_name = "matrix.nixfox.ca"; + base_url = "https://matrix.${config.vars.mainDomain}"; + server_name = "matrix.${config.vars.mainDomain}"; }; branding = { - auth_header_logo_url = "https://www.nixfox.ca/images/copyright/profile.png"; - #welcome_background_url = "https://www.nixfox.ca/images/backgrounds/template-background.png"; + auth_header_logo_url = "https://www.${config.vars.mainDomain}/images/copyright/profile.png"; + #welcome_background_url = "https://www.${config.vars.mainDomain}/images/backgrounds/template-background.png"; }; - embedded_pages.home_url = "https://www.nixfox.ca/"; + embedded_pages.home_url = "https://www.${config.vars.mainDomain}/"; disable_custom_urls = true; disable_guests = true; default_theme = "dark"; diff --git a/modules/system/services/server/matrix/element/nginx/default.nix b/modules/system/services/server/matrix/element/nginx/default.nix index 1c085eb3..960f3598 100644 --- a/modules/system/services/server/matrix/element/nginx/default.nix +++ b/modules/system/services/server/matrix/element/nginx/default.nix @@ -1,6 +1,6 @@ { config, lib, pkgs, ... }: { - services.nginx.virtualHosts."chat.nixfox.ca" = lib.mkIf config.services.matrix-synapse.enable { + services.nginx.virtualHosts."chat.${config.vars.mainDomain}" = lib.mkIf config.services.matrix-synapse.enable { enableACME = true; addSSL = true; root = "${pkgs.element-web}"; diff --git a/modules/system/services/server/matrix/synapse/default.nix b/modules/system/services/server/matrix/synapse/default.nix index 342fff38..fb557659 100644 --- a/modules/system/services/server/matrix/synapse/default.nix +++ b/modules/system/services/server/matrix/synapse/default.nix @@ -5,15 +5,15 @@ config = lib.mkIf config.services.matrix-synapse.enable { services.matrix-synapse = { settings = { - server_name = "nixfox.ca"; - public_baseurl = "https://matrix.nixfox.ca"; + server_name = "${config.vars.mainDomain}"; + public_baseurl = "https://matrix.${config.vars.mainDomain}"; suppress_key_server_warning = true; # Email notifications about account status email = { - notif_from = "NixFox Matrix "; - smtp_host = "mx.nixfox.ca"; - smtp_user = "noreply@nixfox.ca"; + notif_from = "NixFox Matrix "; + smtp_host = "mx.${config.vars.mainDomain}"; + smtp_user = "noreply@${config.vars.mainDomain}"; smtp_pass = config.secrets.mailPass.nixfoxNoReply; enable_tls = true; smtp_port = 587; diff --git a/modules/system/services/server/matrix/synapse/nginx/default.nix b/modules/system/services/server/matrix/synapse/nginx/default.nix index c5d9d5fe..f50834ad 100644 --- a/modules/system/services/server/matrix/synapse/nginx/default.nix +++ b/modules/system/services/server/matrix/synapse/nginx/default.nix @@ -1,6 +1,6 @@ { config, lib, ... }: { - services.nginx.virtualHosts."matrix.nixfox.ca" = lib.mkIf config.services.matrix-synapse.enable { + services.nginx.virtualHosts."matrix.${config.vars.mainDomain}" = lib.mkIf config.services.matrix-synapse.enable { enableACME = true; forceSSL = true; locations = { diff --git a/modules/system/services/server/minecraft/servers/blockworld/default.nix b/modules/system/services/server/minecraft/servers/blockworld/default.nix index d6525204..0f5b1363 100644 --- a/modules/system/services/server/minecraft/servers/blockworld/default.nix +++ b/modules/system/services/server/minecraft/servers/blockworld/default.nix @@ -14,6 +14,6 @@ symlinks = config.services.minecraft-servers.common.paperSymlinks; files = config.services.minecraft-servers.common.configFiles; }; - cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.blockworld.enable [ "bloxel.nixfox.ca" ]; + cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.blockworld.enable [ "bloxel.${config.vars.mainDomain}" ]; }; } diff --git a/modules/system/services/server/minecraft/servers/cornworld/default.nix b/modules/system/services/server/minecraft/servers/cornworld/default.nix index fafef772..33fcaec7 100644 --- a/modules/system/services/server/minecraft/servers/cornworld/default.nix +++ b/modules/system/services/server/minecraft/servers/cornworld/default.nix @@ -13,6 +13,6 @@ symlinks = config.services.minecraft-servers.common.paperSymlinks; files = config.services.minecraft-servers.common.configFiles; }; - cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.cornworld.enable [ "corn.nixfox.ca" ]; + cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.cornworld.enable [ "corn.${config.vars.mainDomain}" ]; }; } diff --git a/modules/system/services/server/minecraft/servers/default.nix b/modules/system/services/server/minecraft/servers/default.nix index b7088614..5eab36e7 100644 --- a/modules/system/services/server/minecraft/servers/default.nix +++ b/modules/system/services/server/minecraft/servers/default.nix @@ -6,7 +6,6 @@ ./dewdemolisher ./johnside ./marsh - ./roguecraft ./skyblock ./uberbeta ./velocity diff --git a/modules/system/services/server/minecraft/servers/dewdemolisher/default.nix b/modules/system/services/server/minecraft/servers/dewdemolisher/default.nix index f3d13191..11d2eecd 100644 --- a/modules/system/services/server/minecraft/servers/dewdemolisher/default.nix +++ b/modules/system/services/server/minecraft/servers/dewdemolisher/default.nix @@ -13,6 +13,6 @@ symlinks = config.services.minecraft-servers.common.paperSymlinks; files = config.services.minecraft-servers.common.configFiles; }; - cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.dewdemolisher.enable [ "dew.nixfox.ca" ]; + cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.dewdemolisher.enable [ "dew.${config.vars.mainDomain}" ]; }; } diff --git a/modules/system/services/server/minecraft/servers/johnside/default.nix b/modules/system/services/server/minecraft/servers/johnside/default.nix index c65ff0ce..9af650a4 100644 --- a/modules/system/services/server/minecraft/servers/johnside/default.nix +++ b/modules/system/services/server/minecraft/servers/johnside/default.nix @@ -26,6 +26,6 @@ }; files = config.services.minecraft-servers.common.configFiles; }; - cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.johnside.enable [ "john.nixfox.ca" ]; + cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.johnside.enable [ "john.${config.vars.mainDomain}" ]; }; } diff --git a/modules/system/services/server/minecraft/servers/marsh/default.nix b/modules/system/services/server/minecraft/servers/marsh/default.nix index 4bdbbd2e..3eb18bfd 100644 --- a/modules/system/services/server/minecraft/servers/marsh/default.nix +++ b/modules/system/services/server/minecraft/servers/marsh/default.nix @@ -13,6 +13,6 @@ symlinks = config.services.minecraft-servers.common.paperSymlinks; files = config.services.minecraft-servers.common.configFiles; }; - cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.marsh.enable [ "marsh.nixfox.ca" ]; + cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.marsh.enable [ "marsh.${config.vars.mainDomain}" ]; }; } diff --git a/modules/system/services/server/minecraft/servers/roguecraft/default.nix b/modules/system/services/server/minecraft/servers/roguecraft/default.nix deleted file mode 100644 index b7a15a0e..00000000 --- a/modules/system/services/server/minecraft/servers/roguecraft/default.nix +++ /dev/null @@ -1,36 +0,0 @@ -{ config, lib, pkgs, ... }: -{ - services = { - minecraft-servers.servers.roguecraft = { - package = pkgs.paperServers.paper-1_21_1; - jvmOpts = "-Xmx3000M"; - serverProperties = config.services.minecraft-servers.common.serverProperties // { - difficulty = 3; - server-port = 30014; - motd = "\\u00A7l\\u00A7bNixFox \\u00A7cRoguecraft \\u00A7bserver."; - require-resource-pack = true; - resource-pack = "https://nixfox.ca/roguecraftresourcepackredir"; - resource-pack-sha1 = "b540c0562aba90c3ead2356bb9cb74fcf0db36b3"; - }; - whitelist = config.services.minecraft-servers.common.whitelist; - symlinks = config.services.minecraft-servers.common.paperSymlinks; - files = config.services.minecraft-servers.common.configFiles // { - "world/datapacks/roguecraft.zip" = builtins.fetchurl { - url = "https://nixfox.ca/roguecraftdatapackredir"; - sha256 = "04zrkvzvi1i898al45fh9j3k635sf9qhwca7phbv4ynkfl8bz3q3"; - }; - }; - }; - - cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.roguecraft.enable [ "rogue.nixfox.ca" ]; - - nginx.virtualHosts."nixfox.ca".locations = lib.mkIf config.services.minecraft-servers.servers.roguecraft.enable { - "/roguecraftdatapackredir" = { - return = "301 https://cdn.modrinth.com/data/HtKjVijx/versions/Rme4c23R/Roguecraft%201.2.6%20-%20Data%20Pack.zip"; - }; - "/roguecraftresourcepackredir" = { - return = "301 https://cdn.modrinth.com/data/HtKjVijx/versions/C6bITJnq/Roguecraft%201.2.5.4%20-%20Resource%20Pack.zip"; - }; - }; - }; -} diff --git a/modules/system/services/server/minecraft/servers/skyblock/default.nix b/modules/system/services/server/minecraft/servers/skyblock/default.nix index 956f84ec..2a538120 100644 --- a/modules/system/services/server/minecraft/servers/skyblock/default.nix +++ b/modules/system/services/server/minecraft/servers/skyblock/default.nix @@ -13,6 +13,6 @@ symlinks = config.services.minecraft-servers.common.paperSymlinks; files = config.services.minecraft-servers.common.configFiles; }; - cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.skyblock.enable [ "skyblock.nixfox.ca" ]; + cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.skyblock.enable [ "skyblock.${config.vars.mainDomain}" ]; }; } diff --git a/modules/system/services/server/minecraft/servers/uberbeta/default.nix b/modules/system/services/server/minecraft/servers/uberbeta/default.nix index 6f3b3dc5..1e1c35ff 100644 --- a/modules/system/services/server/minecraft/servers/uberbeta/default.nix +++ b/modules/system/services/server/minecraft/servers/uberbeta/default.nix @@ -18,6 +18,6 @@ in { server-port = 30005; }; }; - cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.uberbeta.enable [ "beta.nixfox.ca" ]; + cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.uberbeta.enable [ "beta.${config.vars.mainDomain}" ]; }; } diff --git a/modules/system/services/server/nextcloud/default.nix b/modules/system/services/server/nextcloud/default.nix index 69f857e2..4425c795 100644 --- a/modules/system/services/server/nextcloud/default.nix +++ b/modules/system/services/server/nextcloud/default.nix @@ -8,10 +8,10 @@ config = lib.mkIf config.services.nextcloud.enable { services.nextcloud = { package = pkgs.nextcloud31; - hostName = "files.nixfox.ca"; + hostName = "files.${config.vars.mainDomain}"; https = true; config = { - adminuser = config.sysusers.main; + adminuser = "admin"; adminpassFile = "${pkgs.writeText "initial" config.secrets.initialPass}"; dbtype = "sqlite"; }; @@ -19,11 +19,11 @@ trusted_proxies = [ "127.0.0.1" ]; trusted_domains = [ config.services.nextcloud.hostName ]; overwriteprotocol = "https"; - mail_smtphost = "mx.nixfox.ca"; - mail_domain = "nixfox.ca"; + mail_smtphost = "mx.${config.vars.mainDomain}"; + mail_domain = "${config.vars.mainDomain}"; mail_from_address = "noreply"; mail_smtpauth = "true"; - mail_smtpname = "noreply@nixfox.ca"; + mail_smtpname = "noreply@${config.vars.mainDomain}"; mail_smtppassword = config.secrets.mailPass.nixfoxNoReply; mail_smtpmode = "smtp"; mail_smtpport = 587; diff --git a/modules/system/services/server/nextcloud/nginx/default.nix b/modules/system/services/server/nextcloud/nginx/default.nix index 5212d535..2ae51b50 100644 --- a/modules/system/services/server/nextcloud/nginx/default.nix +++ b/modules/system/services/server/nextcloud/nginx/default.nix @@ -1,6 +1,6 @@ { config, lib, ... }: { - services.nginx.virtualHosts."files.nixfox.ca" = lib.mkIf config.services.nextcloud.enable { + services.nginx.virtualHosts."files.${config.vars.mainDomain}" = lib.mkIf config.services.nextcloud.enable { enableACME = true; addSSL = true; locations."/" = { diff --git a/modules/system/services/server/nginx/acme/default.nix b/modules/system/services/server/nginx/acme/default.nix index a88a2b7b..234eae09 100644 --- a/modules/system/services/server/nginx/acme/default.nix +++ b/modules/system/services/server/nginx/acme/default.nix @@ -3,7 +3,7 @@ config = lib.mkIf config.services.nginx.enable { security.acme = { acceptTerms = true; - defaults.email = "contact@nixfox.ca"; + defaults.email = "contact@${config.vars.mainDomain}"; }; environment.persistence."/persist".directories = [ "/var/lib/acme" ]; }; diff --git a/modules/system/services/server/nginx/default.nix b/modules/system/services/server/nginx/default.nix index 2325e731..0981fe41 100644 --- a/modules/system/services/server/nginx/default.nix +++ b/modules/system/services/server/nginx/default.nix @@ -2,23 +2,21 @@ { imports = [ ./acme - ./hosts - ./rtmp ./user ]; - options.services.webserver.enable = lib.mkEnableOption "Nginx webpages"; - config = lib.mkIf config.services.nginx.enable { services.nginx = { - recommendedTlsSettings = true; - recommendedOptimisation = true; + recommendedBrotliSettings = true; recommendedGzipSettings = true; + recommendedOptimisation = true; recommendedProxySettings = true; + recommendedTlsSettings = true; }; networking.firewall.allowedTCPPorts = [ - 80 - 443 + config.services.nginx.defaultHTTPListenPort + config.services.nginx.defaultSSLListenPort ]; + environment.persistence."/persist".directories = [ "/var/www" ]; }; } diff --git a/modules/system/services/server/nginx/hosts/default.nix b/modules/system/services/server/nginx/hosts/default.nix deleted file mode 100644 index aef9846f..00000000 --- a/modules/system/services/server/nginx/hosts/default.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ config, lib, ... }: -{ - imports = [ - ./files - ./nixfox - ]; - - environment.persistence."/persist".directories = lib.mkIf config.services.webserver.enable [ "/var/www" ]; -} diff --git a/modules/system/services/server/nginx/hosts/files/default.nix b/modules/system/services/server/nginx/hosts/files/default.nix deleted file mode 100644 index 882ffebe..00000000 --- a/modules/system/services/server/nginx/hosts/files/default.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ config, lib, ... }: -{ - services.nginx.virtualHosts."jimbosfiles.com" = lib.mkIf config.services.webserver.enable { - enableACME = true; - addSSL = true; - globalRedirect = "www.nixfox.ca"; - }; -} diff --git a/modules/system/services/server/nginx/rtmp/default.nix b/modules/system/services/server/nginx/rtmp/default.nix deleted file mode 100644 index a8bdca83..00000000 --- a/modules/system/services/server/nginx/rtmp/default.nix +++ /dev/null @@ -1,34 +0,0 @@ -{ config, lib, pkgs, nodes, ... }: -{ - config = lib.mkIf config.services.webserver.enable { - services.nginx = { - additionalModules = with pkgs.nginxModules; [ rtmp ]; - appendConfig = '' - rtmp { - server { - listen 1935; - chunk_size 4096; - allow publish all; - application stream { - record off; - live on; - allow play all; - hls on; - hls_path /var/www/landing-page/streams/hls/; - hls_fragment_naming system; - hls_fragment 3; - hls_playlist_length 40; - } - } - } - ''; - }; - networking.firewall.extraInputRules = let - targetHosts = lib.attrValues (lib.mapAttrs (_: node: node.config.deployment.targetHost) nodes); - in '' - ip6 saddr { ${lib.concatStringsSep ", " targetHosts} } tcp dport 1935 accept - ip saddr { ${config.secrets.ips.luna}, ${config.secrets.ips.corn} } tcp dport 1935 accept - ''; - systemd.services.nginx.serviceConfig.ReadWritePaths = [ "/var/www/landing-page/streams/hls/" ]; - }; -} diff --git a/modules/system/services/server/owncast/nginx/default.nix b/modules/system/services/server/owncast/nginx/default.nix index abc052ff..87fbf579 100644 --- a/modules/system/services/server/owncast/nginx/default.nix +++ b/modules/system/services/server/owncast/nginx/default.nix @@ -1,6 +1,6 @@ { config, lib, ... }: { - services.nginx.virtualHosts."live.nixfox.ca" = lib.mkIf config.services.owncast.enable { + services.nginx.virtualHosts."live.${config.vars.mainDomain}" = lib.mkIf config.services.owncast.enable { enableACME = true; forceSSL = true; locations."/" = { diff --git a/modules/system/services/server/transmission/default.nix b/modules/system/services/server/transmission/default.nix index 50d2abb2..78f2411b 100644 --- a/modules/system/services/server/transmission/default.nix +++ b/modules/system/services/server/transmission/default.nix @@ -4,6 +4,7 @@ config = lib.mkIf config.services.transmission.enable { services.transmission = { + package = pkgs.transmission_4; credentialsFile = pkgs.writeText "credentials" config.secrets.transmissionCredFile; openPeerPorts = true; settings = { diff --git a/modules/system/services/server/transmission/nginx/default.nix b/modules/system/services/server/transmission/nginx/default.nix index c4c737ab..e7db20d5 100644 --- a/modules/system/services/server/transmission/nginx/default.nix +++ b/modules/system/services/server/transmission/nginx/default.nix @@ -1,6 +1,6 @@ { config, lib, ... }: { - services.nginx.virtualHosts."tor.nixfox.ca" = lib.mkIf config.services.transmission.enable { + services.nginx.virtualHosts."tor.${config.vars.mainDomain}" = lib.mkIf config.services.transmission.enable { enableACME = true; forceSSL = true; locations."/" = { diff --git a/modules/system/services/server/vaultwarden/default.nix b/modules/system/services/server/vaultwarden/default.nix index 928b3458..3ab93f9c 100644 --- a/modules/system/services/server/vaultwarden/default.nix +++ b/modules/system/services/server/vaultwarden/default.nix @@ -4,16 +4,16 @@ config = lib.mkIf config.services.vaultwarden.enable { services.vaultwarden.config = { - domain = "https://pass.nixfox.ca"; + domain = "https://pass.${config.vars.mainDomain}"; signupsAllowed = false; rocketAddress = "127.0.0.1"; rocketPort = 8222; # Smtp email - smtpHost = "mx.nixfox.ca"; - smtpFrom = "noreply@nixfox.ca"; + smtpHost = "mx.${config.vars.mainDomain}"; + smtpFrom = "noreply@${config.vars.mainDomain}"; smtpFromName = "Vaultwarden"; - smtpUsername = "noreply@nixfox.ca"; + smtpUsername = "noreply@${config.vars.mainDomain}"; smtpPassword = config.secrets.mailPass.nixfoxNoReply; smtpSecurity = "starttls"; smtpPort = 587; diff --git a/modules/system/services/server/vaultwarden/nginx/default.nix b/modules/system/services/server/vaultwarden/nginx/default.nix index 0877413e..cc85f420 100644 --- a/modules/system/services/server/vaultwarden/nginx/default.nix +++ b/modules/system/services/server/vaultwarden/nginx/default.nix @@ -1,6 +1,6 @@ { config, lib, ... }: { - services.nginx.virtualHosts."pass.nixfox.ca" = lib.mkIf config.services.vaultwarden.enable { + services.nginx.virtualHosts."pass.${config.vars.mainDomain}" = lib.mkIf config.services.vaultwarden.enable { enableACME = true; forceSSL = true; locations."/" = { diff --git a/modules/system/settings/logind/default.nix b/modules/system/settings/logind/default.nix index 4df55cd5..78b2fd1e 100644 --- a/modules/system/settings/logind/default.nix +++ b/modules/system/settings/logind/default.nix @@ -1,7 +1,7 @@ { config, lib, ... }: { services.logind = { - powerKey = lib.mkIf config.system.desktop.enable "suspend"; + powerKey = lib.mkIf (builtins.elem "pc" config.system.nixos.tags) "suspend"; powerKeyLongPress = "reboot"; }; } diff --git a/modules/system/settings/security/rtkit/default.nix b/modules/system/settings/security/rtkit/default.nix index 31a54f74..eea12fa0 100644 --- a/modules/system/settings/security/rtkit/default.nix +++ b/modules/system/settings/security/rtkit/default.nix @@ -1,4 +1,4 @@ { config, ... }: { - security.rtkit.enable = config.system.desktop.enable; + security.rtkit.enable = builtins.elem "pc" config.system.nixos.tags; } diff --git a/modules/system/users/corn/default.nix b/modules/system/users/corn/default.nix deleted file mode 100644 index 82483f41..00000000 --- a/modules/system/users/corn/default.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ config, lib, pkgs, ... }: -{ - users.users."freecorn" = lib.mkIf config.system.extraUsers.enable { - isNormalUser = true; - createHome = true; - openssh.authorizedKeys.keys = [ - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBCADciME1/rtWOlR2BxaAkRSgIZt61SYOgjTi6hw+yS Chinook" - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICtoHVAmq8Ps7EguBsV3VY4snagzkhH6aXqwbKzuGs2H Radiant" - ]; - extraGroups = [ - "audio" - "video" - ]; - uid = 1001; - shell = pkgs.zsh; - }; - - environment.persistence."/persist".directories = [ "/home/freecorn" ]; -} diff --git a/modules/system/users/default.nix b/modules/system/users/default.nix index 138e7f2e..f882f271 100644 --- a/modules/system/users/default.nix +++ b/modules/system/users/default.nix @@ -1,6 +1,8 @@ -{ lib, ... }: +{ ... }: { - imports = [ ./main ]; - - options.system.extraUsers.enable = lib.mkEnableOption "Enable a shared system"; + imports = [ + ./freecorn + ./luna + ./main + ]; } diff --git a/modules/system/users/freecorn/default.nix b/modules/system/users/freecorn/default.nix new file mode 100644 index 00000000..16e7253a --- /dev/null +++ b/modules/system/users/freecorn/default.nix @@ -0,0 +1,19 @@ +{ config, lib, pkgs, ... }: +let + user = "freecorn"; +in { + config = lib.mkIf (builtins.elem "extra-users" config.system.nixos.tags) { + users.users.${user} = { + isNormalUser = true; + createHome = true; + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBCADciME1/rtWOlR2BxaAkRSgIZt61SYOgjTi6hw+yS Chinook" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICtoHVAmq8Ps7EguBsV3VY4snagzkhH6aXqwbKzuGs2H Radiant" + ]; + shell = pkgs.zsh; + uid = 1001; + }; + + environment.persistence."/persist".directories = [ "/home/${user}" ]; + }; +} diff --git a/modules/system/users/luna/default.nix b/modules/system/users/luna/default.nix index 683b8015..234d98a6 100644 --- a/modules/system/users/luna/default.nix +++ b/modules/system/users/luna/default.nix @@ -1,17 +1,17 @@ { config, lib, ... }: -{ - users.users."luna" = lib.mkIf config.system.extraUsers.enable { - isNormalUser = true; - createHome = true; - openssh.authorizedKeys.keys = [ - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDJ3hzXkv5MVuGZy4HqfEZD0Ck7ZKiLeVmUTFzGSwZkumCpwX/zirD/tY4SNutPczhhYNn1jwkwnnyCwgkaQ7QWBs72G0opmjXDcSqxXJskSKYgjnUHoPV8uAcMwp5C5GNlwo3DFKXc1c7Sipy1s6y9ZnoKfVmjsr0AhamnC/bHEWg8vx0zuamCzvQ5vLWfpULRKwj286f0s2xaAvYaAJwGD0QMHC0ylFYZuq7Og4HVdlnUt+40BxCi+GAQqsFd4vM+RFjZKKD7ioP5DcIDfvfvxX4UpdKtCxVjeyyF+UJpFnQKytO9HvH4H+CRSAuJ+Vguiq/F3lGhvF0yIQ9M2MD3+tl3RZAj4D6n2ew30mn+QGh2fZgC7Utuzo02pMVUzkpm+mM4x8VyESpC1AuBdh0TAKBwS3ubMpegiCWCfIbNC0CQ/zgIq/5xwhXL8zhmfQrIiULBCd1xqThye0tt7knoPZlVCzOuVYoqxYnwYYGcXhzlArrmgRquyMYHdpFd+DTzJfcQIGdT4a+s0Mc2jRa0KT3A4ZrjziP0OPMQ+cpTd1tmQdEKXN6YhB87Hp9meCefFdzGvVembose82d3BOl45+rWM2ZcH93fNguWwYX0ez8+GiGW4P+gDQcfWfQCNa1daDjgoBwjmbG5rYoS6tfLxSSvYB1YOOK9U3AlPxEuTw== luna@ThinkPad-T480-Arch" - ]; - extraGroups = [ - "audio" - "video" - ]; - uid = 1002; - }; +let + user = "luna"; +in { + config = lib.mkIf (builtins.elem "extra-users" config.system.nixos.tags) { + users.users.${user} = { + isNormalUser = true; + createHome = true; + openssh.authorizedKeys.keys = [ + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDJ3hzXkv5MVuGZy4HqfEZD0Ck7ZKiLeVmUTFzGSwZkumCpwX/zirD/tY4SNutPczhhYNn1jwkwnnyCwgkaQ7QWBs72G0opmjXDcSqxXJskSKYgjnUHoPV8uAcMwp5C5GNlwo3DFKXc1c7Sipy1s6y9ZnoKfVmjsr0AhamnC/bHEWg8vx0zuamCzvQ5vLWfpULRKwj286f0s2xaAvYaAJwGD0QMHC0ylFYZuq7Og4HVdlnUt+40BxCi+GAQqsFd4vM+RFjZKKD7ioP5DcIDfvfvxX4UpdKtCxVjeyyF+UJpFnQKytO9HvH4H+CRSAuJ+Vguiq/F3lGhvF0yIQ9M2MD3+tl3RZAj4D6n2ew30mn+QGh2fZgC7Utuzo02pMVUzkpm+mM4x8VyESpC1AuBdh0TAKBwS3ubMpegiCWCfIbNC0CQ/zgIq/5xwhXL8zhmfQrIiULBCd1xqThye0tt7knoPZlVCzOuVYoqxYnwYYGcXhzlArrmgRquyMYHdpFd+DTzJfcQIGdT4a+s0Mc2jRa0KT3A4ZrjziP0OPMQ+cpTd1tmQdEKXN6YhB87Hp9meCefFdzGvVembose82d3BOl45+rWM2ZcH93fNguWwYX0ez8+GiGW4P+gDQcfWfQCNa1daDjgoBwjmbG5rYoS6tfLxSSvYB1YOOK9U3AlPxEuTw== ${user}@ThinkPad-T480-Arch" + ]; + uid = 1002; + }; - environment.persistence."/persist".directories = [ "/home/luna" ]; + environment.persistence."/persist".directories = [ "/home/${user}" ]; + }; } diff --git a/modules/system/users/main/default.nix b/modules/system/users/main/default.nix index 7c65165f..dcc831c6 100644 --- a/modules/system/users/main/default.nix +++ b/modules/system/users/main/default.nix @@ -1,56 +1,48 @@ { config, lib, pkgs, ... }: { - options.sysusers = lib.mkOption { - type = lib.types.attrs; + users.users."${config.vars.mainUser}" = { + isNormalUser = true; + createHome = true; + linger = true; + hashedPassword = config.secrets.accPass.main; + openssh.authorizedKeys.keyFiles = [ + ../../../../hosts/tower/id_ed25519.pub + ../../../../hosts/detritus/id_ed25519.pub + + ../../../../hosts/intuos/id_ed25519.pub + ../../../../hosts/jupiter/id_ed25519.pub + + ../../../../hosts/midas/id_ed25519.pub + ../../../../hosts/kitty/id_ed25519.pub + ../../../../hosts/prophet/id_ed25519.pub + ]; + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN3B9Uf3h5JiD2HjF/vQ5Zx9pibMgRrlf7ZoBktev9eB Warden" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJahAoF74BY6GCTsFkt1ADKaraFgJJozW1Y1aBTLK0j9 Pixel9" + ]; + extraGroups = [ + "wheel" + + "audio" + "input" + "render" + "video" + + "dialout" + "disk" + "rtkit" + + "kvm" + "libvirtd" + "qemu-libvirtd" + + "minecraft" + "nfsShare" + "nginx" + ]; + shell = pkgs.zsh; + uid = 1000; }; - config = { - sysusers.main = "bun"; - - users.users."${config.sysusers.main}" = { - isNormalUser = true; - createHome = true; - linger = true; - hashedPassword = config.secrets.accPass.main; - openssh.authorizedKeys.keyFiles = [ - ../../../../hosts/tower/id_ed25519.pub - ../../../../hosts/detritus/id_ed25519.pub - - ../../../../hosts/intuos/id_ed25519.pub - ../../../../hosts/jupiter/id_ed25519.pub - - ../../../../hosts/midas/id_ed25519.pub - ../../../../hosts/kitty/id_ed25519.pub - ../../../../hosts/prophet/id_ed25519.pub - ]; - openssh.authorizedKeys.keys = [ - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN3B9Uf3h5JiD2HjF/vQ5Zx9pibMgRrlf7ZoBktev9eB Warden" - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJahAoF74BY6GCTsFkt1ADKaraFgJJozW1Y1aBTLK0j9 Pixel9" - ]; - extraGroups = [ - "wheel" - - "audio" - "input" - "render" - "video" - - "dialout" - "disk" - "rtkit" - - "kvm" - "libvirtd" - "qemu-libvirtd" - - "minecraft" - "nfsShare" - "nginx" - ]; - uid = 1000; - shell = pkgs.zsh; - }; - - home-manager.users."${config.sysusers.main}" = import ../../../home; - }; + home-manager.users."${config.vars.mainUser}" = import ../../../home; } diff --git a/modules/system/variables/default.nix b/modules/system/variables/default.nix new file mode 100644 index 00000000..cc613993 --- /dev/null +++ b/modules/system/variables/default.nix @@ -0,0 +1,11 @@ +{ lib, ... }: +{ + options.vars = lib.mkOption { + type = lib.types.attrs; + }; + + config.vars = { + mainUser = "bun"; + mainDomain = "nixfox.ca"; + }; +} From 4848f2bbc99e2891e71845a20c0a44ed2249a92e Mon Sep 17 00:00:00 2001 From: Bun Date: Wed, 4 Jun 2025 17:17:54 -0400 Subject: [PATCH 83/98] Import system from flake using defaults, not each system --- flake.nix | 3 +++ hosts/detritus/default.nix | 1 - hosts/hidden/default.nix | 1 - hosts/intuos/default.nix | 1 - hosts/jupiter/default.nix | 1 - hosts/kitty/default.nix | 1 - hosts/midas/default.nix | 1 - hosts/prophet/default.nix | 1 - hosts/tower/colmena/default.nix | 10 ---------- hosts/tower/default.nix | 1 - 10 files changed, 3 insertions(+), 18 deletions(-) delete mode 100644 hosts/tower/colmena/default.nix diff --git a/flake.nix b/flake.nix index e1635813..e0e28421 100644 --- a/flake.nix +++ b/flake.nix @@ -67,6 +67,9 @@ nodeNixpkgs.jupiter = import unstable { system = "x86_64-linux"; }; }; + # Import the default config to all hosts + defaults.imports = [ ./modules/system ]; + # Desktops tower.imports = [ ./hosts/tower ]; #detritus.imports = [ ./hosts/detritus ]; diff --git a/hosts/detritus/default.nix b/hosts/detritus/default.nix index d5241c60..67070617 100644 --- a/hosts/detritus/default.nix +++ b/hosts/detritus/default.nix @@ -6,7 +6,6 @@ ./filesystems ./hardware ./user - ../../modules/system ]; system = { diff --git a/hosts/hidden/default.nix b/hosts/hidden/default.nix index cff6beaf..c0da8fb6 100644 --- a/hosts/hidden/default.nix +++ b/hosts/hidden/default.nix @@ -6,7 +6,6 @@ ./hardware ./services ./user - ../../modules/system ]; system = { diff --git a/hosts/intuos/default.nix b/hosts/intuos/default.nix index 98bf8713..f33170b8 100644 --- a/hosts/intuos/default.nix +++ b/hosts/intuos/default.nix @@ -6,7 +6,6 @@ ./filesystems ./hardware ./user - ../../modules/system ]; system = { diff --git a/hosts/jupiter/default.nix b/hosts/jupiter/default.nix index cf2feb40..b690847a 100644 --- a/hosts/jupiter/default.nix +++ b/hosts/jupiter/default.nix @@ -8,7 +8,6 @@ ./jovian ./services ./user - ../../modules/system ]; system = { diff --git a/hosts/kitty/default.nix b/hosts/kitty/default.nix index 29f7a690..a7183534 100644 --- a/hosts/kitty/default.nix +++ b/hosts/kitty/default.nix @@ -6,7 +6,6 @@ ./filesystems ./hardware ./user - ../../modules/system ]; system = { diff --git a/hosts/midas/default.nix b/hosts/midas/default.nix index 9eca5e59..b0dc29cf 100644 --- a/hosts/midas/default.nix +++ b/hosts/midas/default.nix @@ -8,7 +8,6 @@ ./network ./services ./user - ../../modules/system ]; system = { diff --git a/hosts/prophet/default.nix b/hosts/prophet/default.nix index f2a75861..ec4b498b 100644 --- a/hosts/prophet/default.nix +++ b/hosts/prophet/default.nix @@ -7,7 +7,6 @@ ./hardware ./services ./user - ../../modules/system (modulesPath + "/profiles/headless.nix") ]; diff --git a/hosts/tower/colmena/default.nix b/hosts/tower/colmena/default.nix deleted file mode 100644 index b04b69b6..00000000 --- a/hosts/tower/colmena/default.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ ... }: -{ - deployment = { - tags = [ - "desktop" - "pc" - ]; - targetHost = "4e4:535:9d47:f367:becd:6557:458d:5b1b"; - }; -} diff --git a/hosts/tower/default.nix b/hosts/tower/default.nix index a4deabb7..2c073669 100644 --- a/hosts/tower/default.nix +++ b/hosts/tower/default.nix @@ -6,7 +6,6 @@ ./filesystems ./hardware ./user - ../../modules/system ]; system = { From 761280992e2a68b1b3c5783d6e58d5542aa4eaa5 Mon Sep 17 00:00:00 2001 From: Bun Date: Wed, 4 Jun 2025 17:34:19 -0400 Subject: [PATCH 84/98] Don't duplicate the user's stateversion for each system --- hosts/detritus/user/default.nix | 3 +-- hosts/hidden/user/default.nix | 3 +-- hosts/intuos/user/default.nix | 3 +-- hosts/jupiter/user/default.nix | 3 +-- hosts/kitty/default.nix | 1 - hosts/kitty/user/default.nix | 6 ------ hosts/midas/default.nix | 1 - hosts/midas/user/default.nix | 6 ------ hosts/prophet/boot/default.nix | 1 + hosts/prophet/default.nix | 1 - hosts/prophet/user/@! | 6 ------ hosts/prophet/user/default.nix | 6 ------ hosts/tower/boot/default.nix | 3 --- hosts/tower/user/default.nix | 6 +----- modules/system/users/main/default.nix | 5 ++++- 15 files changed, 10 insertions(+), 44 deletions(-) delete mode 100644 hosts/kitty/user/default.nix delete mode 100644 hosts/midas/user/default.nix delete mode 100644 hosts/prophet/user/@! delete mode 100644 hosts/prophet/user/default.nix diff --git a/hosts/detritus/user/default.nix b/hosts/detritus/user/default.nix index 7f8f4e27..834704d5 100644 --- a/hosts/detritus/user/default.nix +++ b/hosts/detritus/user/default.nix @@ -1,10 +1,9 @@ -{ config, lib, pkgs, ... }: +{ config, pkgs, ... }: { home-manager.users."${config.vars.mainUser}" = { home = { desktop.enable = true; gaming.enable = true; - stateVersion = lib.mkForce config.system.stateVersion; }; wayland.windowManager.sway.package = pkgs.swayfx; diff --git a/hosts/hidden/user/default.nix b/hosts/hidden/user/default.nix index 129d9409..60e0e93a 100644 --- a/hosts/hidden/user/default.nix +++ b/hosts/hidden/user/default.nix @@ -1,8 +1,7 @@ -{ config, lib, ... }: +{ config, ... }: { home-manager.users."${config.vars.mainUser}".home = { desktop.enable = true; school.enable = true; - stateVersion = lib.mkForce config.system.stateVersion; }; } diff --git a/hosts/intuos/user/default.nix b/hosts/intuos/user/default.nix index ad39df5c..256a66ed 100644 --- a/hosts/intuos/user/default.nix +++ b/hosts/intuos/user/default.nix @@ -1,8 +1,7 @@ -{ config, lib, ... }: +{ config, ... }: { home-manager.users."${config.vars.mainUser}".home = { desktop.enable = true; production.enable = true; - stateVersion = lib.mkForce config.system.stateVersion; }; } diff --git a/hosts/jupiter/user/default.nix b/hosts/jupiter/user/default.nix index 0298f932..43b57345 100644 --- a/hosts/jupiter/user/default.nix +++ b/hosts/jupiter/user/default.nix @@ -1,9 +1,8 @@ -{ config, lib, ... }: +{ config, ... }: { home-manager.users."${config.vars.mainUser}".home = { guifull.enable = true; school.enable = true; enableNixpkgsReleaseCheck = false; - stateVersion = lib.mkForce config.system.stateVersion; }; } diff --git a/hosts/kitty/default.nix b/hosts/kitty/default.nix index a7183534..747ee8eb 100644 --- a/hosts/kitty/default.nix +++ b/hosts/kitty/default.nix @@ -5,7 +5,6 @@ ./disko ./filesystems ./hardware - ./user ]; system = { diff --git a/hosts/kitty/user/default.nix b/hosts/kitty/user/default.nix deleted file mode 100644 index f07f3b38..00000000 --- a/hosts/kitty/user/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ config, lib, ... }: -{ - home-manager.users."${config.vars.mainUser}".home = { - stateVersion = lib.mkForce config.system.stateVersion; - }; -} diff --git a/hosts/midas/default.nix b/hosts/midas/default.nix index b0dc29cf..7ae69555 100644 --- a/hosts/midas/default.nix +++ b/hosts/midas/default.nix @@ -7,7 +7,6 @@ ./hardware ./network ./services - ./user ]; system = { diff --git a/hosts/midas/user/default.nix b/hosts/midas/user/default.nix deleted file mode 100644 index f07f3b38..00000000 --- a/hosts/midas/user/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ config, lib, ... }: -{ - home-manager.users."${config.vars.mainUser}".home = { - stateVersion = lib.mkForce config.system.stateVersion; - }; -} diff --git a/hosts/prophet/boot/default.nix b/hosts/prophet/boot/default.nix index e21b5c06..7b5230b7 100644 --- a/hosts/prophet/boot/default.nix +++ b/hosts/prophet/boot/default.nix @@ -1,6 +1,7 @@ { pkgs, ... }: { boot = { + binfmt.emulatedSystems = [ "x86_64-linux" ]; kernelPackages = pkgs.linuxPackages_hardened; loader.systemd-boot.enable = true; }; diff --git a/hosts/prophet/default.nix b/hosts/prophet/default.nix index ec4b498b..5f2196a5 100644 --- a/hosts/prophet/default.nix +++ b/hosts/prophet/default.nix @@ -6,7 +6,6 @@ ./filesystems ./hardware ./services - ./user (modulesPath + "/profiles/headless.nix") ]; diff --git a/hosts/prophet/user/@! b/hosts/prophet/user/@! deleted file mode 100644 index f07f3b38..00000000 --- a/hosts/prophet/user/@! +++ /dev/null @@ -1,6 +0,0 @@ -{ config, lib, ... }: -{ - home-manager.users."${config.vars.mainUser}".home = { - stateVersion = lib.mkForce config.system.stateVersion; - }; -} diff --git a/hosts/prophet/user/default.nix b/hosts/prophet/user/default.nix deleted file mode 100644 index f07f3b38..00000000 --- a/hosts/prophet/user/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ config, lib, ... }: -{ - home-manager.users."${config.vars.mainUser}".home = { - stateVersion = lib.mkForce config.system.stateVersion; - }; -} diff --git a/hosts/tower/boot/default.nix b/hosts/tower/boot/default.nix index 25e12301..a71f03cf 100644 --- a/hosts/tower/boot/default.nix +++ b/hosts/tower/boot/default.nix @@ -18,9 +18,6 @@ in { # Secure boot lanzaboote.enable = true; - - # Emulate different architectures for remote builds - binfmt.emulatedSystems = [ "aarch64-linux" ]; }; # Use second GPU on boot diff --git a/hosts/tower/user/default.nix b/hosts/tower/user/default.nix index 3eaf7dc9..0f9048b5 100644 --- a/hosts/tower/user/default.nix +++ b/hosts/tower/user/default.nix @@ -1,11 +1,7 @@ { config, lib, ... }: { home-manager.users."${config.vars.mainUser}" = { - home = { - guifull.enable = true; - stateVersion = lib.mkForce config.system.stateVersion; - }; - + home.guifull.enable = true; services.swayidle.enable = lib.mkForce false; }; } diff --git a/modules/system/users/main/default.nix b/modules/system/users/main/default.nix index dcc831c6..6a28ec62 100644 --- a/modules/system/users/main/default.nix +++ b/modules/system/users/main/default.nix @@ -44,5 +44,8 @@ uid = 1000; }; - home-manager.users."${config.vars.mainUser}" = import ../../../home; + home-manager.users."${config.vars.mainUser}" = { + imports = [ ../../../home ]; + home.stateVersion = lib.mkForce config.system.stateVersion; + }; } From 0efd6ad66e8bef81a2d6fe8b9e353024a00e5788 Mon Sep 17 00:00:00 2001 From: Bun Date: Wed, 4 Jun 2025 23:36:50 -0400 Subject: [PATCH 85/98] Remove non-static ipv6 addresses from Mycelium and add back the public peers, why not --- flake.nix | 2 +- modules/system/devices/boot/plymouth/default.nix | 4 ++-- modules/system/devices/networking/mycelium/default.nix | 5 ----- 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/flake.nix b/flake.nix index e0e28421..0f835fb1 100644 --- a/flake.nix +++ b/flake.nix @@ -72,7 +72,7 @@ # Desktops tower.imports = [ ./hosts/tower ]; - #detritus.imports = [ ./hosts/detritus ]; + detritus.imports = [ ./hosts/detritus ]; # Laptops intuos.imports = [ ./hosts/intuos ]; diff --git a/modules/system/devices/boot/plymouth/default.nix b/modules/system/devices/boot/plymouth/default.nix index a1279fde..993a6e6f 100644 --- a/modules/system/devices/boot/plymouth/default.nix +++ b/modules/system/devices/boot/plymouth/default.nix @@ -5,11 +5,11 @@ loader.timeout = 0; initrd.verbose = false; kernelParams = [ - "quiet" - "splash" "loglevel=3" + "quiet" "rd.systemd.show_status=false" "rd.udev.log_level=3" + "splash" "udev.log_priority=3" ]; }; diff --git a/modules/system/devices/networking/mycelium/default.nix b/modules/system/devices/networking/mycelium/default.nix index 82ae571d..4120e529 100644 --- a/modules/system/devices/networking/mycelium/default.nix +++ b/modules/system/devices/networking/mycelium/default.nix @@ -3,12 +3,7 @@ services.mycelium = { enable = true; openFirewall = true; - addHostedPublicNodes = false; peers = [ - "quic://[2607:fea8:431d:cba5:d254:c02e:e19e:7bce]:9651" - "quic://[2607:fea8:431d:cba5:ebb7:3826:6f74:f29f]:9651" - "quic://[2607:fea8:431d:cba5:a239:58ce:a49b:9661]:9651" - "quic://99.247.177.43:9651" "quic://150.230.26.224:9651" ]; From ee260102d809511b56efc655d95e3c6e27a50822 Mon Sep 17 00:00:00 2001 From: Bun Date: Thu, 5 Jun 2025 11:07:16 -0400 Subject: [PATCH 86/98] Switch to nixos-rebuild-ng --- flake.nix | 2 +- modules/system/settings/nix/default.nix | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 0f835fb1..e0e28421 100644 --- a/flake.nix +++ b/flake.nix @@ -72,7 +72,7 @@ # Desktops tower.imports = [ ./hosts/tower ]; - detritus.imports = [ ./hosts/detritus ]; + #detritus.imports = [ ./hosts/detritus ]; # Laptops intuos.imports = [ ./hosts/intuos ]; diff --git a/modules/system/settings/nix/default.nix b/modules/system/settings/nix/default.nix index c1115185..e4c2e5c2 100644 --- a/modules/system/settings/nix/default.nix +++ b/modules/system/settings/nix/default.nix @@ -17,4 +17,7 @@ trusted-users = [ "@wheel" ]; }; }; + + # Use nixos-rebuild-ng + system.rebuild.enableNg = true; } From 9c2bf2a8980f0fe01641ca2d735e7f3c031ca06e Mon Sep 17 00:00:00 2001 From: Bun Date: Thu, 5 Jun 2025 11:10:09 -0400 Subject: [PATCH 87/98] Remove wheel from trustedusers, since root now handles remote builds --- modules/system/settings/nix/default.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/system/settings/nix/default.nix b/modules/system/settings/nix/default.nix index e4c2e5c2..4ad71315 100644 --- a/modules/system/settings/nix/default.nix +++ b/modules/system/settings/nix/default.nix @@ -14,7 +14,6 @@ "flakes" ]; auto-optimise-store = true; - trusted-users = [ "@wheel" ]; }; }; From 95140d5a0efeecbd3f160b74f179a30f6c235474 Mon Sep 17 00:00:00 2001 From: Bun Date: Fri, 6 Jun 2025 02:18:44 -0400 Subject: [PATCH 88/98] Add Incus to the server services, put Kitty on its own router for an extra public IP --- hosts/kitty/default.nix | 6 ++---- hosts/kitty/network/default.nix | 14 ++++++++++++++ hosts/kitty/services/default.nix | 9 +++++++++ hosts/midas/network/default.nix | 4 ++-- modules/system/services/server/default.nix | 1 + modules/system/services/server/incus/default.nix | 16 ++++++++++++++++ modules/system/users/main/default.nix | 1 + 7 files changed, 45 insertions(+), 6 deletions(-) create mode 100644 hosts/kitty/network/default.nix create mode 100644 hosts/kitty/services/default.nix create mode 100644 modules/system/services/server/incus/default.nix diff --git a/hosts/kitty/default.nix b/hosts/kitty/default.nix index 747ee8eb..a2fb8126 100644 --- a/hosts/kitty/default.nix +++ b/hosts/kitty/default.nix @@ -5,6 +5,8 @@ ./disko ./filesystems ./hardware + ./network + ./services ]; system = { @@ -16,8 +18,4 @@ }; deployment.targetHost = "53f:dc2d:80c9:3ca2:4b15:ef4d:38a0:c868"; - - networking.hostId = "8745e22e"; - - services.nfs.server.enable = true; } diff --git a/hosts/kitty/network/default.nix b/hosts/kitty/network/default.nix new file mode 100644 index 00000000..4518518c --- /dev/null +++ b/hosts/kitty/network/default.nix @@ -0,0 +1,14 @@ +{ ... }: +{ + networking = { + interfaces."eno1".ipv4.addresses = [{ + address = "11.2.0.1"; + prefixLength = 8; + }]; + defaultGateway = { + address = "11.1.0.1"; + interface = "eno1"; + }; + hostId = "8745e22e"; + }; +} diff --git a/hosts/kitty/services/default.nix b/hosts/kitty/services/default.nix new file mode 100644 index 00000000..a330605b --- /dev/null +++ b/hosts/kitty/services/default.nix @@ -0,0 +1,9 @@ +{ ... }: +{ + services = { + nfs.server.enable = true; + nginx.enable = true; + }; + + virtualisation.incus.enable = true; +} diff --git a/hosts/midas/network/default.nix b/hosts/midas/network/default.nix index 1066ff65..909a3623 100644 --- a/hosts/midas/network/default.nix +++ b/hosts/midas/network/default.nix @@ -2,11 +2,11 @@ { networking = { interfaces."enp0s31f6".ipv4.addresses = [{ - address = "10.2.0.1"; + address = "11.2.0.1"; prefixLength = 8; }]; defaultGateway = { - address = "10.1.0.1"; + address = "11.1.0.1"; interface = "enp0s31f6"; }; hostId = "38ba3f57"; diff --git a/modules/system/services/server/default.nix b/modules/system/services/server/default.nix index 9d19264e..62396890 100644 --- a/modules/system/services/server/default.nix +++ b/modules/system/services/server/default.nix @@ -4,6 +4,7 @@ ./cfdyndns ./forgejo ./icecast + ./incus ./jellyfin ./mailserver ./mastodon diff --git a/modules/system/services/server/incus/default.nix b/modules/system/services/server/incus/default.nix new file mode 100644 index 00000000..db07d144 --- /dev/null +++ b/modules/system/services/server/incus/default.nix @@ -0,0 +1,16 @@ +{ config, lib, pkgs, ... }: +{ + config = lib.mkIf config.virtualisation.incus.enable { + networking.firewall.interfaces.incusbr0 = let + ports = [ + 53 + 67 + ]; + in { + allowedTCPPorts = ports; + allowedUDPPorts = ports; + }; + + environment.persistence."/persist".directories = [ "/var/lib/incus" ]; + }; +} diff --git a/modules/system/users/main/default.nix b/modules/system/users/main/default.nix index 6a28ec62..f0dcf478 100644 --- a/modules/system/users/main/default.nix +++ b/modules/system/users/main/default.nix @@ -36,6 +36,7 @@ "libvirtd" "qemu-libvirtd" + "incus-admin" "minecraft" "nfsShare" "nginx" From 26fd8569fe31468bfc65fc11682fd9bda6e95efc Mon Sep 17 00:00:00 2001 From: Bun Date: Fri, 6 Jun 2025 02:33:36 -0400 Subject: [PATCH 89/98] Add new IP to Mycelium --- modules/system/devices/networking/mycelium/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/system/devices/networking/mycelium/default.nix b/modules/system/devices/networking/mycelium/default.nix index 4120e529..72f637f8 100644 --- a/modules/system/devices/networking/mycelium/default.nix +++ b/modules/system/devices/networking/mycelium/default.nix @@ -5,6 +5,7 @@ openFirewall = true; peers = [ "quic://99.247.177.43:9651" + "quic://174.119.246.206:9651" "quic://150.230.26.224:9651" ]; }; From 51044e15eb655db1dd763e85c4ff86ba5878b54f Mon Sep 17 00:00:00 2001 From: Bun Date: Fri, 6 Jun 2025 14:54:14 -0400 Subject: [PATCH 90/98] Add two new servers --- flake.nix | 7 +- hosts/detritus/boot/default.nix | 5 +- hosts/detritus/default.nix | 9 +- hosts/detritus/disko/default.nix | 16 +-- hosts/detritus/filesystems/default.nix | 5 +- hosts/detritus/id_ed25519.pub | 1 - hosts/detritus/user/default.nix | 11 -- hosts/elder/boot/default.nix | 11 ++ hosts/elder/default.nix | 20 ++++ hosts/elder/disko/default.nix | 100 ++++++++++++++++++ hosts/elder/filesystems/default.nix | 16 +++ hosts/elder/hardware/default.nix | 23 ++++ hosts/intuos/default.nix | 1 - hosts/intuos/filesystems/default.nix | 9 -- hosts/jupiter/filesystems/default.nix | 5 - hosts/kitty/filesystems/default.nix | 4 +- hosts/kitty/id_ed25519.pub | 1 - hosts/midas/filesystems/default.nix | 4 +- hosts/midas/id_ed25519.pub | 1 - hosts/prophet/filesystems/default.nix | 4 +- hosts/prophet/id_ed25519.pub | 1 - hosts/tower/filesystems/default.nix | 5 - .../home/programs/terminal/ssh/default.nix | 6 +- .../devices/networking/mounts/default.nix | 15 ++- modules/system/users/main/default.nix | 6 -- 25 files changed, 208 insertions(+), 78 deletions(-) delete mode 100644 hosts/detritus/id_ed25519.pub delete mode 100644 hosts/detritus/user/default.nix create mode 100644 hosts/elder/boot/default.nix create mode 100644 hosts/elder/default.nix create mode 100644 hosts/elder/disko/default.nix create mode 100644 hosts/elder/filesystems/default.nix create mode 100644 hosts/elder/hardware/default.nix delete mode 100644 hosts/intuos/filesystems/default.nix delete mode 100644 hosts/kitty/id_ed25519.pub delete mode 100644 hosts/midas/id_ed25519.pub delete mode 100644 hosts/prophet/id_ed25519.pub diff --git a/flake.nix b/flake.nix index e0e28421..f173daa3 100644 --- a/flake.nix +++ b/flake.nix @@ -72,7 +72,7 @@ # Desktops tower.imports = [ ./hosts/tower ]; - #detritus.imports = [ ./hosts/detritus ]; + hidden.imports = [ ./hosts/hidden ]; # Laptops intuos.imports = [ ./hosts/intuos ]; @@ -81,10 +81,9 @@ # Servers midas.imports = [ ./hosts/midas ]; kitty.imports = [ ./hosts/kitty ]; + elder.imports = [ ./hosts/elder ]; + detritus.imports = [ ./hosts/detritus ]; prophet.imports = [ ./hosts/prophet ]; - - # Misc - hidden.imports = [ ./hosts/hidden ]; }; } diff --git a/hosts/detritus/boot/default.nix b/hosts/detritus/boot/default.nix index 1edfa6e4..de4af487 100644 --- a/hosts/detritus/boot/default.nix +++ b/hosts/detritus/boot/default.nix @@ -1,10 +1,11 @@ -{ ... }: +{ pkgs, ... }: { boot = { + kernelPackages = pkgs.linuxPackages_hardened; kernelParams = [ "amdgpu.si_support=1" "radeon.si_support=0" ]; - lanzaboote.enable = true; + loader.systemd-boot.enable = true; }; } diff --git a/hosts/detritus/default.nix b/hosts/detritus/default.nix index 67070617..8f265437 100644 --- a/hosts/detritus/default.nix +++ b/hosts/detritus/default.nix @@ -5,13 +5,16 @@ ./disko ./filesystems ./hardware - ./user ]; system = { - nixos.tags = [ "pc" ]; + nixos.tags = [ "server" ]; stateVersion = "25.05"; }; - deployment.targetHost = ""; + deployment.targetHost = "5dd:9cd7:f286:e2c7:4c3b:c2e1:7832:97a3"; + + networking.hostId = "0917a5c1"; + + services.nfs.server.enable = true; } diff --git a/hosts/detritus/disko/default.nix b/hosts/detritus/disko/default.nix index 4d195170..69872c6c 100644 --- a/hosts/detritus/disko/default.nix +++ b/hosts/detritus/disko/default.nix @@ -24,17 +24,11 @@ mountOptions = [ "umask=0077" ]; }; }; - luks = { + main = { size = "100%"; content = { - type = "luks"; - name = "${config.networking.hostName}-disk"; - settings.allowDiscards = true; - passwordFile = "/tmp/secret.key"; - content = { - type = "lvm_pv"; - vg = "${config.networking.hostName}"; - }; + type = "lvm_pv"; + vg = "${config.networking.hostName}"; }; }; }; @@ -78,7 +72,7 @@ # Impermanence "/persist" = { mountpoint = "/persist"; - mountOptions = [ + mountOptions = [ "compress=zstd" "ssd" ]; @@ -90,7 +84,7 @@ }; }; swap = { - size = "8G"; + size = "2G"; content = { type = "swap"; discardPolicy = "both"; diff --git a/hosts/detritus/filesystems/default.nix b/hosts/detritus/filesystems/default.nix index 8d38c55d..57f1c404 100644 --- a/hosts/detritus/filesystems/default.nix +++ b/hosts/detritus/filesystems/default.nix @@ -11,9 +11,6 @@ ]; }; - # Network mounts - "kitty".enable = true; - "midas".enable = true; - "prophet".enable = true; + "detritus".enable = false; }; } diff --git a/hosts/detritus/id_ed25519.pub b/hosts/detritus/id_ed25519.pub deleted file mode 100644 index c35b9e57..00000000 --- a/hosts/detritus/id_ed25519.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBQE+a1E88+ELJ5cDOMPlc9lnV1ysVndchgJ4MxCjeWd diff --git a/hosts/detritus/user/default.nix b/hosts/detritus/user/default.nix deleted file mode 100644 index 834704d5..00000000 --- a/hosts/detritus/user/default.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ config, pkgs, ... }: -{ - home-manager.users."${config.vars.mainUser}" = { - home = { - desktop.enable = true; - gaming.enable = true; - }; - - wayland.windowManager.sway.package = pkgs.swayfx; - }; -} diff --git a/hosts/elder/boot/default.nix b/hosts/elder/boot/default.nix new file mode 100644 index 00000000..20a7f4e7 --- /dev/null +++ b/hosts/elder/boot/default.nix @@ -0,0 +1,11 @@ +{ pkgs, ... }: +{ + boot = { + kernelPackages = pkgs.linuxPackages_hardened; + kernelParams = [ + "amdgpu.si_support=1" + "radeon.si_support=0" + ]; + loader.grub.enable = true; + }; +} diff --git a/hosts/elder/default.nix b/hosts/elder/default.nix new file mode 100644 index 00000000..648248ee --- /dev/null +++ b/hosts/elder/default.nix @@ -0,0 +1,20 @@ +{ ... }: +{ + imports = [ + ./boot + ./disko + ./filesystems + ./hardware + ]; + + system = { + nixos.tags = [ "server" ]; + stateVersion = "25.05"; + }; + + deployment.targetHost = "570:3651:7f2:c26b:bccd:725b:be00:8a18"; + + networking.hostId = "447645a9"; + + services.nfs.server.enable = true; +} diff --git a/hosts/elder/disko/default.nix b/hosts/elder/disko/default.nix new file mode 100644 index 00000000..2191e808 --- /dev/null +++ b/hosts/elder/disko/default.nix @@ -0,0 +1,100 @@ +{ config, disko, ... }: +{ + imports = [ disko.nixosModules.disko ]; + + disko.devices = { + disk = { + "${config.networking.hostName}" = { + type = "disk"; + device = "/dev/sda"; + content = { + type = "gpt"; + partitions = { + boot = { + size = "1M"; + type = "EF02"; + }; + ESP = { + size = "2G"; + type = "EF00"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + mountOptions = [ "umask=0077" ]; + }; + }; + main = { + size = "100%"; + content = { + type = "lvm_pv"; + vg = "${config.networking.hostName}"; + }; + }; + }; + }; + }; + }; + + lvm_vg = { + "${config.networking.hostName}" = { + type = "lvm_vg"; + lvs = { + root = { + size = "100%"; + content = { + type = "btrfs"; + extraArgs = [ "-f" ]; + subvolumes = { + "/root" = { + mountpoint = "/"; + mountOptions = [ + "compress=zstd" + "ssd" + ]; + }; + "/prev" = { + mountpoint = "/prev"; + mountOptions = [ + "compress=zstd" + "noexec" + "ssd" + ]; + }; + "/nix" = { + mountpoint = "/nix"; + mountOptions = [ + "compress=zstd" + "ssd" + ]; + }; + + # Impermanence + "/persist" = { + mountpoint = "/persist"; + mountOptions = [ + "compress=zstd" + "ssd" + ]; + }; + "/persist/.snapshots" = { }; + "/persist/home" = { }; + "/persist/home/.snapshots" = { }; + }; + }; + }; + swap = { + size = "8G"; + content = { + type = "swap"; + discardPolicy = "both"; + }; + }; + }; + }; + }; + }; + + # Needed for impermanence + fileSystems."/persist".neededForBoot = true; +} diff --git a/hosts/elder/filesystems/default.nix b/hosts/elder/filesystems/default.nix new file mode 100644 index 00000000..0c254c44 --- /dev/null +++ b/hosts/elder/filesystems/default.nix @@ -0,0 +1,16 @@ +{ ... }: +{ + fileSystems = { + "/persist/storage" = { + device = "/dev/disk/by-uuid/5c3c533b-1c70-4411-854a-37fa794fc17c"; + fsType = "btrfs"; + options = [ + "nofail" + "nosuid" + "subvol=storage" + ]; + }; + + "elder".enable = false; + }; +} diff --git a/hosts/elder/hardware/default.nix b/hosts/elder/hardware/default.nix new file mode 100644 index 00000000..6dcb3faa --- /dev/null +++ b/hosts/elder/hardware/default.nix @@ -0,0 +1,23 @@ +{ modulesPath, ... }: +{ + imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; + + boot = { + initrd = { + availableKernelModules = [ + "ahci" + "ehci_pci" + "sd_mod" + "sr_mod" + "uhci_hcd" + "usbhid" + ]; + kernelModules = [ "dm-snapshot" ]; + }; + kernelModules = [ "kvm-intel" ]; + }; + + hardware.cpu.intel.updateMicrocode = true; + + nixpkgs.hostPlatform = "x86_64-linux"; +} diff --git a/hosts/intuos/default.nix b/hosts/intuos/default.nix index f33170b8..4e3a9f3b 100644 --- a/hosts/intuos/default.nix +++ b/hosts/intuos/default.nix @@ -3,7 +3,6 @@ imports = [ ./boot ./disko - ./filesystems ./hardware ./user ]; diff --git a/hosts/intuos/filesystems/default.nix b/hosts/intuos/filesystems/default.nix deleted file mode 100644 index ee9adee1..00000000 --- a/hosts/intuos/filesystems/default.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ ... }: -{ - fileSystems = { - # Network mounts - "kitty".enable = true; - "midas".enable = true; - "prophet".enable = true; - }; -} diff --git a/hosts/jupiter/filesystems/default.nix b/hosts/jupiter/filesystems/default.nix index 33a063c6..7f734c26 100644 --- a/hosts/jupiter/filesystems/default.nix +++ b/hosts/jupiter/filesystems/default.nix @@ -9,10 +9,5 @@ "nosuid" ]; }; - - # Network mounts - "kitty".enable = !config.system.steamdeck.enable; - "midas".enable = !config.system.steamdeck.enable; - "prophet".enable = !config.system.steamdeck.enable; }; } diff --git a/hosts/kitty/filesystems/default.nix b/hosts/kitty/filesystems/default.nix index c23bf7ca..2ed8bf2c 100644 --- a/hosts/kitty/filesystems/default.nix +++ b/hosts/kitty/filesystems/default.nix @@ -10,8 +10,6 @@ ]; }; - # Network mounts - "midas".enable = true; - "prophet".enable = true; + "kitty".enable = false; }; } diff --git a/hosts/kitty/id_ed25519.pub b/hosts/kitty/id_ed25519.pub deleted file mode 100644 index 0b6823a8..00000000 --- a/hosts/kitty/id_ed25519.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDOBa+Wz1FqFEnMeXflP0CPt2wnN819T+FdSCIwFLJjN diff --git a/hosts/midas/filesystems/default.nix b/hosts/midas/filesystems/default.nix index bd59eb6e..96197c20 100644 --- a/hosts/midas/filesystems/default.nix +++ b/hosts/midas/filesystems/default.nix @@ -11,8 +11,6 @@ ]; }; - # Network mounts - "kitty".enable = true; - "prophet".enable = true; + "midas".enable = false; }; } diff --git a/hosts/midas/id_ed25519.pub b/hosts/midas/id_ed25519.pub deleted file mode 100644 index 082fe2e0..00000000 --- a/hosts/midas/id_ed25519.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIFGHaxdTeC1xnTx2BY5LLR5LxhdSkmYoWuOeEuRIz0k diff --git a/hosts/prophet/filesystems/default.nix b/hosts/prophet/filesystems/default.nix index 57be3eb0..c6d09166 100644 --- a/hosts/prophet/filesystems/default.nix +++ b/hosts/prophet/filesystems/default.nix @@ -10,8 +10,6 @@ ]; }; - # Network mounts - "kitty".enable = true; - "midas".enable = true; + "prophet".enable = false; }; } diff --git a/hosts/prophet/id_ed25519.pub b/hosts/prophet/id_ed25519.pub deleted file mode 100644 index 0d58d2b8..00000000 --- a/hosts/prophet/id_ed25519.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDXU+mo+lkFaGBV7wuzrGnlII15YS3/MkkG3KmGJRT0j diff --git a/hosts/tower/filesystems/default.nix b/hosts/tower/filesystems/default.nix index ad9f218f..37db4d04 100644 --- a/hosts/tower/filesystems/default.nix +++ b/hosts/tower/filesystems/default.nix @@ -37,10 +37,5 @@ "subvol=libvirt" ]; }; - - # Network mounts - "kitty".enable = true; - "midas".enable = true; - "prophet".enable = true; }; } diff --git a/modules/home/programs/terminal/ssh/default.nix b/modules/home/programs/terminal/ssh/default.nix index 269710b1..8bb73968 100644 --- a/modules/home/programs/terminal/ssh/default.nix +++ b/modules/home/programs/terminal/ssh/default.nix @@ -5,12 +5,16 @@ addKeysToAgent = "yes"; compression = true; matchBlocks = { - # Personal servers + # Personal devices tower.hostname = "4e4:535:9d47:f367:becd:6557:458d:5b1b"; intuos.hostname = "40e:404:a427:da33:163e:97b3:a2a3:9ed4"; jupiter.hostname = "5ce:969c:40d1:9575:f5e:591d:c377:a20b"; + + # Personal servers midas.hostname = "538:e163:87ba:f847:3646:18b6:6b01:d8f8"; kitty.hostname = "53f:dc2d:80c9:3ca2:4b15:ef4d:38a0:c868"; + detritus.hostname = "5dd:9cd7:f286:e2c7:4c3b:c2e1:7832:97a3"; + elder.hostname = "570:3651:7f2:c26b:bccd:725b:be00:8a18"; prophet.hostname = "42f:2737:2aed:4dee:cbe4:3c73:1918:ad9b"; # Other servers diff --git a/modules/system/devices/networking/mounts/default.nix b/modules/system/devices/networking/mounts/default.nix index 3bb69619..b1354e42 100644 --- a/modules/system/devices/networking/mounts/default.nix +++ b/modules/system/devices/networking/mounts/default.nix @@ -8,21 +8,30 @@ ]; in with nodes; { "midas" = { - enable = lib.mkDefault false; device = "[${midas.config.deployment.targetHost}]:/storage"; mountPoint = "/network/Midas"; fsType = "nfs4"; options = netOpts; }; "kitty" = { - enable = lib.mkDefault false; device = "[${kitty.config.deployment.targetHost}]:/storage"; mountPoint = "/network/Kitty"; fsType = "nfs4"; options = netOpts; }; + "detritus" = { + device = "[${detritus.config.deployment.targetHost}]:/storage"; + mountPoint = "/network/Detritus"; + fsType = "nfs4"; + options = netOpts; + }; + "elder" = { + device = "[${elder.config.deployment.targetHost}]:/storage"; + mountPoint = "/network/Elder"; + fsType = "nfs4"; + options = netOpts; + }; "prophet" = { - enable = lib.mkDefault false; device = "[${prophet.config.deployment.targetHost}]:/storage"; mountPoint = "/network/Prophet"; fsType = "nfs4"; diff --git a/modules/system/users/main/default.nix b/modules/system/users/main/default.nix index f0dcf478..9ae2a7b7 100644 --- a/modules/system/users/main/default.nix +++ b/modules/system/users/main/default.nix @@ -7,14 +7,8 @@ hashedPassword = config.secrets.accPass.main; openssh.authorizedKeys.keyFiles = [ ../../../../hosts/tower/id_ed25519.pub - ../../../../hosts/detritus/id_ed25519.pub - ../../../../hosts/intuos/id_ed25519.pub ../../../../hosts/jupiter/id_ed25519.pub - - ../../../../hosts/midas/id_ed25519.pub - ../../../../hosts/kitty/id_ed25519.pub - ../../../../hosts/prophet/id_ed25519.pub ]; openssh.authorizedKeys.keys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN3B9Uf3h5JiD2HjF/vQ5Zx9pibMgRrlf7ZoBktev9eB Warden" From 1f3178804c9407715eb242fc7266e56c34bb7397 Mon Sep 17 00:00:00 2001 From: Bun Date: Fri, 6 Jun 2025 15:24:58 -0400 Subject: [PATCH 91/98] Tinker with groups, fix 'no effect' prompt --- modules/home/programs/terminal/zellij/default.nix | 1 + modules/system/users/main/default.nix | 11 ++++++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/modules/home/programs/terminal/zellij/default.nix b/modules/home/programs/terminal/zellij/default.nix index e37bff8e..0708749a 100644 --- a/modules/home/programs/terminal/zellij/default.nix +++ b/modules/home/programs/terminal/zellij/default.nix @@ -3,6 +3,7 @@ programs.zellij = { enable = true; attachExistingSession = true; + enableZshIntegration = true; }; home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = diff --git a/modules/system/users/main/default.nix b/modules/system/users/main/default.nix index 9ae2a7b7..dee9152e 100644 --- a/modules/system/users/main/default.nix +++ b/modules/system/users/main/default.nix @@ -15,22 +15,23 @@ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJahAoF74BY6GCTsFkt1ADKaraFgJJozW1Y1aBTLK0j9 Pixel9" ]; extraGroups = [ + # Privilige "wheel" + # Devices "audio" "input" "render" + "rtkit" "video" - "dialout" - "disk" - "rtkit" - + # Virtualization + "incus-admin" "kvm" "libvirtd" "qemu-libvirtd" - "incus-admin" + # Services "minecraft" "nfsShare" "nginx" From 1a4e5103b2c9776712c9c1b713a343de55fc4295 Mon Sep 17 00:00:00 2001 From: Bun Date: Fri, 6 Jun 2025 15:55:08 -0400 Subject: [PATCH 92/98] Remove Zellij from zsh --- modules/home/programs/terminal/zellij/default.nix | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/modules/home/programs/terminal/zellij/default.nix b/modules/home/programs/terminal/zellij/default.nix index 0708749a..2b0546b6 100644 --- a/modules/home/programs/terminal/zellij/default.nix +++ b/modules/home/programs/terminal/zellij/default.nix @@ -1,10 +1,6 @@ { config, lib, ... }: { - programs.zellij = { - enable = true; - attachExistingSession = true; - enableZshIntegration = true; - }; + programs.zellij.enable = true; home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = with lib; with config.home; with config.xdg; [ From 7aa39a1110b01a3578a90aeb79de95d36a0ba898 Mon Sep 17 00:00:00 2001 From: Bun Date: Mon, 9 Jun 2025 15:34:04 -0400 Subject: [PATCH 93/98] Begin testing remote builds --- hosts/jupiter/default.nix | 3 +- hosts/jupiter/jovian/default.nix | 65 ++++--------------- hosts/jupiter/jovian/gnome/default.nix | 48 ++++++++++++++ hosts/jupiter/services/default.nix | 2 +- .../system/devices/video/nvidia/default.nix | 23 +++---- modules/system/settings/nix/default.nix | 3 +- .../settings/nix/distributed/default.nix | 33 ++++++++++ 7 files changed, 109 insertions(+), 68 deletions(-) create mode 100644 hosts/jupiter/jovian/gnome/default.nix create mode 100644 modules/system/settings/nix/distributed/default.nix diff --git a/hosts/jupiter/default.nix b/hosts/jupiter/default.nix index b690847a..7271d00e 100644 --- a/hosts/jupiter/default.nix +++ b/hosts/jupiter/default.nix @@ -12,9 +12,10 @@ system = { nixos.tags = [ "pc" ]; - steamdeck.enable = true; stateVersion = "24.11"; }; deployment.targetHost = "5ce:969c:40d1:9575:f5e:591d:c377:a20b"; + + jovian.steam.enable = true; } diff --git a/hosts/jupiter/jovian/default.nix b/hosts/jupiter/jovian/default.nix index 0384fe5f..ec180913 100644 --- a/hosts/jupiter/jovian/default.nix +++ b/hosts/jupiter/jovian/default.nix @@ -1,16 +1,15 @@ { config, lib, pkgs, jovian, ... }: { - imports = [ jovian.nixosModules.default ]; + imports = [ + ./gnome + jovian.nixosModules.default + ]; - options.system.steamdeck.enable = lib.mkEnableOption "Jovian NixOS environment"; - - config = lib.mkIf config.system.steamdeck.enable { + config = lib.mkIf config.jovian.steam.enable { jovian = { steam = { - enable = true; autoStart = true; - desktopSession = "gnome"; - user = config.sysusers.main; + user = config.vars.mainUser; }; decky-loader = { enable = true; @@ -30,7 +29,6 @@ programs.steam.extest.enable = true; services = { - desktopManager.gnome.enable = true; keyd.enable = lib.mkForce false; tlp.enable = lib.mkForce false; }; @@ -42,51 +40,10 @@ wireless.enable = lib.mkForce false; }; - environment = { - persistence."/persist".directories = [ - "/etc/NetworkManager/system-connections" - "/var/lib/decky-loader" - ]; - gnome.excludePackages = with pkgs; [ - adwaita-icon-theme - baobab - epiphany - evince - file-roller - geary - gnome-calculator - gnome-calendar - gnome-characters - gnome-clocks - gnome-color-manager - gnome-connections - gnome-console - gnome-contacts - gnome-disk-utility - gnome-font-viewer - gnome-logs - gnome-maps - gnome-music - gnome-remote-desktop - gnome-shell-extensions - gnome-software - gnome-system-monitor - gnome-text-editor - gnome-tour - gnome-user-docs - gnome-weather - loupe - nautilus - orca - seahorse - simple-scan - snapshot - sushi - sysprof - totem - yelp - ]; - }; + environment.persistence."/persist".directories = [ + "/etc/NetworkManager/system-connections" + "/var/lib/decky-loader" + ]; nixpkgs.allowUnfreePackages = [ "steam" @@ -96,6 +53,6 @@ "xow_dongle-firmware" ]; - specialisation.desktop.configuration.config.system.steamdeck.enable = lib.mkForce false; + specialisation.desktop.configuration.config.jovian.steam.enable = lib.mkForce false; }; } diff --git a/hosts/jupiter/jovian/gnome/default.nix b/hosts/jupiter/jovian/gnome/default.nix new file mode 100644 index 00000000..8c9655dd --- /dev/null +++ b/hosts/jupiter/jovian/gnome/default.nix @@ -0,0 +1,48 @@ +{ config, lib, pkgs, ... }: +{ + config = lib.mkIf config.jovian.steam.enable { + jovian.steam.desktopSession = "gnome"; + + services.desktopManager.gnome.enable = true; + + environment.gnome.excludePackages = with pkgs; [ + adwaita-icon-theme + baobab + epiphany + evince + file-roller + geary + gnome-calculator + gnome-calendar + gnome-characters + gnome-clocks + gnome-color-manager + gnome-connections + gnome-console + gnome-contacts + gnome-disk-utility + gnome-font-viewer + gnome-logs + gnome-maps + gnome-music + gnome-remote-desktop + gnome-shell-extensions + gnome-software + gnome-system-monitor + gnome-text-editor + gnome-tour + gnome-user-docs + gnome-weather + loupe + nautilus + orca + seahorse + simple-scan + snapshot + sushi + sysprof + totem + yelp + ]; + }; +} diff --git a/hosts/jupiter/services/default.nix b/hosts/jupiter/services/default.nix index 80db5f9e..3ead25ff 100644 --- a/hosts/jupiter/services/default.nix +++ b/hosts/jupiter/services/default.nix @@ -1,6 +1,6 @@ { config, lib, ... }: { - config = lib.mkIf (!config.system.steamdeck.enable) { + config = lib.mkIf (!config.jovian.steam.enable) { networking.useNetworkd = lib.mkForce false; services.globalprotect.enable = true; diff --git a/modules/system/devices/video/nvidia/default.nix b/modules/system/devices/video/nvidia/default.nix index 40156146..261ba237 100644 --- a/modules/system/devices/video/nvidia/default.nix +++ b/modules/system/devices/video/nvidia/default.nix @@ -1,18 +1,19 @@ { config, lib, ... }: { - config = lib.mkIf (lib.elem "nvidia" config.services.xserver.videoDrivers) { - boot.kernelParams = [ "nvidia_drm.fbdev=1" ]; # Framebuffer fixes TTY access + boot.kernelParams = [ + "nouveau.config=NvGspRm=1" # Use high power mode for Nouveau + "nvidia_drm.fbdev=1" # Fix framebuffer + ]; - hardware.nvidia = { - modesetting.enable = true; - nvidiaSettings = false; - open = true; - }; + hardware.nvidia = { + modesetting.enable = true; + nvidiaSettings = false; + open = true; + }; - nixpkgs.allowUnfreePackages = [ "nvidia-x11" ]; + nixpkgs.allowUnfreePackages = [ "nvidia-x11" ]; - specialisation.nouveau.configuration.config.services.xserver.videoDrivers = lib.mkForce [ "nouveau" ]; - } // { - boot.kernelParams = [ "nouveau.config=NvGspRm=1" ]; + specialisation = lib.mkIf (lib.elem "nvidia" config.services.xserver.videoDrivers) { + nouveau.configuration.config.services.xserver.videoDrivers = lib.mkForce [ "nouveau" ]; }; } diff --git a/modules/system/settings/nix/default.nix b/modules/system/settings/nix/default.nix index 4ad71315..ca395c3b 100644 --- a/modules/system/settings/nix/default.nix +++ b/modules/system/settings/nix/default.nix @@ -2,6 +2,7 @@ { imports = [ ./channels + ./distributed ./gc ./unfree ]; @@ -17,6 +18,6 @@ }; }; - # Use nixos-rebuild-ng + # Use a newer implementation of nixos-rebuild system.rebuild.enableNg = true; } diff --git a/modules/system/settings/nix/distributed/default.nix b/modules/system/settings/nix/distributed/default.nix new file mode 100644 index 00000000..5cba68d8 --- /dev/null +++ b/modules/system/settings/nix/distributed/default.nix @@ -0,0 +1,33 @@ +{ nodes, ... }: +{ + nix = { + settings = { + max-jobs = 0; + trusted-users = [ "root" ]; + }; + + distributedBuilds = true; + buildMachines = with nodes; [ + { + hostName = midas.config.deployment.targetHost; + system = midas.config.nixpkgs.localSystem.system; + } + { + hostName = kitty.config.deployment.targetHost; + system = kitty.config.nixpkgs.localSystem.system; + } + { + hostName = prophet.config.deployment.targetHost; + system = prophet.config.nixpkgs.localSystem.system; + } + { + hostName = detritus.config.deployment.targetHost; + system = detritus.config.nixpkgs.localSystem.system; + } + { + hostName = elder.config.deployment.targetHost; + system = elder.config.nixpkgs.localSystem.system; + } + ]; + }; +} From 4e145a70d98a49996e1cd0faea6cde645c9ca7fb Mon Sep 17 00:00:00 2001 From: Bun Date: Mon, 9 Jun 2025 16:23:54 -0400 Subject: [PATCH 94/98] Does this even work?? --- flake.nix | 10 +++++- hosts/prophet/default.nix | 5 +-- machines.txt | 5 +++ modules/system/settings/nix/default.nix | 6 ++-- .../settings/nix/distributed/default.nix | 33 ------------------- 5 files changed, 19 insertions(+), 40 deletions(-) create mode 100644 machines.txt delete mode 100644 modules/system/settings/nix/distributed/default.nix diff --git a/flake.nix b/flake.nix index f173daa3..b25cad67 100644 --- a/flake.nix +++ b/flake.nix @@ -60,9 +60,17 @@ { colmena = { meta = { + # Info + description = "The Bun Hive"; + name = "bunhive"; + + # NixPKGs nixpkgs = import stable { system = "x86_64-linux"; }; specialArgs = inputs; + # Remote builds + machinesFile = ./machines.txt; + # Use a different Nixpkgs import on some systems nodeNixpkgs.jupiter = import unstable { system = "x86_64-linux"; }; }; @@ -81,8 +89,8 @@ # Servers midas.imports = [ ./hosts/midas ]; kitty.imports = [ ./hosts/kitty ]; - elder.imports = [ ./hosts/elder ]; detritus.imports = [ ./hosts/detritus ]; + elder.imports = [ ./hosts/elder ]; prophet.imports = [ ./hosts/prophet ]; }; } diff --git a/hosts/prophet/default.nix b/hosts/prophet/default.nix index 5f2196a5..48b648b8 100644 --- a/hosts/prophet/default.nix +++ b/hosts/prophet/default.nix @@ -14,10 +14,7 @@ stateVersion = "24.05"; }; - deployment = { - buildOnTarget = true; - targetHost = "42f:2737:2aed:4dee:cbe4:3c73:1918:ad9b"; - }; + deployment.targetHost = "42f:2737:2aed:4dee:cbe4:3c73:1918:ad9b"; networking.hostId = "97a21a38"; } diff --git a/machines.txt b/machines.txt new file mode 100644 index 00000000..c372083f --- /dev/null +++ b/machines.txt @@ -0,0 +1,5 @@ +ssh://midas x86_64-linux +ssh://kitty x86_64-linux +ssh://detritus x86_64-linux +ssh://elder x86_64-linux +ssh://prophet aarch64-linux diff --git a/modules/system/settings/nix/default.nix b/modules/system/settings/nix/default.nix index ca395c3b..6973350b 100644 --- a/modules/system/settings/nix/default.nix +++ b/modules/system/settings/nix/default.nix @@ -2,7 +2,6 @@ { imports = [ ./channels - ./distributed ./gc ./unfree ]; @@ -10,12 +9,15 @@ nix = { package = pkgs.lix; settings = { + auto-optimise-store = true; experimental-features = [ "nix-command" "flakes" ]; - auto-optimise-store = true; + max-jobs = 0; + trusted-users = [ "root" ]; }; + distributedBuilds = true; }; # Use a newer implementation of nixos-rebuild diff --git a/modules/system/settings/nix/distributed/default.nix b/modules/system/settings/nix/distributed/default.nix deleted file mode 100644 index 5cba68d8..00000000 --- a/modules/system/settings/nix/distributed/default.nix +++ /dev/null @@ -1,33 +0,0 @@ -{ nodes, ... }: -{ - nix = { - settings = { - max-jobs = 0; - trusted-users = [ "root" ]; - }; - - distributedBuilds = true; - buildMachines = with nodes; [ - { - hostName = midas.config.deployment.targetHost; - system = midas.config.nixpkgs.localSystem.system; - } - { - hostName = kitty.config.deployment.targetHost; - system = kitty.config.nixpkgs.localSystem.system; - } - { - hostName = prophet.config.deployment.targetHost; - system = prophet.config.nixpkgs.localSystem.system; - } - { - hostName = detritus.config.deployment.targetHost; - system = detritus.config.nixpkgs.localSystem.system; - } - { - hostName = elder.config.deployment.targetHost; - system = elder.config.nixpkgs.localSystem.system; - } - ]; - }; -} From 9191593dc7a92eb9e566536f155a28ff793ab964 Mon Sep 17 00:00:00 2001 From: Bun Date: Mon, 9 Jun 2025 18:24:51 -0400 Subject: [PATCH 95/98] Ok, distributed. Maybe. --- flake.nix | 3 -- hosts/prophet/default.nix | 5 ++- machines.txt | 5 --- .../home/programs/terminal/ssh/default.nix | 13 ++---- modules/system/devices/networking/default.nix | 1 + .../devices/networking/hosts/default.nix | 10 +++++ .../devices/networking/mounts/default.nix | 43 ++++++++----------- modules/system/settings/nix/default.nix | 4 +- .../settings/nix/distributed/default.nix | 39 +++++++++++++++++ 9 files changed, 76 insertions(+), 47 deletions(-) delete mode 100644 machines.txt create mode 100644 modules/system/devices/networking/hosts/default.nix create mode 100644 modules/system/settings/nix/distributed/default.nix diff --git a/flake.nix b/flake.nix index b25cad67..4b5af39d 100644 --- a/flake.nix +++ b/flake.nix @@ -68,9 +68,6 @@ nixpkgs = import stable { system = "x86_64-linux"; }; specialArgs = inputs; - # Remote builds - machinesFile = ./machines.txt; - # Use a different Nixpkgs import on some systems nodeNixpkgs.jupiter = import unstable { system = "x86_64-linux"; }; }; diff --git a/hosts/prophet/default.nix b/hosts/prophet/default.nix index 48b648b8..5f2196a5 100644 --- a/hosts/prophet/default.nix +++ b/hosts/prophet/default.nix @@ -14,7 +14,10 @@ stateVersion = "24.05"; }; - deployment.targetHost = "42f:2737:2aed:4dee:cbe4:3c73:1918:ad9b"; + deployment = { + buildOnTarget = true; + targetHost = "42f:2737:2aed:4dee:cbe4:3c73:1918:ad9b"; + }; networking.hostId = "97a21a38"; } diff --git a/machines.txt b/machines.txt deleted file mode 100644 index c372083f..00000000 --- a/machines.txt +++ /dev/null @@ -1,5 +0,0 @@ -ssh://midas x86_64-linux -ssh://kitty x86_64-linux -ssh://detritus x86_64-linux -ssh://elder x86_64-linux -ssh://prophet aarch64-linux diff --git a/modules/home/programs/terminal/ssh/default.nix b/modules/home/programs/terminal/ssh/default.nix index 8bb73968..a154ecbe 100644 --- a/modules/home/programs/terminal/ssh/default.nix +++ b/modules/home/programs/terminal/ssh/default.nix @@ -5,17 +5,10 @@ addKeysToAgent = "yes"; compression = true; matchBlocks = { - # Personal devices - tower.hostname = "4e4:535:9d47:f367:becd:6557:458d:5b1b"; - intuos.hostname = "40e:404:a427:da33:163e:97b3:a2a3:9ed4"; - jupiter.hostname = "5ce:969c:40d1:9575:f5e:591d:c377:a20b"; - # Personal servers - midas.hostname = "538:e163:87ba:f847:3646:18b6:6b01:d8f8"; - kitty.hostname = "53f:dc2d:80c9:3ca2:4b15:ef4d:38a0:c868"; - detritus.hostname = "5dd:9cd7:f286:e2c7:4c3b:c2e1:7832:97a3"; - elder.hostname = "570:3651:7f2:c26b:bccd:725b:be00:8a18"; - prophet.hostname = "42f:2737:2aed:4dee:cbe4:3c73:1918:ad9b"; + sv1.hostname = "sv1.nixfox.ca"; + sv2.hostname = "sv2.nixfox.ca"; + mx.hostname = "mx.nixfox.ca"; # Other servers bloxel.hostname = "rtmp.bloxelcom.net"; diff --git a/modules/system/devices/networking/default.nix b/modules/system/devices/networking/default.nix index fd8e9172..6046a291 100644 --- a/modules/system/devices/networking/default.nix +++ b/modules/system/devices/networking/default.nix @@ -1,6 +1,7 @@ { config, ... }: { imports = [ + ./hosts ./mounts ./mycelium ./nameservers diff --git a/modules/system/devices/networking/hosts/default.nix b/modules/system/devices/networking/hosts/default.nix new file mode 100644 index 00000000..5f1aea5f --- /dev/null +++ b/modules/system/devices/networking/hosts/default.nix @@ -0,0 +1,10 @@ +{ config, lib, nodes, ... }: +{ + networking.hosts = with nodes; { + "${midas.config.deployment.targetHost}" = [ "midas" ]; + "${kitty.config.deployment.targetHost}" = [ "kitty" ]; + "${detritus.config.deployment.targetHost}" = [ "detritus" ]; + "${elder.config.deployment.targetHost}" = [ "elder" ]; + "${prophet.config.deployment.targetHost}" = [ "prophet" ]; + }; +} diff --git a/modules/system/devices/networking/mounts/default.nix b/modules/system/devices/networking/mounts/default.nix index b1354e42..ef41e273 100644 --- a/modules/system/devices/networking/mounts/default.nix +++ b/modules/system/devices/networking/mounts/default.nix @@ -1,41 +1,34 @@ { config, lib, nodes, ... }: { fileSystems = let - netOpts = [ - "noauto" - "soft" - "x-systemd.automount" - ]; + common = { + fsType = "nfs4"; + options = [ + "noauto" + "soft" + "x-systemd.automount" + ]; + }; in with nodes; { - "midas" = { - device = "[${midas.config.deployment.targetHost}]:/storage"; + "midas" = common // { + device = "midas:/storage"; mountPoint = "/network/Midas"; - fsType = "nfs4"; - options = netOpts; }; - "kitty" = { - device = "[${kitty.config.deployment.targetHost}]:/storage"; + "kitty" = common // { + device = "kitty:/storage"; mountPoint = "/network/Kitty"; - fsType = "nfs4"; - options = netOpts; }; - "detritus" = { - device = "[${detritus.config.deployment.targetHost}]:/storage"; + "detritus" = common // { + device = "detritus:/storage"; mountPoint = "/network/Detritus"; - fsType = "nfs4"; - options = netOpts; }; - "elder" = { - device = "[${elder.config.deployment.targetHost}]:/storage"; + "elder" = common // { + device = "elder:/storage"; mountPoint = "/network/Elder"; - fsType = "nfs4"; - options = netOpts; }; - "prophet" = { - device = "[${prophet.config.deployment.targetHost}]:/storage"; + "prophet" = common // { + device = "prophet:/storage"; mountPoint = "/network/Prophet"; - fsType = "nfs4"; - options = netOpts; }; }; } diff --git a/modules/system/settings/nix/default.nix b/modules/system/settings/nix/default.nix index 6973350b..aaf08ea3 100644 --- a/modules/system/settings/nix/default.nix +++ b/modules/system/settings/nix/default.nix @@ -2,6 +2,7 @@ { imports = [ ./channels + ./distributed ./gc ./unfree ]; @@ -14,10 +15,7 @@ "nix-command" "flakes" ]; - max-jobs = 0; - trusted-users = [ "root" ]; }; - distributedBuilds = true; }; # Use a newer implementation of nixos-rebuild diff --git a/modules/system/settings/nix/distributed/default.nix b/modules/system/settings/nix/distributed/default.nix new file mode 100644 index 00000000..210ba399 --- /dev/null +++ b/modules/system/settings/nix/distributed/default.nix @@ -0,0 +1,39 @@ +{ nodes, ... }: +{ + nix = { + buildMachines = with nodes; [ + { + hostName = midas.config.deployment.targetHost; + system = midas.config.nixpkgs.localSystem.system; + publicHostKey = "AAAAC3NzaC1lZDI1NTE5AAAAIFcFMvrx9/iUZ1mEubf+QF1i3LNTxFhaU/1zFSjdo0kK"; + protocol = "ssh-ng"; + } + { + hostName = kitty.config.deployment.targetHost; + system = kitty.config.nixpkgs.localSystem.system; + publicHostKey = "AAAAC3NzaC1lZDI1NTE5AAAAIIrGmsya5DXKuXO6jNjUlrYHqk49KLzxM/60GXtLRLrL"; + protocol = "ssh-ng"; + } + { + hostName = detritus.config.deployment.targetHost; + system = detritus.config.nixpkgs.localSystem.system; + publicHostKey = "AAAAC3NzaC1lZDI1NTE5AAAAIN+GvLro4DVmlvmXcasU1gctIX9qct7mZtElpB735AoL"; + protocol = "ssh-ng"; + } + { + hostName = elder.config.deployment.targetHost; + system = elder.config.nixpkgs.localSystem.system; + publicHostKey = "AAAAC3NzaC1lZDI1NTE5AAAAIFjmJ6bkuO57gp6GZDEfR1O7krdf5wiqrOBC5pzTDl91"; + protocol = "ssh-ng"; + } + { + hostName = prophet.config.deployment.targetHost; + system = prophet.config.nixpkgs.localSystem.system; + publicHostKey = "AAAAC3NzaC1lZDI1NTE5AAAAICrp3Y/X2BRUENx+0GMTmB1VDA6SiwkGgdJMHSdMMepM"; + protocol = "ssh-ng"; + } + ]; + distributedBuilds = true; + settings.trusted-users = [ "root" ]; + }; +} From 2f76f3be7e401bbacb65142b8c53898e643efaa5 Mon Sep 17 00:00:00 2001 From: Bun Date: Mon, 9 Jun 2025 21:49:41 -0400 Subject: [PATCH 96/98] Buildmachines works, maybe ? --- hosts/jupiter/default.nix | 2 +- modules/system/default.nix | 1 - modules/system/settings/colmena/default.nix | 7 +++ modules/system/settings/default.nix | 1 + modules/system/settings/nix/cache/default.nix | 13 +++++ modules/system/settings/nix/default.nix | 14 +++-- .../settings/nix/distributed/default.nix | 54 +++++++++++++------ modules/system/settings/nix/gc/default.nix | 8 --- .../settings/nix/maintenence/default.nix | 13 +++++ 9 files changed, 78 insertions(+), 35 deletions(-) create mode 100644 modules/system/settings/colmena/default.nix create mode 100644 modules/system/settings/nix/cache/default.nix delete mode 100644 modules/system/settings/nix/gc/default.nix create mode 100644 modules/system/settings/nix/maintenence/default.nix diff --git a/hosts/jupiter/default.nix b/hosts/jupiter/default.nix index 7271d00e..0f4db580 100644 --- a/hosts/jupiter/default.nix +++ b/hosts/jupiter/default.nix @@ -17,5 +17,5 @@ deployment.targetHost = "5ce:969c:40d1:9575:f5e:591d:c377:a20b"; - jovian.steam.enable = true; + #jovian.steam.enable = true; } diff --git a/modules/system/default.nix b/modules/system/default.nix index e2c3b9d7..6040e075 100644 --- a/modules/system/default.nix +++ b/modules/system/default.nix @@ -11,5 +11,4 @@ ]; networking.hostName = name; - deployment.tags = config.system.nixos.tags; } diff --git a/modules/system/settings/colmena/default.nix b/modules/system/settings/colmena/default.nix new file mode 100644 index 00000000..33e99c23 --- /dev/null +++ b/modules/system/settings/colmena/default.nix @@ -0,0 +1,7 @@ +{ config, ... }: +{ + deployment = { + allowLocalDeployment = true; + tags = config.system.nixos.tags; + }; +} diff --git a/modules/system/settings/default.nix b/modules/system/settings/default.nix index 12467a0c..0cea70d4 100644 --- a/modules/system/settings/default.nix +++ b/modules/system/settings/default.nix @@ -1,6 +1,7 @@ { ... }: { imports = [ + ./colmena ./font ./locale ./logind diff --git a/modules/system/settings/nix/cache/default.nix b/modules/system/settings/nix/cache/default.nix new file mode 100644 index 00000000..3041a621 --- /dev/null +++ b/modules/system/settings/nix/cache/default.nix @@ -0,0 +1,13 @@ +{ ... }: +{ + nix.settings = { + substituters = [ + "https://colmena.cachix.org" + "https://nix-community.cachix.org" + ]; + trusted-public-keys = [ + "colmena.cachix.org-1:7BzpDnjjH8ki2CT3f6GdOk7QAzPOl+1t3LvTLXqYcSg=" + "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" + ]; + }; +} diff --git a/modules/system/settings/nix/default.nix b/modules/system/settings/nix/default.nix index aaf08ea3..8f4eda56 100644 --- a/modules/system/settings/nix/default.nix +++ b/modules/system/settings/nix/default.nix @@ -1,21 +1,19 @@ { pkgs, ... }: { imports = [ + ./cache ./channels ./distributed - ./gc + ./maintenence ./unfree ]; nix = { package = pkgs.lix; - settings = { - auto-optimise-store = true; - experimental-features = [ - "nix-command" - "flakes" - ]; - }; + settings.experimental-features = [ + "flakes" + "nix-command" + ]; }; # Use a newer implementation of nixos-rebuild diff --git a/modules/system/settings/nix/distributed/default.nix b/modules/system/settings/nix/distributed/default.nix index 210ba399..cd128b1a 100644 --- a/modules/system/settings/nix/distributed/default.nix +++ b/modules/system/settings/nix/distributed/default.nix @@ -1,39 +1,59 @@ -{ nodes, ... }: +{ config, lib, nodes, ... }: { nix = { buildMachines = with nodes; [ { - hostName = midas.config.deployment.targetHost; - system = midas.config.nixpkgs.localSystem.system; - publicHostKey = "AAAAC3NzaC1lZDI1NTE5AAAAIFcFMvrx9/iUZ1mEubf+QF1i3LNTxFhaU/1zFSjdo0kK"; + hostName = "midas"; + system = midas.config.nixpkgs.hostPlatform.system; + supportedFeatures = midas.config.nix.settings.system-features; + publicHostKey = "c3NoLWVkMjU1MTkgQUFBQUMzTnphQzFsWkRJMU5URTVBQUFBSUZjRk12cng5L2lVWjFtRXViZitRRjFpM0xOVHhGaGFVLzF6RlNqZG8wa0sgcm9vdEBraXR0eQo="; protocol = "ssh-ng"; + sshKey = "/root/.ssh/buildkey"; + maxJobs = 8; } { - hostName = kitty.config.deployment.targetHost; - system = kitty.config.nixpkgs.localSystem.system; - publicHostKey = "AAAAC3NzaC1lZDI1NTE5AAAAIIrGmsya5DXKuXO6jNjUlrYHqk49KLzxM/60GXtLRLrL"; + hostName = "kitty"; + system = kitty.config.nixpkgs.hostPlatform.system; + supportedFeatures = kitty.config.nix.settings.system-features; + publicHostKey = "c3NoLWVkMjU1MTkgQUFBQUMzTnphQzFsWkRJMU5URTVBQUFBSUlyR21zeWE1RFhLdVhPNmpOalVscllIcWs0OUtMenhNLzYwR1h0TFJMckwgcm9vdEBraXR0eQo="; protocol = "ssh-ng"; + sshKey = "/root/.ssh/buildkey"; + maxJobs = 8; } { - hostName = detritus.config.deployment.targetHost; - system = detritus.config.nixpkgs.localSystem.system; - publicHostKey = "AAAAC3NzaC1lZDI1NTE5AAAAIN+GvLro4DVmlvmXcasU1gctIX9qct7mZtElpB735AoL"; + hostName = "detritus"; + system = detritus.config.nixpkgs.hostPlatform.system; + supportedFeatures = detritus.config.nix.settings.system-features; + publicHostKey = "c3NoLWVkMjU1MTkgQUFBQUMzTnphQzFsWkRJMU5URTVBQUFBSU4rR3ZMcm80RFZtbHZtWGNhc1UxZ2N0SVg5cWN0N21adEVscEI3MzVBb0wgcm9vdEBkZXRyaXR1cwo="; protocol = "ssh-ng"; + sshKey = "/root/.ssh/buildkey"; + maxJobs = 8; } { - hostName = elder.config.deployment.targetHost; - system = elder.config.nixpkgs.localSystem.system; - publicHostKey = "AAAAC3NzaC1lZDI1NTE5AAAAIFjmJ6bkuO57gp6GZDEfR1O7krdf5wiqrOBC5pzTDl91"; + hostName = "elder"; + system = elder.config.nixpkgs.hostPlatform.system; + supportedFeatures = elder.config.nix.settings.system-features; + publicHostKey = "c3NoLWVkMjU1MTkgQUFBQUMzTnphQzFsWkRJMU5URTVBQUFBSUZqbUo2Ymt1TzU3Z3A2R1pERWZSMU83a3JkZjV3aXFyT0JDNXB6VERsOTEgcm9vdEBlbGRlcgo="; protocol = "ssh-ng"; + sshKey = "/root/.ssh/buildkey"; + maxJobs = 8; } { - hostName = prophet.config.deployment.targetHost; - system = prophet.config.nixpkgs.localSystem.system; - publicHostKey = "AAAAC3NzaC1lZDI1NTE5AAAAICrp3Y/X2BRUENx+0GMTmB1VDA6SiwkGgdJMHSdMMepM"; + hostName = "prophet"; + system = prophet.config.nixpkgs.hostPlatform.system; + supportedFeatures = prophet.config.nix.settings.system-features; + publicHostKey = "c3NoLWVkMjU1MTkgQUFBQUMzTnphQzFsWkRJMU5URTVBQUFBSUNycDNZL1gyQlJVRU54KzBHTVRtQjFWREE2U2l3a0dnZEpNSFNkTU1lcE0gcm9vdEBwcm9waGV0Cg=="; protocol = "ssh-ng"; + sshKey = "/root/.ssh/buildkey"; + maxJobs = 8; } ]; + distributedBuilds = true; - settings.trusted-users = [ "root" ]; + + settings = { + max-jobs = if builtins.elem "server" config.system.nixos.tags then "auto" else 0; + trusted-users = [ "root" ]; + }; }; } diff --git a/modules/system/settings/nix/gc/default.nix b/modules/system/settings/nix/gc/default.nix deleted file mode 100644 index 0ec262af..00000000 --- a/modules/system/settings/nix/gc/default.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ ... }: -{ - nix.gc = { - automatic = true; - dates = "weekly"; - options = "--delete-older-than 7d"; - }; -} diff --git a/modules/system/settings/nix/maintenence/default.nix b/modules/system/settings/nix/maintenence/default.nix new file mode 100644 index 00000000..f1b190c0 --- /dev/null +++ b/modules/system/settings/nix/maintenence/default.nix @@ -0,0 +1,13 @@ +{ ... }: +{ + nix = let + common = { + automatic = true; + persistent = true; + }; + in { + gc = common; + optimise = common; + settings.auto-optimise-store = true; + }; +} From 0ab856b18e60b750b8a2760f5b4e1ca6ab433590 Mon Sep 17 00:00:00 2001 From: Bun Date: Wed, 11 Jun 2025 01:29:35 -0400 Subject: [PATCH 97/98] Add flight, more stuff with distributed builds --- flake.nix | 3 +- hosts/flight/boot/default.nix | 8 ++ hosts/flight/default.nix | 18 +++ hosts/flight/disko/default.nix | 106 ++++++++++++++++++ hosts/flight/filesystems/default.nix | 14 +++ hosts/flight/hardware/default.nix | 22 ++++ hosts/flight/services/default.nix | 11 ++ hosts/flight/user/default.nix | 8 ++ .../home/settings/gtk/bookmarks/default.nix | 2 +- .../devices/networking/hosts/default.nix | 8 ++ .../settings/nix/distributed/default.nix | 20 ++++ 11 files changed, 218 insertions(+), 2 deletions(-) create mode 100644 hosts/flight/boot/default.nix create mode 100644 hosts/flight/default.nix create mode 100644 hosts/flight/disko/default.nix create mode 100644 hosts/flight/filesystems/default.nix create mode 100644 hosts/flight/hardware/default.nix create mode 100644 hosts/flight/services/default.nix create mode 100644 hosts/flight/user/default.nix diff --git a/flake.nix b/flake.nix index 4b5af39d..012a73be 100644 --- a/flake.nix +++ b/flake.nix @@ -61,7 +61,7 @@ colmena = { meta = { # Info - description = "The Bun Hive"; + description = "The Bun Systems"; name = "bunhive"; # NixPKGs @@ -82,6 +82,7 @@ # Laptops intuos.imports = [ ./hosts/intuos ]; jupiter.imports = [ ./hosts/jupiter ]; + flight.imports = [ ./hosts/flight ]; # Servers midas.imports = [ ./hosts/midas ]; diff --git a/hosts/flight/boot/default.nix b/hosts/flight/boot/default.nix new file mode 100644 index 00000000..bd399e82 --- /dev/null +++ b/hosts/flight/boot/default.nix @@ -0,0 +1,8 @@ +{ pkgs, ... }: +{ + boot = { + kernelPackages = pkgs.linuxPackages_latest; + loader.grub.enable = true; + plymouth.enable = true; + }; +} diff --git a/hosts/flight/default.nix b/hosts/flight/default.nix new file mode 100644 index 00000000..c3b0bc3b --- /dev/null +++ b/hosts/flight/default.nix @@ -0,0 +1,18 @@ +{ ... }: +{ + imports = [ + ./boot + ./disko + ./filesystems + ./hardware + ./services + ./user + ]; + + system = { + nixos.tags = [ "pc" ]; + stateVersion = "25.05"; + }; + + deployment.targetHost = ""; +} diff --git a/hosts/flight/disko/default.nix b/hosts/flight/disko/default.nix new file mode 100644 index 00000000..4d195170 --- /dev/null +++ b/hosts/flight/disko/default.nix @@ -0,0 +1,106 @@ +{ config, disko, ... }: +{ + imports = [ disko.nixosModules.disko ]; + + disko.devices = { + disk = { + "${config.networking.hostName}" = { + type = "disk"; + device = "/dev/sda"; + content = { + type = "gpt"; + partitions = { + boot = { + size = "1M"; + type = "EF02"; + }; + ESP = { + size = "2G"; + type = "EF00"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + mountOptions = [ "umask=0077" ]; + }; + }; + luks = { + size = "100%"; + content = { + type = "luks"; + name = "${config.networking.hostName}-disk"; + settings.allowDiscards = true; + passwordFile = "/tmp/secret.key"; + content = { + type = "lvm_pv"; + vg = "${config.networking.hostName}"; + }; + }; + }; + }; + }; + }; + }; + + lvm_vg = { + "${config.networking.hostName}" = { + type = "lvm_vg"; + lvs = { + root = { + size = "100%"; + content = { + type = "btrfs"; + extraArgs = [ "-f" ]; + subvolumes = { + "/root" = { + mountpoint = "/"; + mountOptions = [ + "compress=zstd" + "ssd" + ]; + }; + "/prev" = { + mountpoint = "/prev"; + mountOptions = [ + "compress=zstd" + "noexec" + "ssd" + ]; + }; + "/nix" = { + mountpoint = "/nix"; + mountOptions = [ + "compress=zstd" + "ssd" + ]; + }; + + # Impermanence + "/persist" = { + mountpoint = "/persist"; + mountOptions = [ + "compress=zstd" + "ssd" + ]; + }; + "/persist/.snapshots" = { }; + "/persist/home" = { }; + "/persist/home/.snapshots" = { }; + }; + }; + }; + swap = { + size = "8G"; + content = { + type = "swap"; + discardPolicy = "both"; + }; + }; + }; + }; + }; + }; + + # Needed for impermanence + fileSystems."/persist".neededForBoot = true; +} diff --git a/hosts/flight/filesystems/default.nix b/hosts/flight/filesystems/default.nix new file mode 100644 index 00000000..f02cc20b --- /dev/null +++ b/hosts/flight/filesystems/default.nix @@ -0,0 +1,14 @@ +{ config, ... }: +{ + fileSystems = { + "/persist/storage" = { + device = "/dev/disk/by-uuid/d0d6783f-ad51-4d85-b8a9-3374f6460ef6"; + fsType = "btrfs"; + options = [ + "nofail" + "nosuid" + "subvol=storage" + ]; + }; + }; +} diff --git a/hosts/flight/hardware/default.nix b/hosts/flight/hardware/default.nix new file mode 100644 index 00000000..ba47de8a --- /dev/null +++ b/hosts/flight/hardware/default.nix @@ -0,0 +1,22 @@ +{ modulesPath, ... }: +{ + imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; + + boot = { + initrd = { + availableKernelModules = [ + "ahci" + "ehci_pci" + "sd_mod" + "sr_mod" + "xhci_pci" + ]; + kernelModules = [ "dm-snapshot" ]; + }; + kernelModules = [ "kvm-intel" ]; + }; + + hardware.cpu.intel.updateMicrocode = true; + + nixpkgs.hostPlatform = "x86_64-linux"; +} diff --git a/hosts/flight/services/default.nix b/hosts/flight/services/default.nix new file mode 100644 index 00000000..3c638bd3 --- /dev/null +++ b/hosts/flight/services/default.nix @@ -0,0 +1,11 @@ +{ lib, ... }: +{ + networking.useNetworkd = lib.mkForce false; + + services.globalprotect.enable = true; + + virtualisation = { + libvirtd.enable = true; + vmware.host.enable = true; + }; +} diff --git a/hosts/flight/user/default.nix b/hosts/flight/user/default.nix new file mode 100644 index 00000000..43b57345 --- /dev/null +++ b/hosts/flight/user/default.nix @@ -0,0 +1,8 @@ +{ config, ... }: +{ + home-manager.users."${config.vars.mainUser}".home = { + guifull.enable = true; + school.enable = true; + enableNixpkgsReleaseCheck = false; + }; +} diff --git a/modules/home/settings/gtk/bookmarks/default.nix b/modules/home/settings/gtk/bookmarks/default.nix index f4c9c95a..904aabfd 100644 --- a/modules/home/settings/gtk/bookmarks/default.nix +++ b/modules/home/settings/gtk/bookmarks/default.nix @@ -7,6 +7,6 @@ "file://${config.home.homeDirectory}/Videos" "file://${config.home.homeDirectory}/Photos" "file://${config.home.homeDirectory}/Photos/Screenshots" - "file:///etc/nixos" + "file:///network" ]; } diff --git a/modules/system/devices/networking/hosts/default.nix b/modules/system/devices/networking/hosts/default.nix index 5f1aea5f..0be8aad1 100644 --- a/modules/system/devices/networking/hosts/default.nix +++ b/modules/system/devices/networking/hosts/default.nix @@ -1,6 +1,14 @@ { config, lib, nodes, ... }: { networking.hosts = with nodes; { + # PCs + "${tower.config.deployment.targetHost}" = [ "tower" ]; + "${hidden.config.deployment.targetHost}" = [ "hidden" ]; + "${intuos.config.deployment.targetHost}" = [ "intuos" ]; + "${jupiter.config.deployment.targetHost}" = [ "jupiter" ]; + "${flight.config.deployment.targetHost}" = [ "flight" ]; + + # Servers "${midas.config.deployment.targetHost}" = [ "midas" ]; "${kitty.config.deployment.targetHost}" = [ "kitty" ]; "${detritus.config.deployment.targetHost}" = [ "detritus" ]; diff --git a/modules/system/settings/nix/distributed/default.nix b/modules/system/settings/nix/distributed/default.nix index cd128b1a..a57f9ee4 100644 --- a/modules/system/settings/nix/distributed/default.nix +++ b/modules/system/settings/nix/distributed/default.nix @@ -1,6 +1,7 @@ { config, lib, nodes, ... }: { nix = { + # Machines to build derviations on buildMachines = with nodes; [ { hostName = "midas"; @@ -49,10 +50,29 @@ } ]; + # Enable distributed builds distributedBuilds = true; settings = { + # Serve derivations more efficiently, using substituters + substituters = [ + "ssh-ng://midas" + "ssh-ng://kitty" + "ssh-ng://detritus" + "ssh-ng://elder" + "ssh-ng://prophet" + ]; + trusted-public-keys = [ + "midas:YpyfZyVlTlPjzcVsYBnN13EgeK95y1WXxm9h1V8tM7E=" + "kitty:QLl9Do4v+2Q/fapozUGoXIKJul+Zck3yAsmAo9Lg4is=" + "detritus:xtQVaIyDIBWS+EAU11dBsW9BUMT7aAZRPjKp3Udgdvc=" + "elder:U+zIEvxNeqOxAWbZyrJzDNrJF1GJdcrLEYbIqmKGd7U=" + "prophet:NPlWmuX1vz95uUIddQXlwrkmdSMZW1U27CdEY812brg=" + ]; + + # Settings to sign the derivations and allow building max-jobs = if builtins.elem "server" config.system.nixos.tags then "auto" else 0; + secret-key-files = "/var/lib/nixos/cache-priv-key.pem"; trusted-users = [ "root" ]; }; }; From b3ba7481d8c2ab11287eb9c3f31dcf50ae86ae93 Mon Sep 17 00:00:00 2001 From: Bun Date: Fri, 20 Jun 2025 20:20:48 -0400 Subject: [PATCH 98/98] Modify like, basically everything idk, probably a lot of secrets and url names and colmena and whatnot --- README.md | 2 +- flake.lock | 84 +++++++------- flake.nix | 20 +++- hosts/detritus/boot/default.nix | 6 +- hosts/detritus/default.nix | 4 +- hosts/detritus/disko/default.nix | 11 +- hosts/detritus/filesystems/default.nix | 2 - hosts/elder/boot/default.nix | 11 -- hosts/elder/default.nix | 20 ---- hosts/elder/disko/default.nix | 100 ----------------- hosts/elder/filesystems/default.nix | 16 --- hosts/elder/hardware/default.nix | 23 ---- hosts/flight/boot/default.nix | 9 +- hosts/flight/default.nix | 5 +- hosts/flight/disko/default.nix | 106 ------------------ hosts/flight/filesystems/default.nix | 2 +- hosts/flight/hardware/default.nix | 21 +++- hosts/flight/root/default.nix | 54 +++++++++ hosts/flight/services/default.nix | 11 -- hosts/flight/user/default.nix | 9 +- hosts/hidden/boot/default.nix | 2 +- hosts/hidden/disko/default.nix | 13 +-- hosts/intuos/disko/default.nix | 13 +-- hosts/jupiter/boot/default.nix | 2 +- hosts/jupiter/default.nix | 2 +- hosts/jupiter/disko/default.nix | 11 +- hosts/jupiter/jovian/default.nix | 31 ++--- .../jovian/{gnome => desktop}/default.nix | 0 hosts/kitty/boot/default.nix | 2 +- hosts/kitty/disko/default.nix | 13 +-- hosts/kitty/filesystems/default.nix | 2 - hosts/midas/disko/default.nix | 15 ++- hosts/midas/filesystems/default.nix | 2 - hosts/midas/services/default.nix | 1 + hosts/prophet/boot/default.nix | 2 +- hosts/prophet/disko/default.nix | 13 +-- hosts/prophet/filesystems/default.nix | 2 - hosts/tower/default.nix | 2 - hosts/tower/disko/default.nix | 15 ++- hosts/tower/filesystems/default.nix | 20 +++- hosts/tower/hardware/default.nix | 2 + hosts/tower/user/default.nix | 7 +- .../home/programs/terminal/ranger/default.nix | 6 +- modules/home/variables/displays/default.nix | 8 +- modules/home/wms/programs/kanshi/default.nix | 61 +++++----- modules/home/wms/programs/waybar/default.nix | 4 +- modules/home/wms/sway/inputs/default.nix | 13 +-- modules/home/wms/sway/outputs/default.nix | 7 +- modules/system/devices/boot/default.nix | 11 +- modules/system/devices/boot/grub/default.nix | 8 -- .../devices/boot/lanzaboote/default.nix | 4 +- .../system/devices/boot/limine/default.nix | 8 ++ .../system/devices/boot/plymouth/default.nix | 1 - .../boot/services/root-reset/default.nix | 4 +- .../system/devices/boot/systemd/default.nix | 7 -- .../devices/disks/filesystems/default.nix | 4 +- .../devices/disks/impermanence/default.nix | 13 ++- .../devices/networking/hosts/default.nix | 1 - .../devices/networking/mounts/default.nix | 7 +- modules/system/devices/video/amd/default.nix | 6 + modules/system/devices/video/default.nix | 5 +- .../system/devices/video/nvidia/default.nix | 8 +- .../system/programs/home-manager/default.nix | 4 +- modules/system/secrets/networks/default.nix | Bin 1205 -> 1464 bytes .../services/general/libvirtd/default.nix | 3 +- .../system/services/general/ssh/default.nix | 12 +- modules/system/services/server/default.nix | 1 + .../services/server/forgejo/default.nix | 12 +- .../services/server/forgejo/nginx/default.nix | 2 +- .../services/server/hedgedoc/default.nix | 15 +++ .../server/hedgedoc/nginx/default.nix | 11 ++ .../services/server/icecast/default.nix | 4 +- .../icecast/liquidsoap/nixbops/default.nix | 2 +- .../icecast/liquidsoap/nixscrap/default.nix | 2 +- .../services/server/icecast/nginx/default.nix | 2 +- .../server/jellyfin/nginx/default.nix | 2 +- .../services/server/mailserver/default.nix | 2 +- .../mailserver/go-autoconfig/default.nix | 6 +- .../go-autoconfig/nginx/default.nix | 2 +- .../server/mailserver/radicale/default.nix | 2 +- .../mailserver/radicale/nginx/default.nix | 2 +- .../server/mailserver/roundcube/default.nix | 4 +- .../services/server/mastodon/default.nix | 8 +- .../services/server/matrix/coturn/default.nix | 2 +- .../server/matrix/coturn/nginx/default.nix | 4 +- .../server/matrix/element/default.nix | 10 +- .../server/matrix/element/nginx/default.nix | 2 +- .../server/matrix/synapse/default.nix | 10 +- .../server/matrix/synapse/nginx/default.nix | 2 +- .../services/server/minecraft/default.nix | 8 +- .../minecraft/servers/blockworld/default.nix | 2 +- .../minecraft/servers/cornworld/default.nix | 2 +- .../servers/dewdemolisher/default.nix | 2 +- .../minecraft/servers/johnside/default.nix | 2 +- .../minecraft/servers/marsh/default.nix | 2 +- .../minecraft/servers/skyblock/default.nix | 2 +- .../minecraft/servers/uberbeta/default.nix | 2 +- .../services/server/nextcloud/default.nix | 8 +- .../server/nextcloud/nginx/default.nix | 2 +- .../services/server/nginx/acme/default.nix | 2 +- .../services/server/owncast/nginx/default.nix | 2 +- .../server/transmission/nginx/default.nix | 2 +- .../services/server/vaultwarden/default.nix | 8 +- .../server/vaultwarden/nginx/default.nix | 2 +- modules/system/settings/nix/default.nix | 1 - .../settings/nix/distributed/default.nix | 79 ------------- modules/system/variables/default.nix | 3 +- 107 files changed, 437 insertions(+), 696 deletions(-) delete mode 100644 hosts/elder/boot/default.nix delete mode 100644 hosts/elder/default.nix delete mode 100644 hosts/elder/disko/default.nix delete mode 100644 hosts/elder/filesystems/default.nix delete mode 100644 hosts/elder/hardware/default.nix delete mode 100644 hosts/flight/disko/default.nix create mode 100644 hosts/flight/root/default.nix delete mode 100644 hosts/flight/services/default.nix rename hosts/jupiter/jovian/{gnome => desktop}/default.nix (100%) delete mode 100644 modules/system/devices/boot/grub/default.nix create mode 100644 modules/system/devices/boot/limine/default.nix delete mode 100644 modules/system/devices/boot/systemd/default.nix create mode 100644 modules/system/devices/video/amd/default.nix create mode 100644 modules/system/services/server/hedgedoc/default.nix create mode 100644 modules/system/services/server/hedgedoc/nginx/default.nix delete mode 100644 modules/system/settings/nix/distributed/default.nix diff --git a/README.md b/README.md index 87fdf860..6f6e4db2 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ This config is primarily organized for my own use, you may find individual servi ### Installation You can install this flake from any system with the Nix package manager installed, including any official images. Disko is used to automatically format your drive according to a declared config. -Use ``nix --experimental-features "nix-command flakes" run github:nix-community/disko/latest -- --mode destroy,format,mount ./filename.nix`` to format the disk with Disko. +Use ``nix-shell -p disko --run "sudo disko --mode destroy,format,mount ./disko.nix"`` to format the disk with Disko. You will likely want to generate a per hardware nix file using ``nixos-generate-config --root ./ --no-filesystems``, and adapt it to fit the format of ``/hosts``, to ensure essential drivers are loaded on boot. Once formatted and adjusted, NixOS can be installed to the mounted drive with ``nixos-install --root /mnt --flake .#host``, where ``host`` is a hostname defined in this flake. diff --git a/flake.lock b/flake.lock index ed171014..1a7b3ce5 100644 --- a/flake.lock +++ b/flake.lock @@ -40,11 +40,11 @@ }, "crane": { "locked": { - "lastModified": 1746291859, - "narHash": "sha256-DdWJLA+D5tcmrRSg5Y7tp/qWaD05ATI4Z7h22gd1h7Q=", + "lastModified": 1748970125, + "narHash": "sha256-UDyigbDGv8fvs9aS95yzFfOKkEjx1LO3PL3DsKopohA=", "owner": "ipetkov", "repo": "crane", - "rev": "dfd9a8dfd09db9aad544c4d3b6c47b12562544a5", + "rev": "323b5746d89e04b22554b061522dfce9e4c49b18", "type": "github" }, "original": { @@ -60,11 +60,11 @@ ] }, "locked": { - "lastModified": 1748225455, - "narHash": "sha256-AzlJCKaM4wbEyEpV3I/PUq5mHnib2ryEy32c+qfj6xk=", + "lastModified": 1749436314, + "narHash": "sha256-CqmqU5FRg5AadtIkxwu8ulDSOSoIisUMZRLlcED3Q5w=", "owner": "nix-community", "repo": "disko", - "rev": "a894f2811e1ee8d10c50560551e50d6ab3c392ba", + "rev": "dfa4d1b9c39c0342ef133795127a3af14598017a", "type": "github" }, "original": { @@ -76,11 +76,11 @@ "flake-compat": { "flake": false, "locked": { - "lastModified": 1733328505, - "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", + "lastModified": 1747046372, + "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", "owner": "edolstra", "repo": "flake-compat", - "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", + "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", "type": "github" }, "original": { @@ -108,11 +108,11 @@ "flake-compat_3": { "flake": false, "locked": { - "lastModified": 1733328505, - "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", + "lastModified": 1747046372, + "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", "owner": "edolstra", "repo": "flake-compat", - "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", + "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", "type": "github" }, "original": { @@ -129,11 +129,11 @@ ] }, "locked": { - "lastModified": 1743550720, - "narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=", + "lastModified": 1749398372, + "narHash": "sha256-tYBdgS56eXYaWVW3fsnPQ/nFlgWi/Z2Ymhyu21zVM98=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "c621e8422220273271f52058f618c94e405bb0f5", + "rev": "9305fe4e5c2a6fcf5ba6a3ff155720fbe4076569", "type": "github" }, "original": { @@ -276,11 +276,11 @@ ] }, "locked": { - "lastModified": 1748665073, - "narHash": "sha256-RMhjnPKWtCoIIHiuR9QKD7xfsKb3agxzMfJY8V9MOew=", + "lastModified": 1749154018, + "narHash": "sha256-gjN3j7joRvT3a8Zgcylnd4NFsnXeDBumqiu4HmY1RIg=", "owner": "nix-community", "repo": "home-manager", - "rev": "282e1e029cb6ab4811114fc85110613d72771dea", + "rev": "7aae0ee71a17b19708b93b3ed448a1a0952bf111", "type": "github" }, "original": { @@ -313,11 +313,11 @@ ] }, "locked": { - "lastModified": 1748683484, - "narHash": "sha256-RXiY6t9E9oLEtfdGChHk/OIPqxYg1tu8XLvbPnJlfi4=", + "lastModified": 1749495634, + "narHash": "sha256-NPifVq2XZGRCsLBoUt6M5YUTiIh23+ubq57w7mSODt8=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "6f6bd4a27fb01c9dd623a157d769f34561407f47", + "rev": "c40d2f31f92571bf341497884174a132829ef0fc", "type": "github" }, "original": { @@ -338,11 +338,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1747056319, - "narHash": "sha256-qSKcBaISBozadtPq6BomnD+wIYTZIkiua3UuHLaD52c=", + "lastModified": 1749471908, + "narHash": "sha256-uGfPqd43KTomeIVWUzHu3hGLWFsqYibhWLt2OaRic28=", "owner": "nix-community", "repo": "lanzaboote", - "rev": "2e425f3da6ce7f5b34fa6eaf7a2a7f78dbabcc85", + "rev": "00292388ad3b497763b81568d6ee5e1c4a2bcf85", "type": "github" }, "original": { @@ -385,11 +385,11 @@ ] }, "locked": { - "lastModified": 1748570485, - "narHash": "sha256-oDnEc/rxyDf+uUXO56Z2TJtrrQoBe0Z4MCIRaY6lVZ0=", + "lastModified": 1749607590, + "narHash": "sha256-vvu9zoaYuuPIGG9YKRBMNqOELGN+x2qHbEK6PrZ/Ky0=", "owner": "Infinidoge", "repo": "nix-minecraft", - "rev": "6c961ee42ff2301ee61c75aa42cbe8c8adecf3c8", + "rev": "83aaf9c7e3caa39608992e723cfb997624920a35", "type": "github" }, "original": { @@ -445,11 +445,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1748748623, - "narHash": "sha256-ajFTvgFyRxLMjpJxK+KOEp2+dNRl/Bc8Mnby7W8uPk4=", + "lastModified": 1749614785, + "narHash": "sha256-yn6eDwnUr9vZYpneg+XNh0/tC1KA9a+yXxvFMEzOfco=", "owner": "nix-community", "repo": "NUR", - "rev": "58a80c3ede0cdfa480f3bd8f0e79c010677f2a07", + "rev": "14f8439ad1190d3dd09f9fcc6a033d9710d68806", "type": "github" }, "original": { @@ -471,11 +471,11 @@ ] }, "locked": { - "lastModified": 1746537231, - "narHash": "sha256-Wb2xeSyOsCoTCTj7LOoD6cdKLEROyFAArnYoS+noCWo=", + "lastModified": 1747372754, + "narHash": "sha256-2Y53NGIX2vxfie1rOW0Qb86vjRZ7ngizoo+bnXU9D9k=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "fa466640195d38ec97cf0493d6d6882bc4d14969", + "rev": "80479b6ec16fefd9c1db3ea13aeb038c60530f46", "type": "github" }, "original": { @@ -508,11 +508,11 @@ ] }, "locked": { - "lastModified": 1747017456, - "narHash": "sha256-C/U12fcO+HEF071b5mK65lt4XtAIZyJSSJAg9hdlvTk=", + "lastModified": 1749436897, + "narHash": "sha256-OkDtaCGQQVwVFz5HWfbmrMJR99sFIMXHCHEYXzUJEJY=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "5b07506ae89b025b14de91f697eba23b48654c52", + "rev": "e7876c387e35dc834838aff254d8e74cf5bd4f19", "type": "github" }, "original": { @@ -523,11 +523,11 @@ }, "stable": { "locked": { - "lastModified": 1749024892, - "narHash": "sha256-OGcDEz60TXQC+gVz5sdtgGJdKVYr6rwdzQKuZAJQpCA=", + "lastModified": 1750005367, + "narHash": "sha256-h/aac1dGLhS3qpaD2aZt25NdKY7b+JT0ZIP2WuGsJMU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8f1b52b04f2cb6e5ead50bd28d76528a2f0380ef", + "rev": "6c64dabd3aa85e0c02ef1cdcb6e1213de64baee3", "type": "github" }, "original": { @@ -589,11 +589,11 @@ }, "unstable": { "locked": { - "lastModified": 1748929857, - "narHash": "sha256-lcZQ8RhsmhsK8u7LIFsJhsLh/pzR9yZ8yqpTzyGdj+Q=", + "lastModified": 1749794982, + "narHash": "sha256-Kh9K4taXbVuaLC0IL+9HcfvxsSUx8dPB5s5weJcc9pc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c2a03962b8e24e669fb37b7df10e7c79531ff1a4", + "rev": "ee930f9755f58096ac6e8ca94a1887e0534e2d81", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 012a73be..03a9d53f 100644 --- a/flake.nix +++ b/flake.nix @@ -65,7 +65,14 @@ name = "bunhive"; # NixPKGs - nixpkgs = import stable { system = "x86_64-linux"; }; + nixpkgs = import stable { + overlays = [ + blender.overlays.default + minecraft.overlay + ]; + system = "x86_64-linux"; + }; + specialArgs = inputs; # Use a different Nixpkgs import on some systems @@ -73,7 +80,15 @@ }; # Import the default config to all hosts - defaults.imports = [ ./modules/system ]; + defaults.imports = [ + ./modules/system + disko.nixosModules.disko + hm.nixosModules.home-manager + impermanence.nixosModules.impermanence + jovian.nixosModules.default + lanzaboote.nixosModules.lanzaboote + minecraft.nixosModules.minecraft-servers + ]; # Desktops tower.imports = [ ./hosts/tower ]; @@ -88,7 +103,6 @@ midas.imports = [ ./hosts/midas ]; kitty.imports = [ ./hosts/kitty ]; detritus.imports = [ ./hosts/detritus ]; - elder.imports = [ ./hosts/elder ]; prophet.imports = [ ./hosts/prophet ]; }; } diff --git a/hosts/detritus/boot/default.nix b/hosts/detritus/boot/default.nix index de4af487..a0b1cae3 100644 --- a/hosts/detritus/boot/default.nix +++ b/hosts/detritus/boot/default.nix @@ -2,10 +2,6 @@ { boot = { kernelPackages = pkgs.linuxPackages_hardened; - kernelParams = [ - "amdgpu.si_support=1" - "radeon.si_support=0" - ]; - loader.systemd-boot.enable = true; + loader.limine.enable = true; }; } diff --git a/hosts/detritus/default.nix b/hosts/detritus/default.nix index 8f265437..010d2eca 100644 --- a/hosts/detritus/default.nix +++ b/hosts/detritus/default.nix @@ -12,9 +12,11 @@ stateVersion = "25.05"; }; - deployment.targetHost = "5dd:9cd7:f286:e2c7:4c3b:c2e1:7832:97a3"; + deployment.targetHost = "53a:2092:12ff:889c:2e1f:1d79:f05a:cadd"; networking.hostId = "0917a5c1"; services.nfs.server.enable = true; + + virtualisation.libvirtd.enable = true; } diff --git a/hosts/detritus/disko/default.nix b/hosts/detritus/disko/default.nix index 69872c6c..09ce1b53 100644 --- a/hosts/detritus/disko/default.nix +++ b/hosts/detritus/disko/default.nix @@ -1,16 +1,15 @@ -{ config, disko, ... }: +{ config, name, ... }: { - imports = [ disko.nixosModules.disko ]; - disko.devices = { disk = { - "${config.networking.hostName}" = { + "${name}" = { type = "disk"; device = "/dev/sda"; content = { type = "gpt"; partitions = { boot = { + priority = 1; size = "1M"; type = "EF02"; }; @@ -28,7 +27,7 @@ size = "100%"; content = { type = "lvm_pv"; - vg = "${config.networking.hostName}"; + vg = "${name}"; }; }; }; @@ -37,7 +36,7 @@ }; lvm_vg = { - "${config.networking.hostName}" = { + "${name}" = { type = "lvm_vg"; lvs = { root = { diff --git a/hosts/detritus/filesystems/default.nix b/hosts/detritus/filesystems/default.nix index 57f1c404..63042a0a 100644 --- a/hosts/detritus/filesystems/default.nix +++ b/hosts/detritus/filesystems/default.nix @@ -10,7 +10,5 @@ "subvol=storage" ]; }; - - "detritus".enable = false; }; } diff --git a/hosts/elder/boot/default.nix b/hosts/elder/boot/default.nix deleted file mode 100644 index 20a7f4e7..00000000 --- a/hosts/elder/boot/default.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ pkgs, ... }: -{ - boot = { - kernelPackages = pkgs.linuxPackages_hardened; - kernelParams = [ - "amdgpu.si_support=1" - "radeon.si_support=0" - ]; - loader.grub.enable = true; - }; -} diff --git a/hosts/elder/default.nix b/hosts/elder/default.nix deleted file mode 100644 index 648248ee..00000000 --- a/hosts/elder/default.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ ... }: -{ - imports = [ - ./boot - ./disko - ./filesystems - ./hardware - ]; - - system = { - nixos.tags = [ "server" ]; - stateVersion = "25.05"; - }; - - deployment.targetHost = "570:3651:7f2:c26b:bccd:725b:be00:8a18"; - - networking.hostId = "447645a9"; - - services.nfs.server.enable = true; -} diff --git a/hosts/elder/disko/default.nix b/hosts/elder/disko/default.nix deleted file mode 100644 index 2191e808..00000000 --- a/hosts/elder/disko/default.nix +++ /dev/null @@ -1,100 +0,0 @@ -{ config, disko, ... }: -{ - imports = [ disko.nixosModules.disko ]; - - disko.devices = { - disk = { - "${config.networking.hostName}" = { - type = "disk"; - device = "/dev/sda"; - content = { - type = "gpt"; - partitions = { - boot = { - size = "1M"; - type = "EF02"; - }; - ESP = { - size = "2G"; - type = "EF00"; - content = { - type = "filesystem"; - format = "vfat"; - mountpoint = "/boot"; - mountOptions = [ "umask=0077" ]; - }; - }; - main = { - size = "100%"; - content = { - type = "lvm_pv"; - vg = "${config.networking.hostName}"; - }; - }; - }; - }; - }; - }; - - lvm_vg = { - "${config.networking.hostName}" = { - type = "lvm_vg"; - lvs = { - root = { - size = "100%"; - content = { - type = "btrfs"; - extraArgs = [ "-f" ]; - subvolumes = { - "/root" = { - mountpoint = "/"; - mountOptions = [ - "compress=zstd" - "ssd" - ]; - }; - "/prev" = { - mountpoint = "/prev"; - mountOptions = [ - "compress=zstd" - "noexec" - "ssd" - ]; - }; - "/nix" = { - mountpoint = "/nix"; - mountOptions = [ - "compress=zstd" - "ssd" - ]; - }; - - # Impermanence - "/persist" = { - mountpoint = "/persist"; - mountOptions = [ - "compress=zstd" - "ssd" - ]; - }; - "/persist/.snapshots" = { }; - "/persist/home" = { }; - "/persist/home/.snapshots" = { }; - }; - }; - }; - swap = { - size = "8G"; - content = { - type = "swap"; - discardPolicy = "both"; - }; - }; - }; - }; - }; - }; - - # Needed for impermanence - fileSystems."/persist".neededForBoot = true; -} diff --git a/hosts/elder/filesystems/default.nix b/hosts/elder/filesystems/default.nix deleted file mode 100644 index 0c254c44..00000000 --- a/hosts/elder/filesystems/default.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ ... }: -{ - fileSystems = { - "/persist/storage" = { - device = "/dev/disk/by-uuid/5c3c533b-1c70-4411-854a-37fa794fc17c"; - fsType = "btrfs"; - options = [ - "nofail" - "nosuid" - "subvol=storage" - ]; - }; - - "elder".enable = false; - }; -} diff --git a/hosts/elder/hardware/default.nix b/hosts/elder/hardware/default.nix deleted file mode 100644 index 6dcb3faa..00000000 --- a/hosts/elder/hardware/default.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ modulesPath, ... }: -{ - imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; - - boot = { - initrd = { - availableKernelModules = [ - "ahci" - "ehci_pci" - "sd_mod" - "sr_mod" - "uhci_hcd" - "usbhid" - ]; - kernelModules = [ "dm-snapshot" ]; - }; - kernelModules = [ "kvm-intel" ]; - }; - - hardware.cpu.intel.updateMicrocode = true; - - nixpkgs.hostPlatform = "x86_64-linux"; -} diff --git a/hosts/flight/boot/default.nix b/hosts/flight/boot/default.nix index bd399e82..2d553d61 100644 --- a/hosts/flight/boot/default.nix +++ b/hosts/flight/boot/default.nix @@ -1,8 +1,11 @@ -{ pkgs, ... }: +{ lib, pkgs, ... }: { boot = { - kernelPackages = pkgs.linuxPackages_latest; - loader.grub.enable = true; + kernelPackages = pkgs.linuxPackages; + loader.limine = { + enable = true; + biosDevice = lib.mkForce "/dev/disk/by-id/ata-XSTAR_SSD_64GB_XSFA2011000462"; + }; plymouth.enable = true; }; } diff --git a/hosts/flight/default.nix b/hosts/flight/default.nix index c3b0bc3b..fe3b545a 100644 --- a/hosts/flight/default.nix +++ b/hosts/flight/default.nix @@ -2,10 +2,9 @@ { imports = [ ./boot - ./disko ./filesystems ./hardware - ./services + ./root ./user ]; @@ -14,5 +13,5 @@ stateVersion = "25.05"; }; - deployment.targetHost = ""; + deployment.targetHost = "409:b2b1:966c:b13:6d67:2d6b:45e2:f048"; } diff --git a/hosts/flight/disko/default.nix b/hosts/flight/disko/default.nix deleted file mode 100644 index 4d195170..00000000 --- a/hosts/flight/disko/default.nix +++ /dev/null @@ -1,106 +0,0 @@ -{ config, disko, ... }: -{ - imports = [ disko.nixosModules.disko ]; - - disko.devices = { - disk = { - "${config.networking.hostName}" = { - type = "disk"; - device = "/dev/sda"; - content = { - type = "gpt"; - partitions = { - boot = { - size = "1M"; - type = "EF02"; - }; - ESP = { - size = "2G"; - type = "EF00"; - content = { - type = "filesystem"; - format = "vfat"; - mountpoint = "/boot"; - mountOptions = [ "umask=0077" ]; - }; - }; - luks = { - size = "100%"; - content = { - type = "luks"; - name = "${config.networking.hostName}-disk"; - settings.allowDiscards = true; - passwordFile = "/tmp/secret.key"; - content = { - type = "lvm_pv"; - vg = "${config.networking.hostName}"; - }; - }; - }; - }; - }; - }; - }; - - lvm_vg = { - "${config.networking.hostName}" = { - type = "lvm_vg"; - lvs = { - root = { - size = "100%"; - content = { - type = "btrfs"; - extraArgs = [ "-f" ]; - subvolumes = { - "/root" = { - mountpoint = "/"; - mountOptions = [ - "compress=zstd" - "ssd" - ]; - }; - "/prev" = { - mountpoint = "/prev"; - mountOptions = [ - "compress=zstd" - "noexec" - "ssd" - ]; - }; - "/nix" = { - mountpoint = "/nix"; - mountOptions = [ - "compress=zstd" - "ssd" - ]; - }; - - # Impermanence - "/persist" = { - mountpoint = "/persist"; - mountOptions = [ - "compress=zstd" - "ssd" - ]; - }; - "/persist/.snapshots" = { }; - "/persist/home" = { }; - "/persist/home/.snapshots" = { }; - }; - }; - }; - swap = { - size = "8G"; - content = { - type = "swap"; - discardPolicy = "both"; - }; - }; - }; - }; - }; - }; - - # Needed for impermanence - fileSystems."/persist".neededForBoot = true; -} diff --git a/hosts/flight/filesystems/default.nix b/hosts/flight/filesystems/default.nix index f02cc20b..8a568d0f 100644 --- a/hosts/flight/filesystems/default.nix +++ b/hosts/flight/filesystems/default.nix @@ -2,7 +2,7 @@ { fileSystems = { "/persist/storage" = { - device = "/dev/disk/by-uuid/d0d6783f-ad51-4d85-b8a9-3374f6460ef6"; + device = "/dev/disk/by-uuid/3d6f81f2-7fa5-40a2-85bb-56f4cab63773"; fsType = "btrfs"; options = [ "nofail" diff --git a/hosts/flight/hardware/default.nix b/hosts/flight/hardware/default.nix index ba47de8a..fa1b984c 100644 --- a/hosts/flight/hardware/default.nix +++ b/hosts/flight/hardware/default.nix @@ -1,22 +1,35 @@ -{ modulesPath, ... }: +{ config, modulesPath, ... }: { imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; boot = { initrd = { availableKernelModules = [ - "ahci" "ehci_pci" + "ahci" + "xhci_pci" + "usb_storage" "sd_mod" "sr_mod" - "xhci_pci" ]; kernelModules = [ "dm-snapshot" ]; }; kernelModules = [ "kvm-intel" ]; }; - hardware.cpu.intel.updateMicrocode = true; + services.xserver.videoDrivers = [ "nvidia" ]; + + hardware = { + cpu.intel.updateMicrocode = true; + nvidia = { + package = config.boot.kernelPackages.nvidiaPackages.legacy_390; + prime = { + sync.enable = true; + intelBusId = "PCI:0:2:0"; + nvidiaBusId = "PCI:1:0:0"; + }; + }; + }; nixpkgs.hostPlatform = "x86_64-linux"; } diff --git a/hosts/flight/root/default.nix b/hosts/flight/root/default.nix new file mode 100644 index 00000000..7bccd4b8 --- /dev/null +++ b/hosts/flight/root/default.nix @@ -0,0 +1,54 @@ +{ config, name, ... }: +{ + boot.initrd.luks.devices."${name}-disk".device = "/dev/disk/by-uuid/0fc43c11-c382-4e37-812b-8866b1b20e68"; + + fileSystems = { + "/boot" = { + device = "/dev/disk/by-uuid/FA96-EF11"; + fsType = "vfat"; + options = [ "umask=0077" ]; + }; + + "/" = { + device = "/dev/disk/by-uuid/bbaf733b-14af-417b-b1c8-2f0534995483"; + fsType = "btrfs"; + options = [ + "compress=zstd" + "ssd" + "subvol=root" + ]; + }; + "/prev" = { + device = "/dev/disk/by-uuid/bbaf733b-14af-417b-b1c8-2f0534995483"; + fsType = "btrfs"; + options = [ + "compress=zstd" + "noexec" + "ssd" + "subvol=prev" + ]; + }; + "/nix" = { + device = "/dev/disk/by-uuid/bbaf733b-14af-417b-b1c8-2f0534995483"; + fsType = "btrfs"; + options = [ + "compress=zstd" + "ssd" + "subvol=nix" + ]; + }; + + "/persist" = { + device = "/dev/disk/by-uuid/bbaf733b-14af-417b-b1c8-2f0534995483"; + fsType = "btrfs"; + neededForBoot = true; + options = [ + "compress=zstd" + "ssd" + "subvol=persist" + ]; + }; + }; + + swapDevices = [ { device = "/dev/disk/by-uuid/93ac8c5c-c947-4b45-a12a-146e87398517"; } ]; +} diff --git a/hosts/flight/services/default.nix b/hosts/flight/services/default.nix deleted file mode 100644 index 3c638bd3..00000000 --- a/hosts/flight/services/default.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ lib, ... }: -{ - networking.useNetworkd = lib.mkForce false; - - services.globalprotect.enable = true; - - virtualisation = { - libvirtd.enable = true; - vmware.host.enable = true; - }; -} diff --git a/hosts/flight/user/default.nix b/hosts/flight/user/default.nix index 43b57345..e408de6a 100644 --- a/hosts/flight/user/default.nix +++ b/hosts/flight/user/default.nix @@ -1,8 +1,7 @@ -{ config, ... }: +{ config, lib, ... }: { - home-manager.users."${config.vars.mainUser}".home = { - guifull.enable = true; - school.enable = true; - enableNixpkgsReleaseCheck = false; + home-manager.users."${config.vars.mainUser}" = { + home.guifull.enable = true; + wayland.windowManager.sway.extraSessionCommands = lib.mkForce ""; }; } diff --git a/hosts/hidden/boot/default.nix b/hosts/hidden/boot/default.nix index 85554c2c..1919dae1 100644 --- a/hosts/hidden/boot/default.nix +++ b/hosts/hidden/boot/default.nix @@ -2,7 +2,7 @@ { boot = { kernelPackages = pkgs.linuxPackages_6_14; - loader.systemd-boot.enable = true; + loader.limine.enable = true; plymouth.enable = true; }; } diff --git a/hosts/hidden/disko/default.nix b/hosts/hidden/disko/default.nix index c7209669..60a3aa22 100644 --- a/hosts/hidden/disko/default.nix +++ b/hosts/hidden/disko/default.nix @@ -1,16 +1,15 @@ -{ config, disko, ... }: +{ config, name, ... }: { - imports = [ disko.nixosModules.disko ]; - disko.devices = { disk = { - "${config.networking.hostName}" = { + "${name}" = { type = "disk"; device = "/dev/sda"; content = { type = "gpt"; partitions = { boot = { + priority = 1; size = "1M"; type = "EF02"; }; @@ -28,12 +27,12 @@ size = "100%"; content = { type = "luks"; - name = "${config.networking.hostName}-disk"; + name = "${name}-disk"; settings.allowDiscards = true; passwordFile = "/tmp/secret.key"; content = { type = "lvm_pv"; - vg = "${config.networking.hostName}"; + vg = "${name}"; }; }; }; @@ -43,7 +42,7 @@ }; lvm_vg = { - "${config.networking.hostName}" = { + "${name}" = { type = "lvm_vg"; lvs = { root = { diff --git a/hosts/intuos/disko/default.nix b/hosts/intuos/disko/default.nix index 4d195170..e204a376 100644 --- a/hosts/intuos/disko/default.nix +++ b/hosts/intuos/disko/default.nix @@ -1,16 +1,15 @@ -{ config, disko, ... }: +{ config, name, ... }: { - imports = [ disko.nixosModules.disko ]; - disko.devices = { disk = { - "${config.networking.hostName}" = { + "${name}" = { type = "disk"; device = "/dev/sda"; content = { type = "gpt"; partitions = { boot = { + priority = 1; size = "1M"; type = "EF02"; }; @@ -28,12 +27,12 @@ size = "100%"; content = { type = "luks"; - name = "${config.networking.hostName}-disk"; + name = "${name}-disk"; settings.allowDiscards = true; passwordFile = "/tmp/secret.key"; content = { type = "lvm_pv"; - vg = "${config.networking.hostName}"; + vg = "${name}"; }; }; }; @@ -43,7 +42,7 @@ }; lvm_vg = { - "${config.networking.hostName}" = { + "${name}" = { type = "lvm_vg"; lvs = { root = { diff --git a/hosts/jupiter/boot/default.nix b/hosts/jupiter/boot/default.nix index ff9d9cee..17b17837 100644 --- a/hosts/jupiter/boot/default.nix +++ b/hosts/jupiter/boot/default.nix @@ -2,7 +2,7 @@ { boot = { kernelPackages = pkgsStable.linuxPackages_6_14; - loader.systemd-boot.enable = true; + loader.limine.enable = true; plymouth.enable = true; }; } diff --git a/hosts/jupiter/default.nix b/hosts/jupiter/default.nix index 0f4db580..7271d00e 100644 --- a/hosts/jupiter/default.nix +++ b/hosts/jupiter/default.nix @@ -17,5 +17,5 @@ deployment.targetHost = "5ce:969c:40d1:9575:f5e:591d:c377:a20b"; - #jovian.steam.enable = true; + jovian.steam.enable = true; } diff --git a/hosts/jupiter/disko/default.nix b/hosts/jupiter/disko/default.nix index 900c8a59..abb7808a 100644 --- a/hosts/jupiter/disko/default.nix +++ b/hosts/jupiter/disko/default.nix @@ -1,16 +1,15 @@ -{ config, disko, ... }: +{ config, name, ... }: { - imports = [ disko.nixosModules.disko ]; - disko.devices = { disk = { - "${config.networking.hostName}" = { + "${name}" = { type = "disk"; device = "/dev/nvme0n1"; content = { type = "gpt"; partitions = { boot = { + priority = 1; size = "1M"; type = "EF02"; }; @@ -28,7 +27,7 @@ size = "100%"; content = { type = "lvm_pv"; - vg = "${config.networking.hostName}"; + vg = "${name}"; }; }; }; @@ -37,7 +36,7 @@ }; lvm_vg = { - "${config.networking.hostName}" = { + "${name}" = { type = "lvm_vg"; lvs = { root = { diff --git a/hosts/jupiter/jovian/default.nix b/hosts/jupiter/jovian/default.nix index ec180913..b8d075e9 100644 --- a/hosts/jupiter/jovian/default.nix +++ b/hosts/jupiter/jovian/default.nix @@ -1,9 +1,6 @@ { config, lib, pkgs, jovian, ... }: { - imports = [ - ./gnome - jovian.nixosModules.default - ]; + imports = [ ./desktop ]; config = lib.mkIf config.jovian.steam.enable { jovian = { @@ -21,23 +18,31 @@ }; }; - boot = { - kernelPackages = lib.mkForce pkgs.linuxPackages_jovian; - kernelParams = [ "amd_pstate=active" ]; - }; + # Evil kernel + boot.kernelPackages = lib.mkForce pkgs.linuxPackages_jovian; programs.steam.extest.enable = true; + hardware.xone.enable = true; + + # Use networkmanager for ui compatibility + networking = { + networkmanager.enable = true; + wireless.enable = lib.mkForce false; + }; + + # Disable conflicting services services = { keyd.enable = lib.mkForce false; tlp.enable = lib.mkForce false; }; - hardware.xone.enable = true; - - networking = { - networkmanager.enable = true; - wireless.enable = lib.mkForce false; + # Disable network filesystems + fileSystems = { + "midas".enable = false; + "kitty".enable = false; + "detritus".enable = false; + "prophet".enable = false; }; environment.persistence."/persist".directories = [ diff --git a/hosts/jupiter/jovian/gnome/default.nix b/hosts/jupiter/jovian/desktop/default.nix similarity index 100% rename from hosts/jupiter/jovian/gnome/default.nix rename to hosts/jupiter/jovian/desktop/default.nix diff --git a/hosts/kitty/boot/default.nix b/hosts/kitty/boot/default.nix index e21b5c06..a0b1cae3 100644 --- a/hosts/kitty/boot/default.nix +++ b/hosts/kitty/boot/default.nix @@ -2,6 +2,6 @@ { boot = { kernelPackages = pkgs.linuxPackages_hardened; - loader.systemd-boot.enable = true; + loader.limine.enable = true; }; } diff --git a/hosts/kitty/disko/default.nix b/hosts/kitty/disko/default.nix index 2191e808..5959c753 100644 --- a/hosts/kitty/disko/default.nix +++ b/hosts/kitty/disko/default.nix @@ -1,16 +1,15 @@ -{ config, disko, ... }: +{ config, name, ... }: { - imports = [ disko.nixosModules.disko ]; - disko.devices = { disk = { - "${config.networking.hostName}" = { + "${name}" = { type = "disk"; - device = "/dev/sda"; + device = "/dev/disk/by-id/ata-KINGSTON_SA400S37120G_50026B7783DBB232"; content = { type = "gpt"; partitions = { boot = { + priority = 1; size = "1M"; type = "EF02"; }; @@ -28,7 +27,7 @@ size = "100%"; content = { type = "lvm_pv"; - vg = "${config.networking.hostName}"; + vg = "${name}"; }; }; }; @@ -37,7 +36,7 @@ }; lvm_vg = { - "${config.networking.hostName}" = { + "${name}" = { type = "lvm_vg"; lvs = { root = { diff --git a/hosts/kitty/filesystems/default.nix b/hosts/kitty/filesystems/default.nix index 2ed8bf2c..0e452e07 100644 --- a/hosts/kitty/filesystems/default.nix +++ b/hosts/kitty/filesystems/default.nix @@ -9,7 +9,5 @@ "nosuid" ]; }; - - "kitty".enable = false; }; } diff --git a/hosts/midas/disko/default.nix b/hosts/midas/disko/default.nix index 60e95465..7978befb 100644 --- a/hosts/midas/disko/default.nix +++ b/hosts/midas/disko/default.nix @@ -1,16 +1,15 @@ -{ config, disko, ... }: +{ config, name, ... }: { - imports = [ disko.nixosModules.disko ]; - disko.devices = { disk = { - "${config.networking.hostName}" = { + "${name}" = { type = "disk"; - device = "/dev/nvme0n1"; + device = "/dev/disk/by-id/nvme-eui.00080d03001365cc"; content = { type = "gpt"; partitions = { boot = { + priority = 1; size = "1M"; type = "EF02"; }; @@ -28,12 +27,12 @@ size = "100%"; content = { type = "luks"; - name = "${config.networking.hostName}-disk"; + name = "${name}-disk"; settings.allowDiscards = true; passwordFile = "/tmp/secret.key"; content = { type = "lvm_pv"; - vg = "${config.networking.hostName}"; + vg = "${name}"; }; }; }; @@ -43,7 +42,7 @@ }; lvm_vg = { - "${config.networking.hostName}" = { + "${name}" = { type = "lvm_vg"; lvs = { root = { diff --git a/hosts/midas/filesystems/default.nix b/hosts/midas/filesystems/default.nix index 96197c20..3048a803 100644 --- a/hosts/midas/filesystems/default.nix +++ b/hosts/midas/filesystems/default.nix @@ -10,7 +10,5 @@ "subvol=persist" ]; }; - - "midas".enable = false; }; } diff --git a/hosts/midas/services/default.nix b/hosts/midas/services/default.nix index 439e9348..cddcad85 100644 --- a/hosts/midas/services/default.nix +++ b/hosts/midas/services/default.nix @@ -5,6 +5,7 @@ services = { cloudflare-dyndns.enable = true; forgejo.enable = true; + hedgedoc.enable = true; icecast.enable = true; jellyfin.enable = true; mastodon.enable = true; diff --git a/hosts/prophet/boot/default.nix b/hosts/prophet/boot/default.nix index 7b5230b7..5c3db6a2 100644 --- a/hosts/prophet/boot/default.nix +++ b/hosts/prophet/boot/default.nix @@ -3,6 +3,6 @@ boot = { binfmt.emulatedSystems = [ "x86_64-linux" ]; kernelPackages = pkgs.linuxPackages_hardened; - loader.systemd-boot.enable = true; + loader.limine.enable = true; }; } diff --git a/hosts/prophet/disko/default.nix b/hosts/prophet/disko/default.nix index 4961d53b..aad74c04 100644 --- a/hosts/prophet/disko/default.nix +++ b/hosts/prophet/disko/default.nix @@ -1,16 +1,15 @@ -{ config, disko, ... }: +{ config, name, ... }: { - imports = [ disko.nixosModules.disko ]; - disko.devices = { disk = { - "${config.networking.hostName}" = { + "${name}" = { type = "disk"; - device = "/dev/nvme0n1"; + device = "/dev/disk/by-id/scsi-3609c958403f14cd29ff94a5a2e405cc2"; content = { type = "gpt"; partitions = { boot = { + priority = 1; size = "1M"; type = "EF02"; }; @@ -28,7 +27,7 @@ size = "100%"; content = { type = "lvm_pv"; - vg = "${config.networking.hostName}"; + vg = "${name}"; }; }; }; @@ -37,7 +36,7 @@ }; lvm_vg = { - "${config.networking.hostName}" = { + "${name}" = { type = "lvm_vg"; lvs = { root = { diff --git a/hosts/prophet/filesystems/default.nix b/hosts/prophet/filesystems/default.nix index c6d09166..dda781b9 100644 --- a/hosts/prophet/filesystems/default.nix +++ b/hosts/prophet/filesystems/default.nix @@ -9,7 +9,5 @@ "nosuid" ]; }; - - "prophet".enable = false; }; } diff --git a/hosts/tower/default.nix b/hosts/tower/default.nix index 2c073669..bb1ea3e0 100644 --- a/hosts/tower/default.nix +++ b/hosts/tower/default.nix @@ -15,7 +15,5 @@ deployment.targetHost = "4e4:535:9d47:f367:becd:6557:458d:5b1b"; - services.xserver.videoDrivers = [ "nvidia" ]; - virtualisation.libvirtd.enable = true; } diff --git a/hosts/tower/disko/default.nix b/hosts/tower/disko/default.nix index b4d328cf..72540892 100644 --- a/hosts/tower/disko/default.nix +++ b/hosts/tower/disko/default.nix @@ -1,16 +1,15 @@ -{ config, disko, ... }: +{ config, name, ... }: { - imports = [ disko.nixosModules.disko ]; - disko.devices = { disk = { - "${config.networking.hostName}" = { + "${name}" = { type = "disk"; - device = "/dev/nvme0n1"; + device = "/dev/disk/by-id/nvme-INTEL_SSDPEKNU512GZ_BTKA20550TKC512A"; content = { type = "gpt"; partitions = { boot = { + priority = 1; size = "1M"; type = "EF02"; }; @@ -28,12 +27,12 @@ size = "100%"; content = { type = "luks"; - name = "${config.networking.hostName}-disk"; + name = "${name}-disk"; settings.allowDiscards = true; passwordFile = "/tmp/secret.key"; content = { type = "lvm_pv"; - vg = "${config.networking.hostName}"; + vg = "${name}"; }; }; }; @@ -43,7 +42,7 @@ }; lvm_vg = { - "${config.networking.hostName}" = { + "${name}" = { type = "lvm_vg"; lvs = { root = { diff --git a/hosts/tower/filesystems/default.nix b/hosts/tower/filesystems/default.nix index 37db4d04..0f983e1b 100644 --- a/hosts/tower/filesystems/default.nix +++ b/hosts/tower/filesystems/default.nix @@ -3,24 +3,32 @@ fileSystems = { # Games and such "/mnt/Linux1" = { - device = "/dev/disk/by-uuid/b2901f8c-ffda-4b88-bb63-a9ea0c96ccb4"; - fsType = "ext4"; + device = "/dev/disk/by-label/Linux1"; + fsType = "btrfs"; options = [ "nofail" "nosuid" ]; }; "/mnt/Linux2" = { - device = "/dev/disk/by-uuid/f08e4f38-162c-402f-ba2a-5925151b78bf"; - fsType = "ext4"; + device = "/dev/disk/by-label/Linux2"; + fsType = "btrfs"; options = [ "nofail" "nosuid" ]; }; "/mnt/Linux3" = { - device = "/dev/disk/by-uuid/e7bc75bd-c371-4b28-b212-7be9b1fad339"; - fsType = "ext4"; + device = "/dev/disk/by-label/Linux3"; + fsType = "btrfs"; + options = [ + "nofail" + "nosuid" + ]; + }; + "/mnt/Linux4" = { + device = "/dev/disk/by-label/Linux4"; + fsType = "btrfs"; options = [ "nofail" "nosuid" diff --git a/hosts/tower/hardware/default.nix b/hosts/tower/hardware/default.nix index 37c93ab7..a374acd5 100644 --- a/hosts/tower/hardware/default.nix +++ b/hosts/tower/hardware/default.nix @@ -16,6 +16,8 @@ kernelModules = [ "kvm-amd" ]; }; + services.xserver.videoDrivers = [ "nvidia" ]; + hardware.cpu.amd.updateMicrocode = true; nixpkgs.hostPlatform = "x86_64-linux"; diff --git a/hosts/tower/user/default.nix b/hosts/tower/user/default.nix index 0f9048b5..bdfb086b 100644 --- a/hosts/tower/user/default.nix +++ b/hosts/tower/user/default.nix @@ -1,7 +1,4 @@ -{ config, lib, ... }: +{ config, ... }: { - home-manager.users."${config.vars.mainUser}" = { - home.guifull.enable = true; - services.swayidle.enable = lib.mkForce false; - }; + home-manager.users."${config.vars.mainUser}".home.guifull.enable = true; } diff --git a/modules/home/programs/terminal/ranger/default.nix b/modules/home/programs/terminal/ranger/default.nix index 942fb179..0cc9a969 100644 --- a/modules/home/programs/terminal/ranger/default.nix +++ b/modules/home/programs/terminal/ranger/default.nix @@ -1,11 +1,11 @@ -{ config, lib, pkgs, ... }: +{ config, lib, pkgs, pkgsUnstable, ... }: { programs.ranger = { enable = true; - #package = pkgs.ranger; + package = pkgsUnstable.ranger; settings = { preview_images = true; - #preview_images_method = "sixel"; + preview_images_method = "sixel"; dirname_in_tabs = true; autosave_bookmarks = false; show_hidden = true; diff --git a/modules/home/variables/displays/default.nix b/modules/home/variables/displays/default.nix index e923dc96..44f7e4eb 100644 --- a/modules/home/variables/displays/default.nix +++ b/modules/home/variables/displays/default.nix @@ -2,11 +2,11 @@ { vars.displays = { tower1 = "Microstep MSI G24C 0000000000001"; - tower2 = "BNQ BenQ GW2270 6CH00781019"; + tower2 = "Dell Inc. DELL P2214H KW14V4965YKS"; tower3 = "Eizo Nanao Corporation CG223W 23252050"; - tower4 = "Samsung Electric Company SAMSUNG Unknown"; + tower4 = "Sony SONY TV 0x01010101"; - detritus1 = "Dell Inc. DELL P2214H KW14V4965YKS"; - detritus2 = "HannStar Display Corp iP192A 051AW1WY03797"; + intuos1 = "Wacom Tech Cintiq W1310 MIRACULIX"; + intuos2 = "BNQ BenQ GW2270 6CH00781019"; }; } diff --git a/modules/home/wms/programs/kanshi/default.nix b/modules/home/wms/programs/kanshi/default.nix index 0d18aa3d..235b9aa9 100644 --- a/modules/home/wms/programs/kanshi/default.nix +++ b/modules/home/wms/programs/kanshi/default.nix @@ -11,6 +11,13 @@ mode = "1920x1080@143.979996Hz"; }; } + { + output = { + criteria = tower3; + mode = "1680x1050@59.883"; + transform = "90"; + }; + } # Profiles { @@ -20,19 +27,22 @@ { criteria = tower1; position = "3840,405"; + status = "enable"; } { criteria = tower2; position = "1920,405"; + status = "enable"; } { criteria = tower3; position = "5760,0"; - transform = "90"; + status = "enable"; } { criteria = tower4; position = "0,405"; + status = "enable"; } ]; }; @@ -44,49 +54,34 @@ { criteria = tower1; position = "1920,405"; + status = "enable"; } { criteria = tower2; position = "0,405"; + status = "enable"; } { criteria = tower3; position = "3840,0"; - transform = "90"; - } - ]; - }; - } - - { - profile = { - name = "detritus"; - outputs = [ - { - criteria = detritus1; - position = "0,0"; - } - { - criteria = detritus2; - position = "1920,0"; - scale = 0.85; - } - ]; - }; - } - - { - profile = { - name = "byod"; - outputs = [ - { - criteria = "Dell Inc. DELL U3423WE H8LGMP3"; - scale = 1.15; status = "enable"; } + ]; + }; + } + + { + profile = { + name = "intuos"; + outputs = [ { - criteria = "eDP-1"; - status = "disable"; + criteria = intuos1; + position = "1920,278"; + scale = 1.80; + } + { + criteria = intuos2; + position = "0,0"; } ]; }; diff --git a/modules/home/wms/programs/waybar/default.nix b/modules/home/wms/programs/waybar/default.nix index ad68a398..1ddb8963 100644 --- a/modules/home/wms/programs/waybar/default.nix +++ b/modules/home/wms/programs/waybar/default.nix @@ -238,7 +238,7 @@ output = [ "!${config.vars.displays.tower2}" "!${config.vars.displays.tower3}" - "!${config.vars.displays.detritus2}" + "!${config.vars.displays.intuos2}" "*" ]; modules-left = [ @@ -273,7 +273,7 @@ output = [ config.vars.displays.tower2 config.vars.displays.tower3 - config.vars.displays.detritus2 + config.vars.displays.intuos2 ]; modules-left = [ "sway/workspaces" diff --git a/modules/home/wms/sway/inputs/default.nix b/modules/home/wms/sway/inputs/default.nix index 512ce6de..7b27d603 100644 --- a/modules/home/wms/sway/inputs/default.nix +++ b/modules/home/wms/sway/inputs/default.nix @@ -1,13 +1,12 @@ -{ ... }: +{ config, ... }: { # HID devices wayland.windowManager.sway.config.input = { - "9610:4103:SINOWEALTH_Game_Mouse" = { - pointer_accel = "-0.9"; - }; - "9639:64097:Compx_2.4G_Receiver_Mouse" = { - pointer_accel = "-0.82"; - }; + "9610:4103:SINOWEALTH_Game_Mouse".pointer_accel = "-0.9"; + "9639:64097:Compx_2.4G_Receiver_Mouse".pointer_accel = "-0.82"; + "type:touch".map_to_output = ''"${config.vars.displays.intuos1}"''; + + # Wildcard, affects everything "*" = { accel_profile = "flat"; dwt = "disabled"; diff --git a/modules/home/wms/sway/outputs/default.nix b/modules/home/wms/sway/outputs/default.nix index 8416e7dd..cd954b47 100644 --- a/modules/home/wms/sway/outputs/default.nix +++ b/modules/home/wms/sway/outputs/default.nix @@ -38,6 +38,11 @@ (assign "${tower1}" workspaces1) ++ (assign "${tower2}" workspaces2) ++ (assign "${tower3}" workspaces3) ++ - (assign "${tower4}" workspaces4); + (assign "${tower4}" workspaces4) ++ + + (assign "${intuos2}" workspaces1) ++ + (assign "${intuos2}" workspaces2) ++ + (assign "${intuos1}" workspaces3) ++ + (assign "${intuos1}" workspaces4); }; } diff --git a/modules/system/devices/boot/default.nix b/modules/system/devices/boot/default.nix index 40fd3718..9a139f45 100644 --- a/modules/system/devices/boot/default.nix +++ b/modules/system/devices/boot/default.nix @@ -1,19 +1,16 @@ { lib, pkgs, ... }: { imports = [ - ./grub ./lanzaboote + ./limine ./plymouth ./services - ./systemd ]; boot = { - kernelPackages = lib.mkDefault pkgs.linuxPackages_latest; blacklistedKernelModules = [ "pcspkr" ]; - kernel.sysctl = { - "vm.max_map_count" = 2147483642; - "kernel.sysrq" = 1; - }; + kernel.sysctl."vm.max_map_count" = 2147483642; + kernelPackages = lib.mkDefault pkgs.linuxPackages_latest; + loader.systemd-boot.editor = false; }; } diff --git a/modules/system/devices/boot/grub/default.nix b/modules/system/devices/boot/grub/default.nix deleted file mode 100644 index 99105e9c..00000000 --- a/modules/system/devices/boot/grub/default.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ lib, ... }: -{ - boot.loader.grub = { - enable = lib.mkDefault false; - efiSupport = true; - efiInstallAsRemovable = true; - }; -} diff --git a/modules/system/devices/boot/lanzaboote/default.nix b/modules/system/devices/boot/lanzaboote/default.nix index b3eb4940..796a3a40 100644 --- a/modules/system/devices/boot/lanzaboote/default.nix +++ b/modules/system/devices/boot/lanzaboote/default.nix @@ -1,7 +1,5 @@ -{ config, pkgs, lanzaboote, ... }: +{ config, pkgs, ... }: { - imports = [ lanzaboote.nixosModules.lanzaboote ]; - boot.lanzaboote.pkiBundle = "/etc/secureboot"; environment = { diff --git a/modules/system/devices/boot/limine/default.nix b/modules/system/devices/boot/limine/default.nix new file mode 100644 index 00000000..20024f19 --- /dev/null +++ b/modules/system/devices/boot/limine/default.nix @@ -0,0 +1,8 @@ +{ config, pkgs, name, ... }: +{ + boot.loader.limine = { + biosSupport = !pkgs.stdenv.hostPlatform.isAarch64; + efiInstallAsRemovable = true; + efiSupport = true; + }; +} diff --git a/modules/system/devices/boot/plymouth/default.nix b/modules/system/devices/boot/plymouth/default.nix index 993a6e6f..1586477a 100644 --- a/modules/system/devices/boot/plymouth/default.nix +++ b/modules/system/devices/boot/plymouth/default.nix @@ -2,7 +2,6 @@ { config.boot = lib.mkIf config.boot.plymouth.enable { consoleLogLevel = 0; - loader.timeout = 0; initrd.verbose = false; kernelParams = [ "loglevel=3" diff --git a/modules/system/devices/boot/services/root-reset/default.nix b/modules/system/devices/boot/services/root-reset/default.nix index 44d2a1b7..632066ed 100644 --- a/modules/system/devices/boot/services/root-reset/default.nix +++ b/modules/system/devices/boot/services/root-reset/default.nix @@ -1,4 +1,4 @@ -{ config, ... }: +{ config, name, ... }: { boot.initrd.systemd.services.root-reset = { enable = config.environment.persistence."/persist".enable; @@ -10,7 +10,7 @@ serviceConfig.Type = "oneshot"; script = '' mkdir -p /mnt - mount -t btrfs /dev/${config.networking.hostName}/root /mnt + mount -t btrfs /dev/${name}/root /mnt if [[ -e /mnt/prev ]]; then btrfs subvolume delete /mnt/prev diff --git a/modules/system/devices/boot/systemd/default.nix b/modules/system/devices/boot/systemd/default.nix deleted file mode 100644 index bc13baff..00000000 --- a/modules/system/devices/boot/systemd/default.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ ... }: -{ - boot.loader.systemd-boot = { - editor = false; - graceful = true; - }; -} diff --git a/modules/system/devices/disks/filesystems/default.nix b/modules/system/devices/disks/filesystems/default.nix index 71fe167e..20d77e04 100644 --- a/modules/system/devices/disks/filesystems/default.nix +++ b/modules/system/devices/disks/filesystems/default.nix @@ -11,9 +11,9 @@ }; }; - services = lib.mkIf config.environment.persistence."/persist".enable { + services = { btrfs.autoScrub = { - enable = true; + enable = (config.fileSystems."/".fsType == "btrfs"); interval = "weekly"; }; fstrim.enable = true; diff --git a/modules/system/devices/disks/impermanence/default.nix b/modules/system/devices/disks/impermanence/default.nix index 9c555679..8f6d1794 100644 --- a/modules/system/devices/disks/impermanence/default.nix +++ b/modules/system/devices/disks/impermanence/default.nix @@ -1,12 +1,17 @@ -{ impermanence, ... }: +{ ... }: { - imports = [ impermanence.nixosModules.impermanence ]; - environment.persistence."/persist" = { hideMounts = true; directories = [ "/storage" - "/var/lib/nixos" + { + directory = "/var/lib/nixos"; + mode = "0700"; + } + { + directory = "/var/lib/nixos-containers"; + mode = "0700"; + } ]; files = [ "/etc/machine-id" ]; }; diff --git a/modules/system/devices/networking/hosts/default.nix b/modules/system/devices/networking/hosts/default.nix index 0be8aad1..c2f38678 100644 --- a/modules/system/devices/networking/hosts/default.nix +++ b/modules/system/devices/networking/hosts/default.nix @@ -12,7 +12,6 @@ "${midas.config.deployment.targetHost}" = [ "midas" ]; "${kitty.config.deployment.targetHost}" = [ "kitty" ]; "${detritus.config.deployment.targetHost}" = [ "detritus" ]; - "${elder.config.deployment.targetHost}" = [ "elder" ]; "${prophet.config.deployment.targetHost}" = [ "prophet" ]; }; } diff --git a/modules/system/devices/networking/mounts/default.nix b/modules/system/devices/networking/mounts/default.nix index ef41e273..b8e7913a 100644 --- a/modules/system/devices/networking/mounts/default.nix +++ b/modules/system/devices/networking/mounts/default.nix @@ -2,8 +2,9 @@ { fileSystems = let common = { - fsType = "nfs4"; + fsType = "nfs"; options = [ + "noatime" "noauto" "soft" "x-systemd.automount" @@ -22,10 +23,6 @@ device = "detritus:/storage"; mountPoint = "/network/Detritus"; }; - "elder" = common // { - device = "elder:/storage"; - mountPoint = "/network/Elder"; - }; "prophet" = common // { device = "prophet:/storage"; mountPoint = "/network/Prophet"; diff --git a/modules/system/devices/video/amd/default.nix b/modules/system/devices/video/amd/default.nix new file mode 100644 index 00000000..8d349fec --- /dev/null +++ b/modules/system/devices/video/amd/default.nix @@ -0,0 +1,6 @@ +{ ... }: +{ + boot.kernelParams = [ "amd_pstate=active" ]; + + hardware.amdgpu.legacySupport.enable = true; +} diff --git a/modules/system/devices/video/default.nix b/modules/system/devices/video/default.nix index 6db0c37f..d4d981ae 100644 --- a/modules/system/devices/video/default.nix +++ b/modules/system/devices/video/default.nix @@ -1,6 +1,9 @@ { config, pkgs, ... }: { - imports = [ ./nvidia ]; + imports = [ + ./amd + ./nvidia + ]; hardware.graphics = { enable = builtins.elem "pc" config.system.nixos.tags; diff --git a/modules/system/devices/video/nvidia/default.nix b/modules/system/devices/video/nvidia/default.nix index 261ba237..ebc7cd42 100644 --- a/modules/system/devices/video/nvidia/default.nix +++ b/modules/system/devices/video/nvidia/default.nix @@ -8,10 +8,14 @@ hardware.nvidia = { modesetting.enable = true; nvidiaSettings = false; - open = true; + open = if lib.versionOlder config.hardware.nvidia.package.version "560" then false else true; + powerManagement.enable = config.hardware.nvidia.open; }; - nixpkgs.allowUnfreePackages = [ "nvidia-x11" ]; + nixpkgs = { + allowUnfreePackages = [ "nvidia-x11" ]; + config.nvidia.acceptLicense = true; + }; specialisation = lib.mkIf (lib.elem "nvidia" config.services.xserver.videoDrivers) { nouveau.configuration.config.services.xserver.videoDrivers = lib.mkForce [ "nouveau" ]; diff --git a/modules/system/programs/home-manager/default.nix b/modules/system/programs/home-manager/default.nix index d7e2ce31..b72752ef 100644 --- a/modules/system/programs/home-manager/default.nix +++ b/modules/system/programs/home-manager/default.nix @@ -1,7 +1,5 @@ -{ hm, stable, unstable, blender, impermanence, nur, ... }: +{ stable, unstable, blender, impermanence, nur, ... }: { - imports = [ hm.nixosModules.home-manager ]; - home-manager = { useUserPackages = true; backupFileExtension = "bak"; diff --git a/modules/system/secrets/networks/default.nix b/modules/system/secrets/networks/default.nix index 78d2b0bb0b14dfdd69985df99a64b531b8ce93a1..23f458ada08bdb0d3125ba0805290739c9dd50ec 100644 GIT binary patch literal 1464 zcmZQ@_Y83kiVO&0__OQd9G|(h%X`}1Pki=DA@{qjzr@R0dGFR!6V^UplHO@_W?Rv- zYl#`BOrKTllV0>fsWb>%PS*%$4qD<(K!Tx*)` zy*RGExaUH3{d*3R3qKnenSU1UJ#)c`U!wN>4%_$x2R^-=>HEmvaz@HKM|REX$A=uQ zvt%&TAABddRd~j!D*{h{9NjpN+4Glw&jtOrI;ZmY$h@KDK9Wv8v|mS%+V4y-}@t=49A^YwK=}+xtF*a!ldMZ}&(cV$Vaz0F~|1KT&V3_Rm+J za$?0C#{c~{kL52q`}lvxpZr_@-aObeA#0`FHjBq9ewsIT^s3K$F?aU2;MvmuBj#xa zIM(PqPMImjF>|ex%gNjEUyWx(Jn^bCQ{DL?+}m-l&qtQa$=79`);Q_c@}+Z&8C6P{g};{JA%Q>Q`M%QyTkc`T*|i{;BDZy)bCBqd|7b>nV$l*Xc}Uym(yl z%tMPbrd6pG+bZv>^#2vVExR?LJM552#-2jOjNJI&Z*^K%GVkr*AfFTZSY9tg{QK0m zxo^C>o^4To>V4?x;;sD?KVM^6SI|F2$nCc^#YUOBI>UT$YJuI+-aXlabAI&#}~G--qQoTW{|cuYC7UXI+Hc zk#O(%Z_@aUw^z2Xn!4QH<|*-L=E;TY7q#44B)t`_~uTfykqnR-m%3&)BztcmgGqGNxw zuec)hCL(moa>2qWjX&7;wI1fI=s!CBsS5K0W8VgayV3D-$}JV%Ydn`n9qXv%2|QF( zcJ1=A*1ubR9Wi&iUu)^-L5R-OR>H$~MB literal 1205 zcmZQ@_Y83kiVO&0Q0iq`yM<{^@~NX%e*NEe3UVBpVy`-rNA+vzTT2nus9$r7I>Z`x zP4Wym~4jEPr>E3IpwB1(=S(L@$Q=NWm)=1W&z&cl4Ty6v#i)kH~M;Azw$w$ z;%|ic^VFp$AHRG2H!W5@T$C?;Momllik4N&zWje_V3pW(xgnuro|eb`d(qzd)xQjz z>uxdRK0R~fe}h(!y#6|eJ+X;`A8go@WE*cRUjOrvH9xmf@z;*1_7m&V_rH+e*RA|G z`;-n}{k#|Qi=3|KC2nl~VwV>bV4WDkb$#|Wrcdm zn>;Pzz>kVG7Z)7j}9GzLeFH}Wd+u~V&ZD}H}(5;O{_Ug~IPR>ntH|$wB>2Q3CKKC_&^%@uC z=P@0V`+Ze!g5C9~rd@4k@2_~f@0G;Qje;SQdUpArY^a^J?Q135-lzWyd0wT>5qY*J z)!F<(?lc|u$z8WsR*Sx~FLd93^L5wV&6(UUcmAmQ`2E~NjjZP@Z(RNqA+ai4GSXD% z?87yLw)xz~bHx-ANxebEwt& zT+Ey8di}S;TJ4;kin(*XJ#Ts#V|QJUB&v}4XR&$cSprhDo>x0s() z_V3#EcXRs@xlH!;?HnP;ScG0)WH*ztn4YQgkxTJpgjdOV##phrSJ%e=+SYAUCil(Z z#fp_n^io#O_|*Awo5a;WjNK+Wl>)9-;@{-AX?B(s-0EAa%<^UGLN=~2{r_R{Z=Nw5 z&Z)ay@}Vbc;zWNT^9Mc)?#$k~asm6QD(B2M+BqCg1QM6-WXt~c;r!ds6oHqMllLS% zp1Aym+}oL#KiM5$+v$JsZ;4g~3pfAI)u+B5>nX3{oYvF(=2nGF%rlv*+j9B8nyp*+ zXvTJyT`KRiEEa9EEHVA`c6MjY?SRX_A{JFTBxJV4G$piV^BON-)+$ms`Q+0LjJhrP zRoZ74rtt)9YF~eRIn&SA(^hrmR~4{|ZRa}nv3%;i8zxWFWk27$z%=*9uO-b7#W($N zo^M>36zdd==X6Qx#+_CT4i-N-cvjR2FJKXfyB=I-?Sh@dw eA^9y4ReL(3YSdi59QJx4{;cMPt-+T`jLZO9U0;a+ diff --git a/modules/system/services/general/libvirtd/default.nix b/modules/system/services/general/libvirtd/default.nix index bbf47a4e..0ff033dc 100644 --- a/modules/system/services/general/libvirtd/default.nix +++ b/modules/system/services/general/libvirtd/default.nix @@ -20,7 +20,8 @@ "pci=routeirq" ]; - programs.virt-manager.enable = true; + # Enable the gui manager + programs.virt-manager.enable = builtins.elem "pc" config.system.nixos.tags; # Allow looking glass to be accessed by users systemd.tmpfiles.rules = [ "f /dev/shm/looking-glass 0660 - libvirtd -" ]; diff --git a/modules/system/services/general/ssh/default.nix b/modules/system/services/general/ssh/default.nix index 90bd0dee..3616641c 100644 --- a/modules/system/services/general/ssh/default.nix +++ b/modules/system/services/general/ssh/default.nix @@ -11,7 +11,17 @@ }; }; - programs.ssh.startAgent = true; + programs.ssh = { + startAgent = true; + + # Don't host prompt for servers + knownHosts = { + midas.publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFcFMvrx9/iUZ1mEubf+QF1i3LNTxFhaU/1zFSjdo0kK"; + kitty.publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIrGmsya5DXKuXO6jNjUlrYHqk49KLzxM/60GXtLRLrL"; + detritus.publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDPD9m/rUjb88C4Kin2YhMrMVigu5IEf20FzwfAvz8SI"; + prophet.publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICrp3Y/X2BRUENx+0GMTmB1VDA6SiwkGgdJMHSdMMepM"; + }; + }; security.pam.services.sshd.allowNullPassword = true; diff --git a/modules/system/services/server/default.nix b/modules/system/services/server/default.nix index 62396890..59510325 100644 --- a/modules/system/services/server/default.nix +++ b/modules/system/services/server/default.nix @@ -3,6 +3,7 @@ imports = [ ./cfdyndns ./forgejo + ./hedgedoc ./icecast ./incus ./jellyfin diff --git a/modules/system/services/server/forgejo/default.nix b/modules/system/services/server/forgejo/default.nix index af4d132f..34b29076 100644 --- a/modules/system/services/server/forgejo/default.nix +++ b/modules/system/services/server/forgejo/default.nix @@ -8,17 +8,17 @@ lfs.enable = true; settings = { server = { - DOMAIN = "git.${config.vars.mainDomain}"; - ROOT_URL = "https://git.${config.vars.mainDomain}:443"; + DOMAIN = "git.${config.vars.primeDomain}"; + ROOT_URL = "https://${config.services.forgejo.settings.server.DOMAIN}:443"; HTTP_PORT = 3110; SSH_PORT = 2299; START_SSH_SERVER = true; }; mailer = { ENABLED = true; - SMTP_ADDR = "mx.${config.vars.mainDomain}"; - FROM = "NixFox Git "; - USER = "noreply@${config.vars.mainDomain}"; + SMTP_ADDR = "mx.${config.vars.mailDomain}"; + FROM = "NixFox Git "; + USER = "noreply@${config.vars.primeDomain}"; PASSWD = config.secrets.mailPass.nixfoxNoReply; PROTOCOL = "smtps"; }; @@ -32,7 +32,7 @@ networking.firewall.allowedTCPPorts = [ 2299 ]; - services.cloudflare-dyndns.domains = [ "git.${config.vars.mainDomain}" ]; + services.cloudflare-dyndns.domains = [ config.services.forgejo.settings.server.DOMAIN ]; environment.persistence."/persist".directories = [ "/var/lib/forgejo" ]; }; diff --git a/modules/system/services/server/forgejo/nginx/default.nix b/modules/system/services/server/forgejo/nginx/default.nix index ad2223ad..a40ab52b 100644 --- a/modules/system/services/server/forgejo/nginx/default.nix +++ b/modules/system/services/server/forgejo/nginx/default.nix @@ -1,6 +1,6 @@ { config, lib, ... }: { - services.nginx.virtualHosts."git.${config.vars.mainDomain}" = lib.mkIf config.services.forgejo.enable { + services.nginx.virtualHosts."${config.services.forgejo.settings.server.DOMAIN}" = lib.mkIf config.services.forgejo.enable { enableACME = true; forceSSL = true; locations."/" = { diff --git a/modules/system/services/server/hedgedoc/default.nix b/modules/system/services/server/hedgedoc/default.nix new file mode 100644 index 00000000..c2be42e0 --- /dev/null +++ b/modules/system/services/server/hedgedoc/default.nix @@ -0,0 +1,15 @@ +{ config, ... }: +{ + imports = [ ./nginx ]; + + services.hedgedoc.settings = { + domain = "hedgedoc.${config.vars.primeDomain}"; + port = 8001; + host = "127.0.0.1"; + protocolUseSSL = true; + allowOrigin = [ + "localhost" + config.services.hedgedoc.settings.domain + ]; + }; +} diff --git a/modules/system/services/server/hedgedoc/nginx/default.nix b/modules/system/services/server/hedgedoc/nginx/default.nix new file mode 100644 index 00000000..9848af75 --- /dev/null +++ b/modules/system/services/server/hedgedoc/nginx/default.nix @@ -0,0 +1,11 @@ +{ config, lib, ... }: +{ + services.nginx.virtualHosts."${config.services.hedgedoc.settings.domain}" = lib.mkIf config.services.hedgedoc.enable { + enableACME = true; + forceSSL = true; + locations."/" = { + proxyPass = "http://127.0.0.1:${toString config.services.hedgedoc.settings.port}"; + proxyWebsockets = true; + }; + }; +} diff --git a/modules/system/services/server/icecast/default.nix b/modules/system/services/server/icecast/default.nix index 498c184f..453f339f 100644 --- a/modules/system/services/server/icecast/default.nix +++ b/modules/system/services/server/icecast/default.nix @@ -7,7 +7,7 @@ services.icecast = { listen.port = 73; - hostname = "radio.${config.vars.mainDomain}"; + hostname = "radio.${config.vars.primeDomain}"; admin = { user = "admin"; password = config.secrets.cast.adminPass; @@ -17,7 +17,7 @@ ${config.secrets.cast.sourcePass} Canada - contact@${config.vars.mainDomain} + contact@${config.vars.primeDomain} ''; }; } diff --git a/modules/system/services/server/icecast/liquidsoap/nixbops/default.nix b/modules/system/services/server/icecast/liquidsoap/nixbops/default.nix index 8d200cb7..d26b68b3 100644 --- a/modules/system/services/server/icecast/liquidsoap/nixbops/default.nix +++ b/modules/system/services/server/icecast/liquidsoap/nixbops/default.nix @@ -7,7 +7,7 @@ settings.init.allow_root.set(true) settings.scheduler.fast_queues.set(2) - stream = mksafe(playlist(mode='randomize', reload=1, reload_mode="rounds", "/storage/Music/NixBops")) + stream = mksafe(playlist(mode='randomize', reload=1, reload_mode="rounds", "/network/Midas/Music/NixBops")) stream_fallback = fallback([stream, stream]) output.icecast( diff --git a/modules/system/services/server/icecast/liquidsoap/nixscrap/default.nix b/modules/system/services/server/icecast/liquidsoap/nixscrap/default.nix index 6f520910..36e22aef 100644 --- a/modules/system/services/server/icecast/liquidsoap/nixscrap/default.nix +++ b/modules/system/services/server/icecast/liquidsoap/nixscrap/default.nix @@ -7,7 +7,7 @@ settings.init.allow_root.set(true) settings.scheduler.fast_queues.set(2) - stream = mksafe(playlist(mode='randomize', reload=1, reload_mode="rounds", "/storage/Music/Scrap")) + stream = mksafe(playlist(mode='randomize', reload=1, reload_mode="rounds", "/network/Midas/Music/Scrap")) stream_fallback = fallback([stream, stream]) output.icecast( diff --git a/modules/system/services/server/icecast/nginx/default.nix b/modules/system/services/server/icecast/nginx/default.nix index 8993503a..120cbb66 100644 --- a/modules/system/services/server/icecast/nginx/default.nix +++ b/modules/system/services/server/icecast/nginx/default.nix @@ -1,6 +1,6 @@ { config, lib, ... }: { - services.nginx.virtualHosts."radio.${config.vars.mainDomain}" = lib.mkIf config.services.icecast.enable { + services.nginx.virtualHosts."${config.services.icecast.hostname}" = lib.mkIf config.services.icecast.enable { enableACME = true; forceSSL = true; locations."/" = { diff --git a/modules/system/services/server/jellyfin/nginx/default.nix b/modules/system/services/server/jellyfin/nginx/default.nix index d79599e9..550749ae 100644 --- a/modules/system/services/server/jellyfin/nginx/default.nix +++ b/modules/system/services/server/jellyfin/nginx/default.nix @@ -1,6 +1,6 @@ { config, lib, ... }: { - services.nginx.virtualHosts."jelly.${config.vars.mainDomain}" = lib.mkIf config.services.jellyfin.enable { + services.nginx.virtualHosts."jelly.${config.vars.primeDomain}" = lib.mkIf config.services.jellyfin.enable { enableACME = true; forceSSL = true; locations."/" = { diff --git a/modules/system/services/server/mailserver/default.nix b/modules/system/services/server/mailserver/default.nix index c2418a80..744cde04 100644 --- a/modules/system/services/server/mailserver/default.nix +++ b/modules/system/services/server/mailserver/default.nix @@ -9,7 +9,7 @@ config = lib.mkIf config.mailserver.enable { mailserver = { - fqdn = "mx.${config.vars.mainDomain}"; + fqdn = "mx.${config.vars.mailDomain}"; domains = [ "nixfox.ca" "bloxelcom.net" diff --git a/modules/system/services/server/mailserver/go-autoconfig/default.nix b/modules/system/services/server/mailserver/go-autoconfig/default.nix index 0a9d5746..6854adb1 100644 --- a/modules/system/services/server/mailserver/go-autoconfig/default.nix +++ b/modules/system/services/server/mailserver/go-autoconfig/default.nix @@ -7,13 +7,13 @@ enable = true; settings = { service_addr = ":1323"; - domain = "autoconfig.nixfox.ca"; + domain = "autoconfig.${config.vars.mailDomain}"; imap = { - server = "mx.nixfox.ca"; + server = "mx.${config.vars.mailDomain}"; port = 143; }; smtp = { - server = "mx.nixfox.ca"; + server = "mx.${config.vars.mailDomain}"; port = 587; }; }; diff --git a/modules/system/services/server/mailserver/go-autoconfig/nginx/default.nix b/modules/system/services/server/mailserver/go-autoconfig/nginx/default.nix index 14937c85..d612fce4 100644 --- a/modules/system/services/server/mailserver/go-autoconfig/nginx/default.nix +++ b/modules/system/services/server/mailserver/go-autoconfig/nginx/default.nix @@ -1,6 +1,6 @@ { config, lib, ... }: { - services.nginx.virtualHosts."autoconfig.${config.vars.mainDomain}" = lib.mkIf config.services.go-autoconfig.enable { + services.nginx.virtualHosts."autoconfig.${config.vars.mailDomain}" = lib.mkIf config.services.go-autoconfig.enable { enableACME = true; forceSSL = true; locations."/" = { diff --git a/modules/system/services/server/mailserver/radicale/default.nix b/modules/system/services/server/mailserver/radicale/default.nix index 6321c3d1..f553819b 100644 --- a/modules/system/services/server/mailserver/radicale/default.nix +++ b/modules/system/services/server/mailserver/radicale/default.nix @@ -19,7 +19,7 @@ htpasswd_encryption = "bcrypt"; }; }; - cloudflare-dyndns.domains = [ "cal.nixfox.ca" ]; + cloudflare-dyndns.domains = [ "cal.${config.vars.mailDomain}" ]; }; environment.persistence."/persist".directories = [ "/var/lib/radicale" ]; diff --git a/modules/system/services/server/mailserver/radicale/nginx/default.nix b/modules/system/services/server/mailserver/radicale/nginx/default.nix index 71b9481b..8d70efbf 100644 --- a/modules/system/services/server/mailserver/radicale/nginx/default.nix +++ b/modules/system/services/server/mailserver/radicale/nginx/default.nix @@ -1,6 +1,6 @@ { config, lib, ... }: { - services.nginx.virtualHosts."cal.${config.vars.mainDomain}" = lib.mkIf config.services.radicale.enable { + services.nginx.virtualHosts."cal.${config.vars.mailDomain}" = lib.mkIf config.services.radicale.enable { enableACME = true; forceSSL = true; locations."/" = { diff --git a/modules/system/services/server/mailserver/roundcube/default.nix b/modules/system/services/server/mailserver/roundcube/default.nix index ac7ad946..c4fc9784 100644 --- a/modules/system/services/server/mailserver/roundcube/default.nix +++ b/modules/system/services/server/mailserver/roundcube/default.nix @@ -3,9 +3,9 @@ config = lib.mkIf config.mailserver.enable { services.roundcube = { enable = true; - hostName = "mail.${config.vars.mainDomain}"; + hostName = "mail.${config.vars.mailDomain}"; extraConfig = '' - $config['smtp_server'] = "tls://mx.${config.vars.mainDomain}"; + $config['smtp_server'] = "tls://mx.${config.vars.mailDomain}"; $config['smtp_user'] = "%u"; $config['smtp_pass'] = "%p"; ''; diff --git a/modules/system/services/server/mastodon/default.nix b/modules/system/services/server/mastodon/default.nix index 7a8786b2..9cc7bee6 100644 --- a/modules/system/services/server/mastodon/default.nix +++ b/modules/system/services/server/mastodon/default.nix @@ -2,16 +2,16 @@ { config = lib.mkIf config.services.mastodon.enable { services.mastodon = { - localDomain = "social.nixfox.ca"; + localDomain = "social.${config.vars.primeDomain}"; streamingProcesses = 4; configureNginx = true; smtp = { createLocally = false; - host = "mx.nixfox.ca"; + host = "mx.${config.vars.mailDomain}"; port = 587; authenticate = true; - fromAddress = "NixFox Mastodon "; - user = "noreply@nixfox.ca"; + fromAddress = "NixFox Mastodon "; + user = "noreply@${config.vars.primeDomain}"; passwordFile = pkgs.writeText "smtp_pass.txt" config.secrets.mailPass.nixfoxNoReply; }; }; diff --git a/modules/system/services/server/matrix/coturn/default.nix b/modules/system/services/server/matrix/coturn/default.nix index bf7c5ec5..9ef549de 100644 --- a/modules/system/services/server/matrix/coturn/default.nix +++ b/modules/system/services/server/matrix/coturn/default.nix @@ -12,7 +12,7 @@ max-port = 50000; use-auth-secret = true; static-auth-secret = config.secrets.coturnSecret; - realm = "turn.${config.vars.mainDomain}"; + realm = "turn.${config.vars.primeDomain}"; cert = "/var/lib/acme/${config.services.coturn.realm}/fullchain.pem"; pkey = "/var/lib/acme/${config.services.coturn.realm}/key.pem"; }; diff --git a/modules/system/services/server/matrix/coturn/nginx/default.nix b/modules/system/services/server/matrix/coturn/nginx/default.nix index dc53becb..c0466107 100644 --- a/modules/system/services/server/matrix/coturn/nginx/default.nix +++ b/modules/system/services/server/matrix/coturn/nginx/default.nix @@ -1,7 +1,7 @@ { config, lib, ... }: { config = lib.mkIf config.services.coturn.enable { - services.nginx.virtualHosts."turn.${config.vars.mainDomain}" = { + services.nginx.virtualHosts."turn.${config.vars.primeDomain}" = { enableACME = true; forceSSL = true; listen = [{ @@ -12,7 +12,7 @@ locations."/".proxyPass = "http://127.0.0.1:1380"; }; - security.acme.certs."turn.${config.vars.mainDomain}" = { + security.acme.certs."turn.${config.vars.primeDomain}" = { group = "turnserver"; postRun = "systemctl restart coturn.service"; }; diff --git a/modules/system/services/server/matrix/element/default.nix b/modules/system/services/server/matrix/element/default.nix index 34326b31..a1ba1067 100644 --- a/modules/system/services/server/matrix/element/default.nix +++ b/modules/system/services/server/matrix/element/default.nix @@ -4,14 +4,14 @@ nixpkgs.config.element-web.conf = { default_server_config."m.homeserver" = { - base_url = "https://matrix.${config.vars.mainDomain}"; - server_name = "matrix.${config.vars.mainDomain}"; + base_url = "https://matrix.${config.vars.primeDomain}"; + server_name = "matrix.${config.vars.primeDomain}"; }; branding = { - auth_header_logo_url = "https://www.${config.vars.mainDomain}/images/copyright/profile.png"; - #welcome_background_url = "https://www.${config.vars.mainDomain}/images/backgrounds/template-background.png"; + auth_header_logo_url = "https://www.${config.vars.primeDomain}/images/copyright/profile.png"; + #welcome_background_url = "https://www.${config.vars.primeDomain}/images/backgrounds/template-background.png"; }; - embedded_pages.home_url = "https://www.${config.vars.mainDomain}/"; + embedded_pages.home_url = "https://www.${config.vars.primeDomain}/"; disable_custom_urls = true; disable_guests = true; default_theme = "dark"; diff --git a/modules/system/services/server/matrix/element/nginx/default.nix b/modules/system/services/server/matrix/element/nginx/default.nix index 960f3598..86c601a3 100644 --- a/modules/system/services/server/matrix/element/nginx/default.nix +++ b/modules/system/services/server/matrix/element/nginx/default.nix @@ -1,6 +1,6 @@ { config, lib, pkgs, ... }: { - services.nginx.virtualHosts."chat.${config.vars.mainDomain}" = lib.mkIf config.services.matrix-synapse.enable { + services.nginx.virtualHosts."chat.${config.vars.primeDomain}" = lib.mkIf config.services.matrix-synapse.enable { enableACME = true; addSSL = true; root = "${pkgs.element-web}"; diff --git a/modules/system/services/server/matrix/synapse/default.nix b/modules/system/services/server/matrix/synapse/default.nix index fb557659..40f890a3 100644 --- a/modules/system/services/server/matrix/synapse/default.nix +++ b/modules/system/services/server/matrix/synapse/default.nix @@ -5,16 +5,16 @@ config = lib.mkIf config.services.matrix-synapse.enable { services.matrix-synapse = { settings = { - server_name = "${config.vars.mainDomain}"; - public_baseurl = "https://matrix.${config.vars.mainDomain}"; + server_name = "${config.vars.primeDomain}"; + public_baseurl = "https://matrix.${config.vars.primeDomain}"; suppress_key_server_warning = true; # Email notifications about account status email = { - notif_from = "NixFox Matrix "; - smtp_host = "mx.${config.vars.mainDomain}"; - smtp_user = "noreply@${config.vars.mainDomain}"; + smtp_host = "mx.${config.vars.mailDomain}"; + smtp_user = "noreply@${config.vars.primeDomain}"; smtp_pass = config.secrets.mailPass.nixfoxNoReply; + notif_from = "NixFox Matrix "; enable_tls = true; smtp_port = 587; require_transport_security = true; diff --git a/modules/system/services/server/matrix/synapse/nginx/default.nix b/modules/system/services/server/matrix/synapse/nginx/default.nix index f50834ad..dd71d56d 100644 --- a/modules/system/services/server/matrix/synapse/nginx/default.nix +++ b/modules/system/services/server/matrix/synapse/nginx/default.nix @@ -1,6 +1,6 @@ { config, lib, ... }: { - services.nginx.virtualHosts."matrix.${config.vars.mainDomain}" = lib.mkIf config.services.matrix-synapse.enable { + services.nginx.virtualHosts."matrix.${config.vars.primeDomain}" = lib.mkIf config.services.matrix-synapse.enable { enableACME = true; forceSSL = true; locations = { diff --git a/modules/system/services/server/minecraft/default.nix b/modules/system/services/server/minecraft/default.nix index a2a9131b..da5539fa 100644 --- a/modules/system/services/server/minecraft/default.nix +++ b/modules/system/services/server/minecraft/default.nix @@ -3,17 +3,13 @@ imports = [ ./common ./servers - minecraft.nixosModules.minecraft-servers ]; config = lib.mkIf config.services.minecraft-servers.enable { - nixpkgs = { - overlays = [ minecraft.overlay ]; - allowUnfreePackages = [ "minecraft-server" ]; - }; - services.minecraft-servers.eula = true; + nixpkgs.allowUnfreePackages = [ "minecraft-server" ]; + environment.persistence."/persist".directories = [ "/srv/minecraft" ]; }; } diff --git a/modules/system/services/server/minecraft/servers/blockworld/default.nix b/modules/system/services/server/minecraft/servers/blockworld/default.nix index 0f5b1363..5f9c1e68 100644 --- a/modules/system/services/server/minecraft/servers/blockworld/default.nix +++ b/modules/system/services/server/minecraft/servers/blockworld/default.nix @@ -14,6 +14,6 @@ symlinks = config.services.minecraft-servers.common.paperSymlinks; files = config.services.minecraft-servers.common.configFiles; }; - cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.blockworld.enable [ "bloxel.${config.vars.mainDomain}" ]; + cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.blockworld.enable [ "bloxel.${config.vars.primeDomain}" ]; }; } diff --git a/modules/system/services/server/minecraft/servers/cornworld/default.nix b/modules/system/services/server/minecraft/servers/cornworld/default.nix index 33fcaec7..28161ebc 100644 --- a/modules/system/services/server/minecraft/servers/cornworld/default.nix +++ b/modules/system/services/server/minecraft/servers/cornworld/default.nix @@ -13,6 +13,6 @@ symlinks = config.services.minecraft-servers.common.paperSymlinks; files = config.services.minecraft-servers.common.configFiles; }; - cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.cornworld.enable [ "corn.${config.vars.mainDomain}" ]; + cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.cornworld.enable [ "corn.${config.vars.primeDomain}" ]; }; } diff --git a/modules/system/services/server/minecraft/servers/dewdemolisher/default.nix b/modules/system/services/server/minecraft/servers/dewdemolisher/default.nix index 11d2eecd..da6bcdc9 100644 --- a/modules/system/services/server/minecraft/servers/dewdemolisher/default.nix +++ b/modules/system/services/server/minecraft/servers/dewdemolisher/default.nix @@ -13,6 +13,6 @@ symlinks = config.services.minecraft-servers.common.paperSymlinks; files = config.services.minecraft-servers.common.configFiles; }; - cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.dewdemolisher.enable [ "dew.${config.vars.mainDomain}" ]; + cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.dewdemolisher.enable [ "dew.${config.vars.primeDomain}" ]; }; } diff --git a/modules/system/services/server/minecraft/servers/johnside/default.nix b/modules/system/services/server/minecraft/servers/johnside/default.nix index 9af650a4..0c8933af 100644 --- a/modules/system/services/server/minecraft/servers/johnside/default.nix +++ b/modules/system/services/server/minecraft/servers/johnside/default.nix @@ -26,6 +26,6 @@ }; files = config.services.minecraft-servers.common.configFiles; }; - cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.johnside.enable [ "john.${config.vars.mainDomain}" ]; + cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.johnside.enable [ "john.${config.vars.primeDomain}" ]; }; } diff --git a/modules/system/services/server/minecraft/servers/marsh/default.nix b/modules/system/services/server/minecraft/servers/marsh/default.nix index 3eb18bfd..f6a3030d 100644 --- a/modules/system/services/server/minecraft/servers/marsh/default.nix +++ b/modules/system/services/server/minecraft/servers/marsh/default.nix @@ -13,6 +13,6 @@ symlinks = config.services.minecraft-servers.common.paperSymlinks; files = config.services.minecraft-servers.common.configFiles; }; - cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.marsh.enable [ "marsh.${config.vars.mainDomain}" ]; + cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.marsh.enable [ "marsh.${config.vars.primeDomain}" ]; }; } diff --git a/modules/system/services/server/minecraft/servers/skyblock/default.nix b/modules/system/services/server/minecraft/servers/skyblock/default.nix index 2a538120..12ae26a7 100644 --- a/modules/system/services/server/minecraft/servers/skyblock/default.nix +++ b/modules/system/services/server/minecraft/servers/skyblock/default.nix @@ -13,6 +13,6 @@ symlinks = config.services.minecraft-servers.common.paperSymlinks; files = config.services.minecraft-servers.common.configFiles; }; - cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.skyblock.enable [ "skyblock.${config.vars.mainDomain}" ]; + cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.skyblock.enable [ "skyblock.${config.vars.primeDomain}" ]; }; } diff --git a/modules/system/services/server/minecraft/servers/uberbeta/default.nix b/modules/system/services/server/minecraft/servers/uberbeta/default.nix index 1e1c35ff..ef58b477 100644 --- a/modules/system/services/server/minecraft/servers/uberbeta/default.nix +++ b/modules/system/services/server/minecraft/servers/uberbeta/default.nix @@ -18,6 +18,6 @@ in { server-port = 30005; }; }; - cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.uberbeta.enable [ "beta.${config.vars.mainDomain}" ]; + cloudflare-dyndns.domains = lib.mkIf config.services.minecraft-servers.servers.uberbeta.enable [ "beta.${config.vars.primeDomain}" ]; }; } diff --git a/modules/system/services/server/nextcloud/default.nix b/modules/system/services/server/nextcloud/default.nix index 4425c795..87bfffda 100644 --- a/modules/system/services/server/nextcloud/default.nix +++ b/modules/system/services/server/nextcloud/default.nix @@ -8,7 +8,7 @@ config = lib.mkIf config.services.nextcloud.enable { services.nextcloud = { package = pkgs.nextcloud31; - hostName = "files.${config.vars.mainDomain}"; + hostName = "files.${config.vars.primeDomain}"; https = true; config = { adminuser = "admin"; @@ -19,11 +19,11 @@ trusted_proxies = [ "127.0.0.1" ]; trusted_domains = [ config.services.nextcloud.hostName ]; overwriteprotocol = "https"; - mail_smtphost = "mx.${config.vars.mainDomain}"; - mail_domain = "${config.vars.mainDomain}"; + mail_smtphost = "mx.${config.vars.mailDomain}"; + mail_domain = "${config.vars.primeDomain}"; mail_from_address = "noreply"; mail_smtpauth = "true"; - mail_smtpname = "noreply@${config.vars.mainDomain}"; + mail_smtpname = "noreply@${config.vars.primeDomain}"; mail_smtppassword = config.secrets.mailPass.nixfoxNoReply; mail_smtpmode = "smtp"; mail_smtpport = 587; diff --git a/modules/system/services/server/nextcloud/nginx/default.nix b/modules/system/services/server/nextcloud/nginx/default.nix index 2ae51b50..5cc87b9a 100644 --- a/modules/system/services/server/nextcloud/nginx/default.nix +++ b/modules/system/services/server/nextcloud/nginx/default.nix @@ -1,6 +1,6 @@ { config, lib, ... }: { - services.nginx.virtualHosts."files.${config.vars.mainDomain}" = lib.mkIf config.services.nextcloud.enable { + services.nginx.virtualHosts."files.${config.vars.primeDomain}" = lib.mkIf config.services.nextcloud.enable { enableACME = true; addSSL = true; locations."/" = { diff --git a/modules/system/services/server/nginx/acme/default.nix b/modules/system/services/server/nginx/acme/default.nix index 234eae09..941c8a64 100644 --- a/modules/system/services/server/nginx/acme/default.nix +++ b/modules/system/services/server/nginx/acme/default.nix @@ -3,7 +3,7 @@ config = lib.mkIf config.services.nginx.enable { security.acme = { acceptTerms = true; - defaults.email = "contact@${config.vars.mainDomain}"; + defaults.email = "contact@${config.vars.primeDomain}"; }; environment.persistence."/persist".directories = [ "/var/lib/acme" ]; }; diff --git a/modules/system/services/server/owncast/nginx/default.nix b/modules/system/services/server/owncast/nginx/default.nix index 87fbf579..47fcaae0 100644 --- a/modules/system/services/server/owncast/nginx/default.nix +++ b/modules/system/services/server/owncast/nginx/default.nix @@ -1,6 +1,6 @@ { config, lib, ... }: { - services.nginx.virtualHosts."live.${config.vars.mainDomain}" = lib.mkIf config.services.owncast.enable { + services.nginx.virtualHosts."live.${config.vars.primeDomain}" = lib.mkIf config.services.owncast.enable { enableACME = true; forceSSL = true; locations."/" = { diff --git a/modules/system/services/server/transmission/nginx/default.nix b/modules/system/services/server/transmission/nginx/default.nix index e7db20d5..5a66482f 100644 --- a/modules/system/services/server/transmission/nginx/default.nix +++ b/modules/system/services/server/transmission/nginx/default.nix @@ -1,6 +1,6 @@ { config, lib, ... }: { - services.nginx.virtualHosts."tor.${config.vars.mainDomain}" = lib.mkIf config.services.transmission.enable { + services.nginx.virtualHosts."tor.${config.vars.primeDomain}" = lib.mkIf config.services.transmission.enable { enableACME = true; forceSSL = true; locations."/" = { diff --git a/modules/system/services/server/vaultwarden/default.nix b/modules/system/services/server/vaultwarden/default.nix index 3ab93f9c..d46dd0ac 100644 --- a/modules/system/services/server/vaultwarden/default.nix +++ b/modules/system/services/server/vaultwarden/default.nix @@ -4,16 +4,16 @@ config = lib.mkIf config.services.vaultwarden.enable { services.vaultwarden.config = { - domain = "https://pass.${config.vars.mainDomain}"; + domain = "https://pass.${config.vars.primeDomain}"; signupsAllowed = false; rocketAddress = "127.0.0.1"; rocketPort = 8222; # Smtp email - smtpHost = "mx.${config.vars.mainDomain}"; - smtpFrom = "noreply@${config.vars.mainDomain}"; + smtpHost = "mx.${config.vars.mailDomain}"; + smtpFrom = "noreply@${config.vars.primeDomain}"; smtpFromName = "Vaultwarden"; - smtpUsername = "noreply@${config.vars.mainDomain}"; + smtpUsername = "noreply@${config.vars.primeDomain}"; smtpPassword = config.secrets.mailPass.nixfoxNoReply; smtpSecurity = "starttls"; smtpPort = 587; diff --git a/modules/system/services/server/vaultwarden/nginx/default.nix b/modules/system/services/server/vaultwarden/nginx/default.nix index cc85f420..7ae72aeb 100644 --- a/modules/system/services/server/vaultwarden/nginx/default.nix +++ b/modules/system/services/server/vaultwarden/nginx/default.nix @@ -1,6 +1,6 @@ { config, lib, ... }: { - services.nginx.virtualHosts."pass.${config.vars.mainDomain}" = lib.mkIf config.services.vaultwarden.enable { + services.nginx.virtualHosts."pass.${config.vars.primeDomain}" = lib.mkIf config.services.vaultwarden.enable { enableACME = true; forceSSL = true; locations."/" = { diff --git a/modules/system/settings/nix/default.nix b/modules/system/settings/nix/default.nix index 8f4eda56..02cb38e6 100644 --- a/modules/system/settings/nix/default.nix +++ b/modules/system/settings/nix/default.nix @@ -3,7 +3,6 @@ imports = [ ./cache ./channels - ./distributed ./maintenence ./unfree ]; diff --git a/modules/system/settings/nix/distributed/default.nix b/modules/system/settings/nix/distributed/default.nix deleted file mode 100644 index a57f9ee4..00000000 --- a/modules/system/settings/nix/distributed/default.nix +++ /dev/null @@ -1,79 +0,0 @@ -{ config, lib, nodes, ... }: -{ - nix = { - # Machines to build derviations on - buildMachines = with nodes; [ - { - hostName = "midas"; - system = midas.config.nixpkgs.hostPlatform.system; - supportedFeatures = midas.config.nix.settings.system-features; - publicHostKey = "c3NoLWVkMjU1MTkgQUFBQUMzTnphQzFsWkRJMU5URTVBQUFBSUZjRk12cng5L2lVWjFtRXViZitRRjFpM0xOVHhGaGFVLzF6RlNqZG8wa0sgcm9vdEBraXR0eQo="; - protocol = "ssh-ng"; - sshKey = "/root/.ssh/buildkey"; - maxJobs = 8; - } - { - hostName = "kitty"; - system = kitty.config.nixpkgs.hostPlatform.system; - supportedFeatures = kitty.config.nix.settings.system-features; - publicHostKey = "c3NoLWVkMjU1MTkgQUFBQUMzTnphQzFsWkRJMU5URTVBQUFBSUlyR21zeWE1RFhLdVhPNmpOalVscllIcWs0OUtMenhNLzYwR1h0TFJMckwgcm9vdEBraXR0eQo="; - protocol = "ssh-ng"; - sshKey = "/root/.ssh/buildkey"; - maxJobs = 8; - } - { - hostName = "detritus"; - system = detritus.config.nixpkgs.hostPlatform.system; - supportedFeatures = detritus.config.nix.settings.system-features; - publicHostKey = "c3NoLWVkMjU1MTkgQUFBQUMzTnphQzFsWkRJMU5URTVBQUFBSU4rR3ZMcm80RFZtbHZtWGNhc1UxZ2N0SVg5cWN0N21adEVscEI3MzVBb0wgcm9vdEBkZXRyaXR1cwo="; - protocol = "ssh-ng"; - sshKey = "/root/.ssh/buildkey"; - maxJobs = 8; - } - { - hostName = "elder"; - system = elder.config.nixpkgs.hostPlatform.system; - supportedFeatures = elder.config.nix.settings.system-features; - publicHostKey = "c3NoLWVkMjU1MTkgQUFBQUMzTnphQzFsWkRJMU5URTVBQUFBSUZqbUo2Ymt1TzU3Z3A2R1pERWZSMU83a3JkZjV3aXFyT0JDNXB6VERsOTEgcm9vdEBlbGRlcgo="; - protocol = "ssh-ng"; - sshKey = "/root/.ssh/buildkey"; - maxJobs = 8; - } - { - hostName = "prophet"; - system = prophet.config.nixpkgs.hostPlatform.system; - supportedFeatures = prophet.config.nix.settings.system-features; - publicHostKey = "c3NoLWVkMjU1MTkgQUFBQUMzTnphQzFsWkRJMU5URTVBQUFBSUNycDNZL1gyQlJVRU54KzBHTVRtQjFWREE2U2l3a0dnZEpNSFNkTU1lcE0gcm9vdEBwcm9waGV0Cg=="; - protocol = "ssh-ng"; - sshKey = "/root/.ssh/buildkey"; - maxJobs = 8; - } - ]; - - # Enable distributed builds - distributedBuilds = true; - - settings = { - # Serve derivations more efficiently, using substituters - substituters = [ - "ssh-ng://midas" - "ssh-ng://kitty" - "ssh-ng://detritus" - "ssh-ng://elder" - "ssh-ng://prophet" - ]; - trusted-public-keys = [ - "midas:YpyfZyVlTlPjzcVsYBnN13EgeK95y1WXxm9h1V8tM7E=" - "kitty:QLl9Do4v+2Q/fapozUGoXIKJul+Zck3yAsmAo9Lg4is=" - "detritus:xtQVaIyDIBWS+EAU11dBsW9BUMT7aAZRPjKp3Udgdvc=" - "elder:U+zIEvxNeqOxAWbZyrJzDNrJF1GJdcrLEYbIqmKGd7U=" - "prophet:NPlWmuX1vz95uUIddQXlwrkmdSMZW1U27CdEY812brg=" - ]; - - # Settings to sign the derivations and allow building - max-jobs = if builtins.elem "server" config.system.nixos.tags then "auto" else 0; - secret-key-files = "/var/lib/nixos/cache-priv-key.pem"; - trusted-users = [ "root" ]; - }; - }; -} diff --git a/modules/system/variables/default.nix b/modules/system/variables/default.nix index cc613993..42927b33 100644 --- a/modules/system/variables/default.nix +++ b/modules/system/variables/default.nix @@ -6,6 +6,7 @@ config.vars = { mainUser = "bun"; - mainDomain = "nixfox.ca"; + primeDomain = "nixfox.ca"; + mailDomain = "nixfox.ca"; }; }