diff --git a/README.md b/README.md index b4ef247..14c25b6 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ For my use, unlocking secrets can be done with this command: Without the help of heavy inspiration, I would not have been able to learn and get up and running nearly as quickly. My most heavily borrowed configs are as follows: [CloudyChris' nix-starter-configs fork](https://github.com/CloudyChris/NixOsConfig), the very initial base of my conversion to flakes. [WillPower3309's personal flake](https://github.com/WillPower3309/nixos-config) for being a pleasure in the SwayFX Discord and having a really nice flake.nix file I borrowed from. -[Jules Sommer's minimal flake](https://github.com/WillPower3309/nixos-config) for giving me a good basis for writing individual files and repeatedly helping me throughout the entire process. +[Jules Sommer's minimal flake](https://github.com/jules-sommer/nix_config_minimal) for giving me a good basis for writing individual files and repeatedly helping me throughout the entire process. Made with love ❤️ diff --git a/flake.lock b/flake.lock index 5f4ee5f..6a8a9ca 100644 --- a/flake.lock +++ b/flake.lock @@ -38,16 +38,14 @@ "flake-schemas": "flake-schemas", "home-manager": "home-manager", "jovian": "jovian", - "nixpkgs": [ - "unstable" - ] + "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1729599319, - "narHash": "sha256-e/4JPcIRte5zkwqmGFrFo3763e0iHURX6N0apz4jbI0=", + "lastModified": 1730390431, + "narHash": "sha256-M+rMhDB69Y35IlhmAMN4ErDige+wKPwhb6HDqpF14Rw=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "1b86b304c8eb1437d9337a760e7f930826fc4d6d", + "rev": "40388a7427ee32af175c5169ae7587ffd2dec125", "type": "github" }, "original": { @@ -78,6 +76,26 @@ "type": "github" } }, + "disko": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1730190761, + "narHash": "sha256-o5m5WzvY6cGIDupuOvjgNSS8AN6yP2iI9MtUC6q/uos=", + "owner": "nix-community", + "repo": "disko", + "rev": "3979285062d6781525cded0f6c4ff92e71376b55", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "disko", + "type": "github" + } + }, "flake-compat": { "flake": false, "locked": { @@ -221,11 +239,11 @@ }, "hardware": { "locked": { - "lastModified": 1729742320, - "narHash": "sha256-u3Of8xRkN//me8PU+RucKA59/6RNy4B2jcGAF36P4jI=", + "lastModified": 1730368399, + "narHash": "sha256-F8vJtG389i9fp3k2/UDYHMed3PLCJYfxCqwiVP7b9ig=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "e8a2f6d5513fe7b7d15701b2d05404ffdc3b6dda", + "rev": "da14839ac5f38ee6adbdb4e6db09b5eef6d6ccdc", "type": "github" }, "original": { @@ -243,11 +261,11 @@ ] }, "locked": { - "lastModified": 1729414726, - "narHash": "sha256-Dtmm1OU8Ymiy9hVWn/a2B8DhRYo9Eoyx9veERdOBR4o=", + "lastModified": 1730016908, + "narHash": "sha256-bFCxJco7d8IgmjfNExNz9knP8wvwbXU4s/d53KOK6U0=", "owner": "nix-community", "repo": "home-manager", - "rev": "fe56302339bb28e3471632379d733547caec8103", + "rev": "e83414058edd339148dc142a8437edb9450574c8", "type": "github" }, "original": { @@ -277,6 +295,21 @@ "type": "github" } }, + "impermanence": { + "locked": { + "lastModified": 1730403150, + "narHash": "sha256-W1FH5aJ/GpRCOA7DXT/sJHFpa5r8sq2qAUncWwRZ3Gg=", + "owner": "nix-community", + "repo": "impermanence", + "rev": "0d09341beeaa2367bac5d718df1404bf2ce45e6f", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "impermanence", + "type": "github" + } + }, "jovian": { "inputs": { "nix-github-actions": "nix-github-actions", @@ -286,11 +319,11 @@ ] }, "locked": { - "lastModified": 1729177642, - "narHash": "sha256-DdKal+ZhB9QD/tnEwFg4cZ4j4YnrkvSljBxnyG+3eE0=", + "lastModified": 1730248099, + "narHash": "sha256-Fl7BSdpLk0uTXF6ol/MR0q1EB4XQ8tn0ftig0pyYh5Y=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "bb69165ff372ddbd3228a03513922acd783040e8", + "rev": "c11bab124fc55a37cbd854ed28ea121ed609231f", "type": "github" }, "original": { @@ -330,7 +363,7 @@ "inputs": { "blobs": "blobs", "flake-compat": "flake-compat_2", - "nixpkgs": "nixpkgs_2", + "nixpkgs": "nixpkgs_3", "nixpkgs-24_05": "nixpkgs-24_05", "utils": "utils" }, @@ -353,14 +386,14 @@ "inputs": { "flake-compat": "flake-compat_3", "flake-utils": "flake-utils_2", - "nixpkgs": "nixpkgs_3" + "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1729993975, - "narHash": "sha256-Z5DQ48PdCo3IyfKbngL62Q/HuA/fsn22bMyPbTQGSKQ=", + "lastModified": 1730426071, + "narHash": "sha256-2BkSiHqyWikpz9HSgTBk5kikaQ5m0Rs60C9KA2kf53o=", "owner": "Infinidoge", "repo": "nix-minecraft", - "rev": "4753ea1f1285e944839cb2ab0b4373eb4e00c12a", + "rev": "4b371c3d119493051d081ff5b6cff689a97ad1a1", "type": "github" }, "original": { @@ -378,11 +411,11 @@ ] }, "locked": { - "lastModified": 1690328911, - "narHash": "sha256-fxtExYk+aGf2YbjeWQ8JY9/n9dwuEt+ma1eUFzF8Jeo=", + "lastModified": 1729697500, + "narHash": "sha256-VFTWrbzDlZyFHHb1AlKRiD/qqCJIripXKiCSFS8fAOY=", "owner": "zhaofengli", "repo": "nix-github-actions", - "rev": "96df4a39c52f53cb7098b923224d8ce941b64747", + "rev": "e418aeb728b6aa5ca8c5c71974e7159c2df1d8cf", "type": "github" }, "original": { @@ -438,6 +471,22 @@ } }, "nixpkgs_2": { + "locked": { + "lastModified": 1730200266, + "narHash": "sha256-l253w0XMT8nWHGXuXqyiIC/bMvh1VRszGXgdpQlfhvU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "807e9154dcb16384b1b765ebe9cd2bba2ac287fd", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { "locked": { "lastModified": 1717602782, "narHash": "sha256-pL9jeus5QpX5R+9rsp3hhZ+uplVHscNJh8n8VpqscM0=", @@ -452,7 +501,7 @@ "type": "indirect" } }, - "nixpkgs_3": { + "nixpkgs_4": { "locked": { "lastModified": 1715266358, "narHash": "sha256-doPgfj+7FFe9rfzWo1siAV2mVCasW+Bh8I1cToAXEE4=", @@ -468,13 +517,13 @@ "type": "github" } }, - "nixpkgs_4": { + "nixpkgs_5": { "locked": { - "lastModified": 1729973466, - "narHash": "sha256-knnVBGfTCZlQgxY1SgH0vn2OyehH9ykfF8geZgS95bk=", + "lastModified": 1730137625, + "narHash": "sha256-9z8oOgFZiaguj+bbi3k4QhAD6JabWrnv7fscC/mt0KE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "cd3e8833d70618c4eea8df06f95b364b016d4950", + "rev": "64b80bfb316b57cdb8919a9110ef63393d74382a", "type": "github" }, "original": { @@ -485,11 +534,11 @@ }, "nur": { "locked": { - "lastModified": 1730060949, - "narHash": "sha256-SNygd+Ud73nYjGylHbMVEZF5jhE9hyVkBHVrqna/05o=", + "lastModified": 1730434297, + "narHash": "sha256-7wEy/XwjqAdzsIZJ2AFJaVeshX6yT9vhRsFjvQe0U1E=", "owner": "nix-community", "repo": "NUR", - "rev": "957b94ad2381e6bafdb21c092162549af42f185c", + "rev": "5ef5f243936bc6387b55fc8cb08c88e7cf68092a", "type": "github" }, "original": { @@ -529,12 +578,14 @@ "inputs": { "blender-bin": "blender-bin", "chaotic": "chaotic", + "disko": "disko", "hardware": "hardware", "home-manager": "home-manager_2", + "impermanence": "impermanence", "lanzaboote": "lanzaboote", "mailserver": "mailserver", "minecraft": "minecraft", - "nixpkgs": "nixpkgs_4", + "nixpkgs": "nixpkgs_5", "nur": "nur", "unstable": "unstable" } @@ -611,11 +662,11 @@ }, "unstable": { "locked": { - "lastModified": 1729880355, - "narHash": "sha256-RP+OQ6koQQLX5nw0NmcDrzvGL8HDLnyXt/jHhL1jwjM=", + "lastModified": 1730200266, + "narHash": "sha256-l253w0XMT8nWHGXuXqyiIC/bMvh1VRszGXgdpQlfhvU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "18536bf04cd71abd345f9579158841376fdd0c5a", + "rev": "807e9154dcb16384b1b765ebe9cd2bba2ac287fd", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 68673c6..bb7366e 100644 --- a/flake.nix +++ b/flake.nix @@ -1,20 +1,8 @@ { inputs = { + # System inputs nixpkgs.url = "nixpkgs/nixos-24.05"; unstable.url = "nixpkgs/nixos-unstable"; - - home-manager = { - url = "github:nix-community/home-manager/release-24.05"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - - nur.url = "github:nix-community/NUR"; - chaotic = { - url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; - inputs.nixpkgs.follows = "unstable"; - }; - - blender-bin.url = "https://flakehub.com/f/edolstra/blender-bin/1.0.9.tar.gz"; hardware.url = "github:nixos/nixos-hardware/master"; lanzaboote = { @@ -22,21 +10,39 @@ inputs.nixpkgs.follows = "nixpkgs"; }; + disko = { + url = "github:nix-community/disko"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + impermanence.url = "github:nix-community/impermanence"; + chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; mailserver.url = "gitlab:simple-nixos-mailserver/nixos-mailserver/nixos-24.05"; minecraft.url = "github:Infinidoge/nix-minecraft"; + + # Home inputs + home-manager = { + url = "github:nix-community/home-manager/release-24.05"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + nur.url = "github:nix-community/NUR"; + blender-bin.url = "https://flakehub.com/f/edolstra/blender-bin/1.0.9.tar.gz"; }; outputs = { nixpkgs, unstable, - home-manager, - nur, - chaotic, - blender-bin, hardware, lanzaboote, + disko, + impermanence, + chaotic, mailserver, minecraft, + home-manager, + nur, + blender-bin, ... }: let @@ -45,11 +51,16 @@ specialArgs = { inherit unstable - chaotic hardware lanzaboote + disko + impermanence + chaotic mailserver minecraft + home-manager + nur + blender-bin ; }; }; @@ -66,7 +77,7 @@ in { # nixos-rebuild switch --flake .#hostname nixosConfigurations = { - firefly = mkNix [ ./hosts/firefly/system ]; # Main Desktop + firefly = mkNix [ ./hosts/firefly ]; # Main Desktop detritus = mkNix [ ./hosts/detritus/system ]; # Acer Desktop shuttle = mkNix [ ./hosts/shuttleworth/system ]; # Pinebook Pro @@ -78,18 +89,7 @@ bomberman = mkNix [ ./hosts/bomberman/system ]; # Oracle ARM }; - # home-manager switch --flake .#username@hostname - homeConfigurations = { - "jimbo@firefly" = mkHome [ ./hosts/firefly/home ] nixpkgs.legacyPackages.x86_64-linux; - "jimbo@detritus" = mkHome [ ./hosts/detritus/home ] nixpkgs.legacyPackages.x86_64-linux; - - "jimbo@shuttle" = mkHome [ ./hosts/shuttleworth/home ] nixpkgs.legacyPackages.aarch64-linux; - "jimbo@lacros" = mkHome [ ./hosts/lacros/home ] nixpkgs.legacyPackages.x86_64-linux; - "jimbo@redmond" = mkHome [ ./hosts/redmond/home ] nixpkgs.legacyPackages.x86_64-linux; - "jimbo@treefruit" = mkHome [ ./hosts/treefruit/home ] nixpkgs.legacyPackages.x86_64-linux; - - "jimbo@cyberspark" = mkHome [ ./hosts/cyberspark/home ] nixpkgs.legacyPackages.x86_64-linux; - "jimbo@bomberman" = mkHome [ ./hosts/bomberman/home ] nixpkgs.legacyPackages.aarch64-linux; - }; + # home-manager switch --flake .#username + homeConfigurations."jimbo" = mkHome [ ./modules/home ] nixpkgs.legacyPackages.x86_64-linux; }; } diff --git a/hosts/bomberman/home/default.nix b/hosts/bomberman/home/default.nix index c6c69e7..179fe6b 100644 --- a/hosts/bomberman/home/default.nix +++ b/hosts/bomberman/home/default.nix @@ -1,8 +1,6 @@ { ... }: { imports = [ - # Programs and apps - ../../../modules/home ../../../modules/home/users ../../../modules/home/programs/misc/headless ../../../modules/home/programs/terminal/fastfetch @@ -10,10 +8,7 @@ ../../../modules/home/programs/terminal/neovim ../../../modules/home/programs/terminal/ranger ../../../modules/home/programs/terminal/tmux - ../../../modules/home/utils/zsh - - # Misc + ../../../modules/home/programs/terminal/zsh ../../../variables/domains - ../../../variables/look/colors/purple ]; } diff --git a/hosts/bomberman/system/hardware/default.nix b/hosts/bomberman/system/hardware/default.nix index ef08aa9..6993892 100644 --- a/hosts/bomberman/system/hardware/default.nix +++ b/hosts/bomberman/system/hardware/default.nix @@ -31,7 +31,7 @@ fsType = "btrfs"; options = [ "subvol=@var" ]; }; - "/.snapshots" = { + "/snapshots" = { device = "/dev/disk/by-uuid/e50e186d-e5bc-40b0-9cd7-43b609cde3ea"; fsType = "btrfs"; options = [ "subvol=@snapshots" ]; diff --git a/hosts/cyberspark/home/default.nix b/hosts/cyberspark/home/default.nix index c6c69e7..f6f0850 100644 --- a/hosts/cyberspark/home/default.nix +++ b/hosts/cyberspark/home/default.nix @@ -1,19 +1,15 @@ { ... }: { imports = [ - # Programs and apps - ../../../modules/home ../../../modules/home/users + ../../../modules/home/settings/nix ../../../modules/home/programs/misc/headless ../../../modules/home/programs/terminal/fastfetch ../../../modules/home/programs/terminal/git ../../../modules/home/programs/terminal/neovim ../../../modules/home/programs/terminal/ranger ../../../modules/home/programs/terminal/tmux - ../../../modules/home/utils/zsh - - # Misc + ../../../modules/home/programs/terminal/zsh ../../../variables/domains - ../../../variables/look/colors/purple ]; } diff --git a/hosts/cyberspark/system/hardware/default.nix b/hosts/cyberspark/system/hardware/default.nix index 3654e22..275f7e3 100644 --- a/hosts/cyberspark/system/hardware/default.nix +++ b/hosts/cyberspark/system/hardware/default.nix @@ -27,97 +27,71 @@ # Main root fileSystems = { "/" = { - device = "/dev/disk/by-uuid/b8b7ed47-c98c-4a49-af01-b2832dde1287"; + device = "/dev/server/root"; fsType = "btrfs"; options = [ "subvol=@" ]; }; "/home" = { - device = "/dev/disk/by-uuid/b8b7ed47-c98c-4a49-af01-b2832dde1287"; + device = "/dev/server/root"; fsType = "btrfs"; options = [ "subvol=@home" ]; }; "/nix" = { - device = "/dev/disk/by-uuid/b8b7ed47-c98c-4a49-af01-b2832dde1287"; + device = "/dev/server/root"; fsType = "btrfs"; options = [ "subvol=@nix" ]; }; "/var" = { - device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325"; + device = "/dev/server/root"; fsType = "btrfs"; options = [ "subvol=@var" ]; }; "/srv/minecraft" = { - device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325"; + device = "/dev/server/root"; fsType = "btrfs"; options = [ "subvol=@minecraft" "compress=zstd" ]; }; - "/.snapshots" = { - device = "/dev/disk/by-uuid/b8b7ed47-c98c-4a49-af01-b2832dde1287"; - fsType = "btrfs"; - options = [ "subvol=@snapshots" ]; - }; "/boot" = { device = "/dev/disk/by-uuid/CD94-1D3F"; fsType = "vfat"; options = [ "fmask=0022" "dmask=0022" ]; }; - # Atrocity of subvols + # Files "/export/JimboNFS/Downloads" = { - device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325"; + device = "/dev/server/root"; fsType = "btrfs"; options = [ "subvol=@downloads" "compress=zstd" ]; }; "/export/JimboNFS/Documents" = { - device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325"; + device = "/dev/server/root"; fsType = "btrfs"; options = [ "subvol=@docs" "compress=zstd" ]; }; + + # Media "/export/JimboNFS/Photos" = { - device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325"; + device = "/dev/server/root"; fsType = "btrfs"; options = [ "subvol=@photos" "compress=zstd" ]; }; - "/export/JimboNFS/Videos/Random" = { - device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325"; + "/export/JimboNFS/Videos" = { + device = "/dev/server/root"; fsType = "btrfs"; - options = [ "subvol=@videos-random" "compress=zstd" ]; + options = [ "subvol=@videos" "compress=zstd" ]; }; - "/export/JimboNFS/Videos/Media" = { - device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325"; + + # Music + "/export/JimboNFS/Music" = { + device = "/dev/server/root"; fsType = "btrfs"; - options = [ "subvol=@videos-media" "compress=zstd" ]; - }; - "/export/JimboNFS/Music/Synced" = { - device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325"; - fsType = "btrfs"; - options = [ "subvol=@music-synced" "compress=zstd" ]; - }; - "/export/JimboNFS/Music/Unsynced" = { - device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325"; - fsType = "btrfs"; - options = [ "subvol=@music-unsynced" "compress=zstd" ]; - }; - "/export/JimboNFS/Projects" = { - device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325"; - fsType = "btrfs"; - options = [ "subvol=@projects" "compress=zstd" ]; - }; - "/export/JimboNFS/School" = { - device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325"; - fsType = "btrfs"; - options = [ "subvol=@school" "compress=zstd" ]; - }; - "/export/JimboNFS/.snapshots" = { - device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325"; - fsType = "btrfs"; - options = [ "subvol=@snapshots" "compress=zstd" ]; + options = [ "subvol=@music" "compress=zstd" ]; }; }; swapDevices = [ - { device = "/dev/disk/by-uuid/57178cfc-3e71-4d35-8c7f-e355f9dc84df"; } + { device = "/dev/server/root/swap"; } ]; networking.useDHCP = lib.mkDefault true; diff --git a/hosts/detritus/home/default.nix b/hosts/detritus/home/default.nix index dfff9bc..6a0e5c5 100644 --- a/hosts/detritus/home/default.nix +++ b/hosts/detritus/home/default.nix @@ -1,23 +1,7 @@ -{ config, nur, ... }: +{ ... }: { imports = [ - # Apps and programs ../../../modules/home - ../../../modules/home/users - ../../../modules/home/files - ../../../modules/home/settings - ../../../modules/home/programs ../../../modules/home/programs/misc/gaming/launchers - ../../../modules/home/programs/misc/remote-desktop - ../../../modules/home/sway - ../../../modules/home/utils - - # Misc - ../../../overlays - ../../../variables - ../../../variables/look/colors/green - - # Imports - nur.nixosModules.nur ]; } diff --git a/hosts/detritus/system/hardware/default.nix b/hosts/detritus/system/hardware/default.nix index 3fa540b..991ee2b 100644 --- a/hosts/detritus/system/hardware/default.nix +++ b/hosts/detritus/system/hardware/default.nix @@ -19,17 +19,12 @@ fsType = "btrfs"; options = [ "subvol=@home" ]; }; - "/var" = { - device = "/dev/disk/by-uuid/dc6e2cd9-040b-4104-8138-5dfa9cb5558c"; - fsType = "btrfs"; - options = [ "subvol=@var" ]; - }; "/nix" = { device = "/dev/disk/by-uuid/dc6e2cd9-040b-4104-8138-5dfa9cb5558c"; fsType = "btrfs"; options = [ "subvol=@nix" ]; }; - "/.snapshots" = { + "/snapshots" = { device = "/dev/disk/by-uuid/dc6e2cd9-040b-4104-8138-5dfa9cb5558c"; fsType = "btrfs"; options = [ "subvol=@snapshots" ]; diff --git a/hosts/firefly/boot/default.nix b/hosts/firefly/boot/default.nix new file mode 100644 index 0000000..7025b25 --- /dev/null +++ b/hosts/firefly/boot/default.nix @@ -0,0 +1,68 @@ +{ pkgs, lib, ... }: +let + commonKernelParams = [ + # Nvidia settings + "nvidia_drm.fbdev=1" + "nouveau.config=NvGspRm=1" + + # VM/GPU passthrough + "amd_iommu=on" + "iommu=pt" + "nested=1" + + # Virtualization nonsense + "transparent_hugepage=never" + + # Isolate devices into IOMMU groups + "pcie_acs_override=downstream,multifunction" + "pci=routeirq" + ]; +in { + boot = { + # HAS to be unstable to get the newest NVIDIA drivers + kernelPackages = pkgs.unstable.linuxPackages_latest; + blacklistedKernelModules = [ "pcspkr" ]; + kernel.sysctl."vm.max_map_count" = 2147483642; + kernelParams = commonKernelParams ++ [ "vfio-pci.ids=10de:1f82,10de:10fa" ]; + + initrd = { + systemd = { + enable = true; + services.root-reset = { + description = "Reset BTRFS root and snapshot last boot"; + wantedBy = [ "initrd.target" ]; + after = [ "dev-nixos-root.device" ]; + before = [ "sysroot.mount" ]; + unitConfig.DefaultDependencies = "no"; + serviceConfig.Type = "oneshot"; + script = '' + mkdir -p /mnt + mount /dev/nixos/root /mnt + + if [[ -e /mnt/@prev ]]; then + btrfs subvolume delete /mnt/@prev + fi + + btrfs subvolume snapshot /mnt/@ /mnt/@prev + + btrfs subvolume list -o /mnt/@ | cut -f9 -d' ' | while read subvolume; do + btrfs subvolume delete "/mnt/$subvolume" + done + + btrfs subvolume delete /mnt/@ + btrfs subvolume create /mnt/@ + + umount /mnt + ''; + }; + }; + }; + }; + + # Additional entry to boot from the second GPU + specialisation = { + gputwo.configuration = { + boot.kernelParams = commonKernelParams ++ [ "vfio-pci.ids=10de:2504,10de:228e" ]; + }; + }; +} diff --git a/hosts/firefly/default.nix b/hosts/firefly/default.nix new file mode 100644 index 0000000..1de3918 --- /dev/null +++ b/hosts/firefly/default.nix @@ -0,0 +1,37 @@ +{ chaotic, pkgs, ... }: +{ + imports = [ + ./boot + ./disko + ./hardware + + # Apps and programs + ../../modules/system + ../../modules/system/accounts + ../../modules/system/desktop + ../../modules/system/programs + ../../modules/system/services + ../../modules/system/services/pc/sunshine + ../../modules/system/services/pc/virtualization/qemu + + # Devices and hardware + ../../modules/system/devices + ../../modules/system/devices/boot/lanzaboote + ../../modules/system/devices/video/nvidia + ../../modules/system/devices/networking/firewall/pc + + # Misc + ../../overlays + ../../variables + + # Imports + chaotic.homeManagerModules.default + ]; + + programs.sway.package = pkgs.sway_git; + + networking.hostName = "firefly"; + + # Force Electron to use Wayland + environment.sessionVariables.NIXOS_OZONE_WL = "1"; +} diff --git a/hosts/firefly/disko/default.nix b/hosts/firefly/disko/default.nix new file mode 100644 index 0000000..0118394 --- /dev/null +++ b/hosts/firefly/disko/default.nix @@ -0,0 +1,95 @@ +{ disko, ... }: +{ + imports = [ + disko.nixosModules.disko + ]; + + disko.devices = { + disk = { + main = { + type = "disk"; + device = "/dev/nvme0n1"; + content = { + type = "gpt"; + partitions = { + ESP = { + size = "2G"; + type = "EF00"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + mountOptions = [ "fmask=0022" "dmask=0022" ]; + }; + }; + luks = { + size = "100%"; + content = { + type = "luks"; + name = "crypt-nvme"; + settings.allowDiscards = true; + #passwordFile = "/tmp/secret.key"; + content = { + type = "lvm_pv"; + vg = "nixos"; + }; + }; + }; + }; + }; + }; + }; + + lvm_vg = { + nixos = { + type = "lvm_vg"; + lvs = { + root = { + size = "100%"; + content = { + type = "btrfs"; + extraArgs = [ "-f" ]; + subvolumes = { + "/@" = { + mountpoint = "/"; + mountOptions = [ "compress=zstd" "noatime" ]; + }; + "/@prev" = { + mountpoint = "/prev"; + mountOptions = [ "compress=zstd" "noatime" ]; + }; + "/@nix" = { + mountpoint = "/nix"; + mountOptions = [ "compress=zstd" "noatime" ]; + }; + + # Impermanence + "/@root" = { + mountpoint = "/persist"; + mountOptions = [ "compress=zstd" "noatime" ]; + }; + "/@jimbo" = { + mountpoint = "/persist/home/jimbo"; + mountOptions = [ "compress=zstd" "noatime" ]; + }; + }; + }; + }; + swap = { + size = "8G"; + content = { + type = "swap"; + discardPolicy = "both"; + }; + }; + }; + }; + }; + }; + + # Needed for impermanence + fileSystems = { + "/persist".neededForBoot = true; + "/persist/home/jimbo".neededForBoot = true; + }; +} diff --git a/hosts/firefly/system/hardware/default.nix b/hosts/firefly/hardware/default.nix similarity index 54% rename from hosts/firefly/system/hardware/default.nix rename to hosts/firefly/hardware/default.nix index 33e0ac7..6c4891d 100644 --- a/hosts/firefly/system/hardware/default.nix +++ b/hosts/firefly/hardware/default.nix @@ -21,45 +21,20 @@ }; fileSystems = { - "/" = { - device = "/dev/disk/by-uuid/bbfed7d1-62f2-4d8e-b63f-7f6ec932105b"; - fsType = "btrfs"; - options = [ "subvol=@" "noatime" "nodiratime" "discard" ]; + # Useful system mounts + "/etc/libvirt" = { + device = "/dev/disk/by-uuid/f18a0302-9914-471d-828c-85ab1a67a8be"; + options = [ "nosuid" "nodev" "nofail" ]; }; - "/home" = { - device = "/dev/disk/by-uuid/bbfed7d1-62f2-4d8e-b63f-7f6ec932105b"; - fsType = "btrfs"; - options = [ "subvol=@home" "noatime" "nodiratime" "discard" ]; + "/etc/libvirt/VMs/Bulk" = { + depends = [ "/etc/libvirt" ]; + device = "/dev/disk/by-uuid/3eb36c3e-81ac-4281-89f0-c89242d88dd6"; + options = [ "nosuid" "nodev" "nofail" ]; }; - "/nix" = { - device = "/dev/disk/by-uuid/bbfed7d1-62f2-4d8e-b63f-7f6ec932105b"; - fsType = "btrfs"; - options = [ "subvol=@nix" "noatime" "nodiratime" "discard" ]; - }; - "/etc/nixos" = { - device = "/dev/disk/by-uuid/bbfed7d1-62f2-4d8e-b63f-7f6ec932105b"; - fsType = "btrfs"; - options = [ "subvol=@nixconf" "noatime" "nodiratime" "discard" ]; - }; - "/etc/secureboot" = { - device = "/dev/disk/by-uuid/bbfed7d1-62f2-4d8e-b63f-7f6ec932105b"; - fsType = "btrfs"; - options = [ "subvol=@secureboot" "noatime" "nodiratime" "discard" ]; - }; - "/var" = { - device = "/dev/disk/by-uuid/bbfed7d1-62f2-4d8e-b63f-7f6ec932105b"; - fsType = "btrfs"; - options = [ "subvol=@var" "noatime" "nodiratime" "discard" ]; - }; - "/.snapshots" = { - device = "/dev/disk/by-uuid/bbfed7d1-62f2-4d8e-b63f-7f6ec932105b"; - fsType = "btrfs"; - options = [ "subvol=@snapshots" "noatime" "nodiratime" "discard" ]; - }; - "/boot" = { - device = "/dev/disk/by-uuid/3B4A-76C9"; - fsType = "vfat"; - options = [ "fmask=0022" "dmask=0022" ]; + "/var/lib/libvirt" = { + depends = [ "/etc/libvirt" ]; + device = "/etc/libvirt/varlibvirt"; + options = [ "bind" "rw" ]; }; # Games and such @@ -80,22 +55,6 @@ options = [ "nosuid" "nodev" "noauto" ]; }; - # Miscellaneous mounts - "/etc/libvirt" = { - device = "/dev/disk/by-uuid/f18a0302-9914-471d-828c-85ab1a67a8be"; - options = [ "nosuid" "nodev" "nofail" ]; - }; - "/etc/libvirt/VMs/Bulk" = { - depends = [ "/etc/libvirt" ]; - device = "/dev/disk/by-uuid/3eb36c3e-81ac-4281-89f0-c89242d88dd6"; - options = [ "nosuid" "nodev" "nofail" ]; - }; - "/var/lib/libvirt" = { - depends = [ "/etc/libvirt" ]; - device = "/etc/libvirt/varlibvirt"; - options = [ "bind" "rw" ]; - }; - # Network mounts "/home/jimbo/JimboNFS" = { device = "${config.ips.server}:/export/JimboNFS"; @@ -105,7 +64,7 @@ }; swapDevices = [ - { device = "/dev/disk/by-uuid/1a6a68d0-8ae7-4836-a585-b708597937a1"; } + { device = "/dev/nixos/swap"; } ]; networking.useDHCP = lib.mkDefault true; diff --git a/hosts/firefly/home/default.nix b/hosts/firefly/home/default.nix deleted file mode 100644 index 41029b5..0000000 --- a/hosts/firefly/home/default.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ nur, config, ... }: -{ - imports = [ - # Apps and programs - ../../../modules/home - ../../../modules/home/users - ../../../modules/home/files - ../../../modules/home/settings - ../../../modules/home/programs - ../../../modules/home/programs/misc/production - ../../../modules/home/programs/misc/gaming/launchers - ../../../modules/home/programs/misc/gaming/xash3d - ../../../modules/home/programs/misc/school - ../../../modules/home/sway - ../../../modules/home/utils - - # Misc - ../../../overlays - ../../../variables - ../../../variables/look/colors/red - - # Imports - nur.nixosModules.nur - ]; - - wayland.windowManager.sway.config.output.${config.displays.d1}.allow_tearing = "yes"; -} diff --git a/hosts/firefly/system/boot/default.nix b/hosts/firefly/system/boot/default.nix deleted file mode 100644 index 9fb40b9..0000000 --- a/hosts/firefly/system/boot/default.nix +++ /dev/null @@ -1,46 +0,0 @@ -{ pkgs, ... }: -let - commonKernelParams = [ - # Nvidia settings - "nvidia_drm.fbdev=1" - "nouveau.config=NvGspRm=1" - - # VM/GPU passthrough - "amd_iommu=on" - "iommu=pt" - "nested=1" - - # Virtualization nonsense - "transparent_hugepage=never" - - # Isolate devices into IOMMU groups - "pcie_acs_override=downstream,multifunction" - "pci=routeirq" - ]; -in { - boot = { - kernelPackages = pkgs.unstable.linuxPackages_zen; - blacklistedKernelModules = [ "pcspkr" ]; - kernel.sysctl."vm.max_map_count" = 2147483642; - kernelParams = commonKernelParams ++ [ "vfio-pci.ids=10de:1f82,10de:10fa" ]; - - # Encryption and TPM - initrd = { - systemd.enable = true; - luks.devices = { - "crypt-nvme" = { - device = "/dev/disk/by-uuid/52110c74-19b6-40ef-9710-e6c9b157005f"; - preLVM = true; - allowDiscards = true; - }; - }; - }; - }; - - # Additional entry to boot from the second GPU - specialisation = { - gputwo.configuration = { - boot.kernelParams = commonKernelParams ++ [ "vfio-pci.ids=10de:2504,10de:228e" ]; - }; - }; -} diff --git a/hosts/firefly/system/default.nix b/hosts/firefly/system/default.nix deleted file mode 100644 index 6511ff1..0000000 --- a/hosts/firefly/system/default.nix +++ /dev/null @@ -1,37 +0,0 @@ -{ chaotic, pkgs, ... }: -{ - imports = [ - ./hardware - ./boot - - # Apps and programs - ../../../modules/system - ../../../modules/system/accounts - ../../../modules/system/desktop - ../../../modules/system/programs - ../../../modules/system/services - ../../../modules/system/services/pc/sunshine - ../../../modules/system/services/pc/school - ../../../modules/system/services/pc/virtualization/qemu - - # Devices and hardware - ../../../modules/system/devices - ../../../modules/system/devices/boot/lanzaboote - ../../../modules/system/devices/video/nvidia - ../../../modules/system/devices/networking/firewall/pc - - # Misc - ../../../overlays - ../../../variables - - # Imports - chaotic.homeManagerModules.default - ]; - - programs.sway.package = pkgs.sway_git; - - networking.hostName = "firefly"; - - # Force Electron to use Wayland - environment.sessionVariables.NIXOS_OZONE_WL = "1"; -} diff --git a/hosts/lacros/home/default.nix b/hosts/lacros/home/default.nix index b51a8c8..7e85b70 100644 --- a/hosts/lacros/home/default.nix +++ b/hosts/lacros/home/default.nix @@ -1,22 +1,7 @@ -{ config, nur, ... }: +{ ... }: { imports = [ - # Apps and programs ../../../modules/home - ../../../modules/home/users - ../../../modules/home/files - ../../../modules/home/settings - ../../../modules/home/programs ../../../modules/home/programs/misc/remote-desktop - ../../../modules/home/sway - ../../../modules/home/utils - - # Misc - ../../../overlays - ../../../variables - ../../../variables/look/colors/orange - - # Imports - nur.nixosModules.nur ]; } diff --git a/hosts/lacros/system/hardware/default.nix b/hosts/lacros/system/hardware/default.nix index f194288..4693d78 100644 --- a/hosts/lacros/system/hardware/default.nix +++ b/hosts/lacros/system/hardware/default.nix @@ -25,7 +25,7 @@ fsType = "btrfs"; options = [ "subvol=@var" "noatime" "nodiratime" "discard" ]; }; - "/.snapshots" = { + "/snapshots" = { device = "/dev/disk/by-uuid/e8c9c5a8-4df0-4100-8de6-f08a1a774fad"; fsType = "btrfs"; options = [ "subvol=@snapshots" "noatime" "nodiratime" "discard" ]; diff --git a/hosts/redmond/home/default.nix b/hosts/redmond/home/default.nix index b8ab842..b388a2f 100644 --- a/hosts/redmond/home/default.nix +++ b/hosts/redmond/home/default.nix @@ -1,24 +1,8 @@ -{ config, nur, ... }: +{ ... }: { imports = [ - # Apps and programs ../../../modules/home - ../../../modules/home/users - ../../../modules/home/files - ../../../modules/home/settings - ../../../modules/home/programs - ../../../modules/home/programs/misc/production ../../../modules/home/programs/misc/gaming/launchers ../../../modules/home/programs/misc/remote-desktop - ../../../modules/home/sway - ../../../modules/home/utils - - # Misc - ../../../overlays - ../../../variables - ../../../variables/look/colors/green - - # Imports - nur.nixosModules.nur ]; } diff --git a/hosts/shuttle/home/default.nix b/hosts/shuttle/home/default.nix index bb9098c..0fa1a90 100644 --- a/hosts/shuttle/home/default.nix +++ b/hosts/shuttle/home/default.nix @@ -1,27 +1,8 @@ -{ config, pkgs, nur, ... }: +{ config, pkgs, ... }: { imports = [ - # Apps and programs ../../../modules/home - ../../../modules/home/users - ../../../modules/home/files - ../../../modules/home/settings - ../../../modules/home/programs ../../../modules/home/programs/misc/remote-desktop - ../../../modules/home/sway - ../../../modules/home/utils - - # Misc - ../../../overlays - ../../../variables - ../../../variables/look/colors/purple - - # Imports - nur.nixosModules.nur - ]; - - home.packages = with pkgs; [ - alsa-utils ]; wayland.windowManager.sway.config.output.${config.displays.dI}.scale = "1.3"; diff --git a/hosts/shuttle/system/hardware/default.nix b/hosts/shuttle/system/hardware/default.nix index ab8a862..5394ed0 100644 --- a/hosts/shuttle/system/hardware/default.nix +++ b/hosts/shuttle/system/hardware/default.nix @@ -27,7 +27,7 @@ "/home/jimbo/JimboNFS" = { device = "${config.ips.wgSpan}.1:/export/JimboNFS"; fsType = "nfs4"; - options = ["x-systemd.automount" "_netdev" "nofail" "noauto"]; + options = [ "x-systemd.automount" "_netdev" "nofail" "noauto" ]; }; }; diff --git a/hosts/treefruit/home/default.nix b/hosts/treefruit/home/default.nix index 074429f..a2266b9 100644 --- a/hosts/treefruit/home/default.nix +++ b/hosts/treefruit/home/default.nix @@ -1,25 +1,9 @@ -{ config, nur, ... }: +{ config, ... }: { imports = [ - # Apps and programs ../../../modules/home - ../../../modules/home/users - ../../../modules/home/files - ../../../modules/home/settings - ../../../modules/home/programs ../../../modules/home/programs/misc/production ../../../modules/home/programs/misc/gaming/launchers - ../../../modules/home/programs/misc/gaming/xash3d ../../../modules/home/programs/misc/remote-desktop - ../../../modules/home/sway - ../../../modules/home/utils - - # Misc - ../../../overlays - ../../../variables - ../../../variables/look/colors/green - - # Imports - nur.nixosModules.nur ]; } diff --git a/hosts/treefruit/system/hardware/default.nix b/hosts/treefruit/system/hardware/default.nix index 22ca3bc..b456c08 100644 --- a/hosts/treefruit/system/hardware/default.nix +++ b/hosts/treefruit/system/hardware/default.nix @@ -4,7 +4,13 @@ boot = { kernelModules = [ "kvm-intel" ]; initrd = { - availableKernelModules = [ "xhci_pci" "nvme" "usbhid" "usb_storage" "sd_mod" ]; + availableKernelModules = [ + "xhci_pci" + "nvme" + "usbhid" + "usb_storage" + "sd_mod" + ]; kernelModules = [ "dm-snapshot" ]; }; }; @@ -30,7 +36,7 @@ fsType = "btrfs"; options = [ "subvol=@var" ]; }; - "/.snapshots" = { + "/snapshots" = { device = "/dev/disk/by-uuid/db67d9e8-2ead-4fe6-8a63-5c9e5071e06e"; fsType = "btrfs"; options = [ "subvol=@snapshots" ]; diff --git a/modules/home/default.nix b/modules/home/default.nix index 1feed84..4a2e512 100644 --- a/modules/home/default.nix +++ b/modules/home/default.nix @@ -1,6 +1,16 @@ -{ ... }: +{ nur, ... }: { - programs.home-manager.enable = true; - nixpkgs.config.allowUnfree = true; - home.stateVersion = "24.05"; + imports = [ + ./files + ./programs + ./services + ./settings + ./sway + ./users + ../../overlays + ../../variables + + # Imports + nur.nixosModules.nur + ]; } diff --git a/modules/home/files/assets/lockscreens/holymoly/lock.png b/modules/home/files/assets/lockscreen/lock.png similarity index 100% rename from modules/home/files/assets/lockscreens/holymoly/lock.png rename to modules/home/files/assets/lockscreen/lock.png diff --git a/modules/home/files/assets/wallpapers/purplespace/1.png b/modules/home/files/assets/wallpapers/1.png similarity index 100% rename from modules/home/files/assets/wallpapers/purplespace/1.png rename to modules/home/files/assets/wallpapers/1.png diff --git a/modules/home/files/assets/wallpapers/purplespace/2.png b/modules/home/files/assets/wallpapers/2.png similarity index 100% rename from modules/home/files/assets/wallpapers/purplespace/2.png rename to modules/home/files/assets/wallpapers/2.png diff --git a/modules/home/files/assets/wallpapers/purplespace/3.png b/modules/home/files/assets/wallpapers/3.png similarity index 100% rename from modules/home/files/assets/wallpapers/purplespace/3.png rename to modules/home/files/assets/wallpapers/3.png diff --git a/modules/home/files/assets/wallpapers/dogmatica/1.png b/modules/home/files/assets/wallpapers/dogmatica/1.png deleted file mode 100644 index 40f21e7..0000000 Binary files a/modules/home/files/assets/wallpapers/dogmatica/1.png and /dev/null differ diff --git a/modules/home/files/assets/wallpapers/dogmatica/2.png b/modules/home/files/assets/wallpapers/dogmatica/2.png deleted file mode 100644 index 42d7de1..0000000 Binary files a/modules/home/files/assets/wallpapers/dogmatica/2.png and /dev/null differ diff --git a/modules/home/files/assets/wallpapers/dogmatica/3.png b/modules/home/files/assets/wallpapers/dogmatica/3.png deleted file mode 100644 index 029ec5f..0000000 Binary files a/modules/home/files/assets/wallpapers/dogmatica/3.png and /dev/null differ diff --git a/modules/home/files/assets/wallpapers/hillorange/1.png b/modules/home/files/assets/wallpapers/hillorange/1.png deleted file mode 100644 index 0ed3607..0000000 Binary files a/modules/home/files/assets/wallpapers/hillorange/1.png and /dev/null differ diff --git a/modules/home/files/assets/wallpapers/hillorange/2.png b/modules/home/files/assets/wallpapers/hillorange/2.png deleted file mode 100644 index 5dfc477..0000000 Binary files a/modules/home/files/assets/wallpapers/hillorange/2.png and /dev/null differ diff --git a/modules/home/files/assets/wallpapers/hillorange/3.png b/modules/home/files/assets/wallpapers/hillorange/3.png deleted file mode 100644 index 85dbbea..0000000 Binary files a/modules/home/files/assets/wallpapers/hillorange/3.png and /dev/null differ diff --git a/modules/home/files/assets/wallpapers/leaves/1.png b/modules/home/files/assets/wallpapers/leaves/1.png deleted file mode 100644 index 8ec765b..0000000 Binary files a/modules/home/files/assets/wallpapers/leaves/1.png and /dev/null differ diff --git a/modules/home/files/assets/wallpapers/leaves/2.png b/modules/home/files/assets/wallpapers/leaves/2.png deleted file mode 100644 index 69a4568..0000000 Binary files a/modules/home/files/assets/wallpapers/leaves/2.png and /dev/null differ diff --git a/modules/home/files/assets/wallpapers/leaves/3.png b/modules/home/files/assets/wallpapers/leaves/3.png deleted file mode 100644 index 3312d13..0000000 Binary files a/modules/home/files/assets/wallpapers/leaves/3.png and /dev/null differ diff --git a/modules/home/files/default.nix b/modules/home/files/default.nix index e640b39..8656069 100644 --- a/modules/home/files/default.nix +++ b/modules/home/files/default.nix @@ -7,10 +7,10 @@ source = ./assets/pfp.png; }; ".assets/wallpapers" = { - source = ./assets/wallpapers/${config.look.colors.wallpapers}; + source = ./assets/wallpapers; }; ".assets/lockscreen" = { - source = ./assets/lockscreens/holymoly; + source = ./assets/lockscreen; }; ".icons/default" = { source = "${pkgs.simp1e-cursors}/share/icons/Simp1e-Dark"; diff --git a/modules/home/programs/gui/easyeffects/default.nix b/modules/home/programs/gui/easyeffects/default.nix index 817b42d..00e42ff 100644 --- a/modules/home/programs/gui/easyeffects/default.nix +++ b/modules/home/programs/gui/easyeffects/default.nix @@ -1,11 +1,11 @@ { pkgs, ... }: { - home = { - packages = with pkgs; [ - easyeffects - ]; - file = { - ".config/easyeffects/output/JimHeadphones.json".source = ./JimHeadphones.json; - }; + services.easyeffects = { + enable = true; + preset = "headphones"; + }; + + home.file = { + ".config/easyeffects/output/headphones.json".source = ./headphones.json; }; } diff --git a/modules/home/programs/gui/easyeffects/JimHeadphones.json b/modules/home/programs/gui/easyeffects/headphones.json similarity index 100% rename from modules/home/programs/gui/easyeffects/JimHeadphones.json rename to modules/home/programs/gui/easyeffects/headphones.json diff --git a/modules/home/programs/gui/librewolf/default.nix b/modules/home/programs/gui/librewolf/default.nix index 6cf9e4b..3893ec2 100644 --- a/modules/home/programs/gui/librewolf/default.nix +++ b/modules/home/programs/gui/librewolf/default.nix @@ -312,7 +312,7 @@ in { ]; } ]; - definedAliases = ["@g"]; + definedAliases = [ "@g" ]; }; "NixPKGs" = { urls = [ @@ -331,7 +331,7 @@ in { } ]; icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; - definedAliases = ["@pkgs"]; + definedAliases = [ "@pkgs" ]; }; }; }; @@ -348,6 +348,7 @@ in { "privacy.userContext.newTabContainerOnLeftClick.enabled" = true; "privacy.clearOnShutdown.history" = false; "privacy.clearOnShutdown.cookies" = false; + "privacy.clearOnShutdown_v2.cookiesAndStorage" = false; "browser.toolbars.bookmarks.visibility" = "never"; "media.hardware-video-decoding.force-enabled" = true; "svg.context-properties.content.enabled" = true; @@ -400,7 +401,7 @@ in { icon = "fingerprint"; id = 200; }; - Seneca = { + Work = { color = "red"; icon = "briefcase"; id = 201; diff --git a/modules/home/programs/gui/mako/default.nix b/modules/home/programs/gui/mako/default.nix index c818efc..67e7b6e 100644 --- a/modules/home/programs/gui/mako/default.nix +++ b/modules/home/programs/gui/mako/default.nix @@ -14,7 +14,12 @@ defaultTimeout = 6000; font = "${config.look.fonts.main} 12"; anchor = "bottom-right"; - extraConfig = "on-button-right=dismiss-all\nouter-margin=10\n[mode=do-not-disturb]\ninvisible=1"; + extraConfig = '' + on-button-right=dismiss-all + outer-margin=10 + [mode=do-not-disturb] + invisible=1 + ''; }; home.packages = let @@ -36,7 +41,5 @@ makoctl mode -a do-not-disturb fi ''; - in with pkgs; [ - makoToggle - ]; + in with pkgs; [ makoToggle ]; } diff --git a/modules/home/programs/gui/mangohud/default.nix b/modules/home/programs/gui/mangohud/default.nix index 4ce3b0d..f46d2b2 100644 --- a/modules/home/programs/gui/mangohud/default.nix +++ b/modules/home/programs/gui/mangohud/default.nix @@ -1,10 +1,9 @@ { pkgs, ... }: { home = { - packages = with pkgs; [ - mangohud - ]; + packages = with pkgs; [ mangohud ]; file = { + # I know options exist for this, but the order is not respected. ".config/MangoHud/MangoHud.conf".text = '' table_columns=2 frametime=0 @@ -12,7 +11,6 @@ font_scale=0.80 background_alpha=0.25 - # Set the loads and such exec=echo $(echo $XDG_CURRENT_DESKTOP | sed 's/./\U&/') on $(cat /etc/os-release | grep PRETTY_NAME | cut -d '"' -f 2) fps fps_color_change diff --git a/modules/home/programs/gui/mpv/default.nix b/modules/home/programs/gui/mpv/default.nix index 1e9e4d4..c914a42 100644 --- a/modules/home/programs/gui/mpv/default.nix +++ b/modules/home/programs/gui/mpv/default.nix @@ -1,7 +1,12 @@ -{ ... }: +{ pkgs, ... }: { programs.mpv = { enable = true; + scripts = with pkgs.mpvScripts; [ + mpris + sponsorblock + thumbnail + ]; config = { volume = 55; loop-playlist = "inf"; diff --git a/modules/home/programs/misc/avtools/default.nix b/modules/home/programs/misc/avtools/default.nix index e70d63f..2dd1ba2 100644 --- a/modules/home/programs/misc/avtools/default.nix +++ b/modules/home/programs/misc/avtools/default.nix @@ -5,6 +5,7 @@ spotdl playerctl ffmpeg + alsa-utils puddletag pulsemixer ]; diff --git a/modules/home/programs/misc/chat/default.nix b/modules/home/programs/misc/chat/default.nix index aea297b..bc0722e 100644 --- a/modules/home/programs/misc/chat/default.nix +++ b/modules/home/programs/misc/chat/default.nix @@ -1,4 +1,4 @@ -{ pkgs, lib, config, ... }: +{ pkgs, ... }: { home.packages = with pkgs; [ vesktop diff --git a/modules/home/programs/misc/default.nix b/modules/home/programs/misc/default.nix index 52a332d..75be3b4 100644 --- a/modules/home/programs/misc/default.nix +++ b/modules/home/programs/misc/default.nix @@ -3,7 +3,11 @@ imports = [ ./avtools ./chat + ./gaming ./general ./headless + ./production + ./remote-desktop + ./school ]; } diff --git a/modules/home/programs/misc/gaming/emulators/default.nix b/modules/home/programs/misc/gaming/emulators/default.nix index 8acaf48..0187369 100644 --- a/modules/home/programs/misc/gaming/emulators/default.nix +++ b/modules/home/programs/misc/gaming/emulators/default.nix @@ -1,4 +1,4 @@ -{ pkgs, lib, config, ... }: +{ pkgs, ... }: { home.packages = with pkgs; [ dolphin-emu @@ -6,6 +6,6 @@ ryujinx duckstation pcsx2 - #lime3ds + #unstable.lime3ds ]; } diff --git a/modules/home/programs/misc/gaming/launchers/default.nix b/modules/home/programs/misc/gaming/launchers/default.nix index 7fc5aa9..1ab83f4 100644 --- a/modules/home/programs/misc/gaming/launchers/default.nix +++ b/modules/home/programs/misc/gaming/launchers/default.nix @@ -1,4 +1,4 @@ -{ pkgs, lib, config, ... }: +{ pkgs, ... }: { home.packages = with pkgs; [ steam diff --git a/modules/home/programs/misc/gaming/xash3d/default.nix b/modules/home/programs/misc/gaming/xash3d/default.nix index 2158606..b951409 100644 --- a/modules/home/programs/misc/gaming/xash3d/default.nix +++ b/modules/home/programs/misc/gaming/xash3d/default.nix @@ -1,6 +1,4 @@ -{ pkgs, lib, config, ... }: +{ pkgs, ... }: { - home.packages = with pkgs; [ - xash3d - ]; + home.packages = with pkgs; [ xash3d ]; } diff --git a/modules/home/programs/misc/general/default.nix b/modules/home/programs/misc/general/default.nix index 4efce08..f512473 100644 --- a/modules/home/programs/misc/general/default.nix +++ b/modules/home/programs/misc/general/default.nix @@ -1,4 +1,4 @@ -{ pkgs, lib, config, ... }: +{ pkgs, ... }: { home.packages = with pkgs; [ imv diff --git a/modules/home/programs/misc/headless/default.nix b/modules/home/programs/misc/headless/default.nix index 9bc4853..add2892 100644 --- a/modules/home/programs/misc/headless/default.nix +++ b/modules/home/programs/misc/headless/default.nix @@ -2,12 +2,9 @@ { home.packages = with pkgs; [ gotop - tcptrack p7zip vimv dua - pciutils - usbutils protonvpn-cli_2 ]; } diff --git a/modules/home/programs/misc/production/default.nix b/modules/home/programs/misc/production/default.nix index 6f881db..180b51f 100644 --- a/modules/home/programs/misc/production/default.nix +++ b/modules/home/programs/misc/production/default.nix @@ -1,15 +1,12 @@ { pkgs, blender-bin, ... }: { - imports = [ - ./obs - ]; + imports = [ ./obs ]; home.packages = with pkgs; [ krita inkscape audacity blender_4_2 - sunvox ]; nixpkgs.overlays = [ blender-bin.overlays.default ]; diff --git a/modules/home/programs/misc/production/obs/default.nix b/modules/home/programs/misc/production/obs/default.nix index 164ffe2..e3f0923 100644 --- a/modules/home/programs/misc/production/obs/default.nix +++ b/modules/home/programs/misc/production/obs/default.nix @@ -1,4 +1,4 @@ -{ pkgs, lib, config, ... }: +{ pkgs, ... }: { programs.obs-studio = { enable = true; diff --git a/modules/home/programs/misc/school/default.nix b/modules/home/programs/misc/school/default.nix index 10320e6..b35640f 100644 --- a/modules/home/programs/misc/school/default.nix +++ b/modules/home/programs/misc/school/default.nix @@ -4,6 +4,6 @@ remmina freerdp zoom-us - globalprotect-openconnect + unstable.gpauth ]; } diff --git a/modules/home/programs/terminal/default.nix b/modules/home/programs/terminal/default.nix index 4c16f71..680d658 100644 --- a/modules/home/programs/terminal/default.nix +++ b/modules/home/programs/terminal/default.nix @@ -7,5 +7,6 @@ ./neovim ./ranger ./tmux + ./zsh ]; } diff --git a/modules/home/utils/zsh/default.nix b/modules/home/programs/terminal/zsh/default.nix similarity index 81% rename from modules/home/utils/zsh/default.nix rename to modules/home/programs/terminal/zsh/default.nix index 9b04257..cb7adf5 100644 --- a/modules/home/utils/zsh/default.nix +++ b/modules/home/programs/terminal/zsh/default.nix @@ -18,10 +18,8 @@ # Flake commands flakedate = "doas nix flake update /etc/nixos"; - sysswitch = "doas nixos-rebuild switch --flake /etc/nixos"; - homeswitch = "home-manager switch --flake /etc/nixos"; - nixswitch = "sysswitch; homeswitch"; - nixdate = "flakedate && sysswitch; homeswitch"; + nixswitch = "doas nixos-rebuild switch --flake /etc/nixos"; + nixdate = "flakedate && nixswitch"; # Shortcut aliases neo = "clear && fastfetch"; @@ -38,8 +36,7 @@ myip = "curl ifconfig.co"; # Download from sources - ytdl = "yt-dlp --embed-thumbnail --embed-metadata --output \"%(title)s.%(ext)s\""; - ytmp4 = "ytdl --recode-video webm"; + ytdl = ''yt-dlp --embed-thumbnail --embed-metadata --output "%(title)s.%(ext)s"''; ytm3u = "yt-dlp -gS proto:m3u8"; opusdl = "ytdl --recode-video opus"; ytopus = "opusdl --format 251"; diff --git a/modules/home/utils/default.nix b/modules/home/services/default.nix similarity index 86% rename from modules/home/utils/default.nix rename to modules/home/services/default.nix index 2bbeeda..4c21448 100644 --- a/modules/home/utils/default.nix +++ b/modules/home/services/default.nix @@ -3,6 +3,5 @@ imports = [ ./gnome-keyring ./udiskie - ./zsh ]; } diff --git a/modules/home/utils/gnome-keyring/default.nix b/modules/home/services/gnome-keyring/default.nix similarity index 100% rename from modules/home/utils/gnome-keyring/default.nix rename to modules/home/services/gnome-keyring/default.nix diff --git a/modules/home/utils/udiskie/default.nix b/modules/home/services/udiskie/default.nix similarity index 100% rename from modules/home/utils/udiskie/default.nix rename to modules/home/services/udiskie/default.nix diff --git a/modules/home/settings/default.nix b/modules/home/settings/default.nix index 23945be..7e86920 100644 --- a/modules/home/settings/default.nix +++ b/modules/home/settings/default.nix @@ -4,6 +4,7 @@ ./dconf ./fonts ./gtk + ./nix ./xdg ]; } diff --git a/modules/home/settings/fonts/default.nix b/modules/home/settings/fonts/default.nix index d6ef4f7..81f05e0 100644 --- a/modules/home/settings/fonts/default.nix +++ b/modules/home/settings/fonts/default.nix @@ -1,4 +1,5 @@ -{ pkgs, ... }: { +{ pkgs, ... }: +{ home.packages = with pkgs; [ liberation_ttf twitter-color-emoji diff --git a/modules/home/settings/nix/default.nix b/modules/home/settings/nix/default.nix new file mode 100644 index 0000000..17c5f66 --- /dev/null +++ b/modules/home/settings/nix/default.nix @@ -0,0 +1,5 @@ +{ ... }: +{ + nixpkgs.config.allowUnfree = true; + home.stateVersion = "24.05"; +} diff --git a/modules/home/sway/default.nix b/modules/home/sway/default.nix index 80f8412..d40d318 100644 --- a/modules/home/sway/default.nix +++ b/modules/home/sway/default.nix @@ -28,10 +28,6 @@ url = "https://raw.githubusercontent.com/iguanajuice/sway-font-awesome/6b7a9d08974eea1b9cddb8d444e1c89d6837083a/icons"; sha256 = "09ki5qw1h91kd33k3fwzq7cb6ck8sq4haswgizrsy387sfr2a75x"; }} - - # Switch to workspace 1 - workspace ${config.ws.w7} - workspace ${config.ws.w1} ''; }; } diff --git a/modules/home/sway/hotkeys/default.nix b/modules/home/sway/hotkeys/default.nix index d9021b8..70f4797 100644 --- a/modules/home/sway/hotkeys/default.nix +++ b/modules/home/sway/hotkeys/default.nix @@ -5,8 +5,8 @@ # Set default modifier and variables primeMod = "Mod4"; secMod = "Mod1"; - resizeAmount = ''55''; - sendNotif = ''notify-send --expire-time=1500''; + resizeAmount = "55"; + sendNotif = "notify-send --expire-time=1500"; in { # Hotkeys modifier = "${primeMod}"; diff --git a/modules/home/sway/programs/default.nix b/modules/home/sway/programs/default.nix index 9e0d6e6..92a7d7d 100644 --- a/modules/home/sway/programs/default.nix +++ b/modules/home/sway/programs/default.nix @@ -1,14 +1,15 @@ { pkgs, ... }: { home.packages = with pkgs; [ - wl-clipboard - wdisplays clipman + swaybg libnotify grim slurp swappy - jq lm_sensors + wl-clipboard + wdisplays + jq ]; } diff --git a/modules/home/sway/rules/default.nix b/modules/home/sway/rules/default.nix index 84ff75d..92f5eac 100644 --- a/modules/home/sway/rules/default.nix +++ b/modules/home/sway/rules/default.nix @@ -5,30 +5,30 @@ # Assign workspaces to config workspaceOutputAssign = let workspaces1 = [ - "${config.ws.w0}" - "${config.ws.w1}" - "${config.ws.w2}" - "${config.ws.w3}" - "${config.ws.w1a}" - "${config.ws.w2a}" - "${config.ws.w3a}" - ]; + "${config.ws.w0}" + "${config.ws.w1}" + "${config.ws.w2}" + "${config.ws.w3}" + "${config.ws.w1a}" + "${config.ws.w2a}" + "${config.ws.w3a}" + ]; workspaces2 = [ - "${config.ws.w4}" - "${config.ws.w5}" - "${config.ws.w6}" - "${config.ws.w4a}" - "${config.ws.w5a}" - "${config.ws.w6a}" - ]; + "${config.ws.w4}" + "${config.ws.w5}" + "${config.ws.w6}" + "${config.ws.w4a}" + "${config.ws.w5a}" + "${config.ws.w6a}" + ]; workspaces3 = [ - "${config.ws.w7}" - "${config.ws.w8}" - "${config.ws.w9}" - "${config.ws.w7a}" - "${config.ws.w8a}" - "${config.ws.w9a}" - ]; + "${config.ws.w7}" + "${config.ws.w8}" + "${config.ws.w9}" + "${config.ws.w7a}" + "${config.ws.w8a}" + "${config.ws.w9a}" + ]; assign = output: workspaces: map (workspace: { inherit workspace; @@ -37,94 +37,103 @@ workspaces; in (assign "${config.displays.d1}" workspaces1) ++ - (assign "${config.displays.d2}" workspaces2) ++ - (assign "${config.displays.d3}" workspaces3); + (assign "${config.displays.d2}" workspaces2) ++ + (assign "${config.displays.d3}" workspaces3); # Rules + defaultWorkspace = config.ws.w1; + window = { border = config.look.border.int; titlebar = false; commands = [ # Scratchpads { - criteria = {con_mark = "scratchpad";}; + criteria = { con_mark = "scratchpad"; }; command = ''floating enable, sticky enable, move scratchpad, mark borderless''; } { - criteria = {app_id = "gotop";}; + criteria = { app_id = "gotop"; }; command = ''mark scratchpad''; } { - criteria = {app_id = "music";}; + criteria = { app_id = "music"; }; command = ''mark scratchpad''; } { - criteria = {app_id = "sound";}; + criteria = { app_id = "sound"; }; command = ''mark scratchpad''; } { - criteria = {app_id = "com.github.wwmm.easyeffects";}; + criteria = { app_id = "com.github.wwmm.easyeffects"; }; command = ''mark scratchpad, opacity 0.9''; } # Create a "Scratchpad" for apps I don't want to be seen when launched { - criteria = {con_mark = "hiddenaway";}; + criteria = { con_mark = "hiddenaway"; }; command = ''move scratchpad''; } # Give apps that don't have them borders { - criteria = {con_mark = "borderless";}; + criteria = { con_mark = "borderless"; }; command = ''border pixel ${config.look.border.string}''; } { - criteria = {app_id = "com.github.wwmm.easyeffects";}; + criteria = { app_id = "com.github.wwmm.easyeffects"; }; command = ''mark borderless''; } { - criteria = {class = "steam";}; + criteria = { class = "steam"; }; command = ''mark borderless''; } { - criteria = {app_id = "swappy";}; + criteria = { app_id = "swappy"; }; command = ''mark borderless''; } { - criteria = {app_id = "virt-manager";}; + criteria = { app_id = "virt-manager"; }; command = ''mark borderless''; } { - criteria = {window_role = "pop-up";}; + criteria = { window_role = "pop-up"; }; command = ''mark borderless''; } # Floating or fullscreen rules { - criteria = {app_id = "float";}; + criteria = { app_id = "float"; }; command = ''floating enable''; } { - criteria = {title = "^GlobalShot";}; + criteria = { title = "^GlobalShot"; }; command = ''floating enable, fullscreen enable global''; } ]; }; assigns = { # Broconfig.wsers - "${config.ws.w1}" = [{app_id = "MainBrowser";}]; - "${config.ws.w1a}" = [{app_id = "AltBrowser";}]; + "${config.ws.w1}" = [{ app_id = "MainBrowser"; }]; + "${config.ws.w1a}" = [{ app_id = "AltBrowser"; }]; # Communication - "${config.ws.w3a}" = [{class = "zoom";}]; - "${config.ws.w7}" = [{app_id = "MiscBrowser";} {app_id = "vesktop";} {class = "vesktop";}]; - "${config.ws.w8}" = [{app_id = "org.gnome.Fractal";}]; - "${config.ws.w9}" = [{app_id = "thunderbird";}]; + "${config.ws.w3a}" = [{ class = "zoom"; }]; + "${config.ws.w7}" = [ + { app_id = "MiscBrowser"; } + { app_id = "vesktop"; } + { class = "vesktop"; } + ]; + "${config.ws.w8}" = [{ app_id = "org.gnome.Fractal"; }]; + "${config.ws.w9}" = [{ app_id = "thunderbird"; }]; - # Else - "${config.ws.w2}" = [{class = "steam";} {app_id = "heroic";}]; - "${config.ws.w2a}" = [{app_id = "looking-glass-client";}]; - "${config.ws.w4a}" = [{app_id = "com.obsproject.Studio";}]; + # Etc + "${config.ws.w2}" = [ + { class = "steam"; } + {app_id = "heroic";} + ]; + "${config.ws.w2a}" = [{ app_id = "looking-glass-client"; }]; + "${config.ws.w4a}" = [{ app_id = "com.obsproject.Studio"; }]; }; focus.newWindow = "focus"; }; diff --git a/modules/home/sway/waybar/default.nix b/modules/home/sway/waybar/default.nix index f7f400a..d601c94 100644 --- a/modules/home/sway/waybar/default.nix +++ b/modules/home/sway/waybar/default.nix @@ -47,15 +47,14 @@ vramModule = { exec = pkgs.writeScript "vramScript" '' # Don't run the script if running on integrated graphics - if lspci -k | grep "Kernel driver in use: nvidia" &> /dev/null || lspci -k | grep "Kernel driver in use: amdgpu" &> /dev/null; then + gpu_driver=$(${pkgs.pciutils}/bin/lspci -k | grep -Eo "in use: (nvidia|amdgpu)" | awk '{print $3}') - # Run the nvidia-smi command and capture the VRAM usage and GPU utilization output - if lspci -k | grep "Kernel driver in use: nvidia" &> /dev/null; then + 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) - # Check the drm memory if an AMD GPU is present - elif lspci -k | grep "Kernel driver in use: amdgpu" &> /dev/null; then + 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=$(sensors | grep 'edge' | awk '{print $2}' | sed 's/[^0-9.-]//g') fi @@ -69,10 +68,8 @@ vram_usage_display="$(echo $vram_usage_gib)G" fi - # Print the VRAM usage in MB or GiB, and include GPU utilization and temperature - echo "{\"text\":\"󰢮 $(echo $vram_usage_display)\",\"tooltip\":\"$(echo $temperature)°C\"}" - else - : + # Print the VRAM usage and temperature + echo "{\"text\":\"󰢮 $(echo $vram_usage_display)\",\"tooltip\":\"$(echo $temperature)°C\"}" fi ''; format = "{}"; diff --git a/modules/system/accounts/users/default.nix b/modules/system/accounts/users/default.nix index f37ca73..3794404 100644 --- a/modules/system/accounts/users/default.nix +++ b/modules/system/accounts/users/default.nix @@ -1,9 +1,12 @@ -{ ... }: +{ home-manager, ... }: { imports = [ ./jimbo ./liquidsoap ./nextcloud ./nginx + home-manager.nixosModules.home-manager ]; + + users.mutableUsers = false; } diff --git a/modules/system/accounts/users/jimbo/default.nix b/modules/system/accounts/users/jimbo/default.nix index dbf7f8f..3d23233 100644 --- a/modules/system/accounts/users/jimbo/default.nix +++ b/modules/system/accounts/users/jimbo/default.nix @@ -1,4 +1,4 @@ -{ pkgs, config, ... }: +{ pkgs, config, unstable, nur, blender-bin, ... }: { users.users = { jimbo = { @@ -26,7 +26,6 @@ "input" "disk" "dialout" - "networkmanager" "rtkit" "kvm" "libvirtd" @@ -39,4 +38,17 @@ shell = pkgs.zsh; }; }; + + home-manager = { + useUserPackages = true; + backupFileExtension = "backup"; + extraSpecialArgs = { + inherit + unstable + nur + blender-bin + ; + }; + users.jimbo = import ../../../../home; + }; } diff --git a/modules/system/desktop/sway/default.nix b/modules/system/desktop/sway/default.nix index 5b08f9a..da4e966 100644 --- a/modules/system/desktop/sway/default.nix +++ b/modules/system/desktop/sway/default.nix @@ -2,31 +2,14 @@ { imports = [ ./greetd + ./portals ]; programs.sway = { enable = true; - xwayland.enable = true; - extraPackages = with pkgs; [ - swaylock - swaybg - ]; + extraPackages = with pkgs; [ swaylock ]; }; # Allow swaylock to function security.pam.services.swaylock = {}; - - xdg.portal = { - wlr = { - enable = true; - settings.screencast = { - max_fps = 60; - chooser_type = "simple"; - chooser_cmd = "${pkgs.slurp}/bin/slurp -f %o -or -B 00000066 -b 00000099"; - }; - }; - extraPortals = with pkgs; [ - xdg-desktop-portal-gtk - ]; - }; } diff --git a/modules/system/desktop/sway/greetd/default.nix b/modules/system/desktop/sway/greetd/default.nix index 47b4461..7a43f00 100644 --- a/modules/system/desktop/sway/greetd/default.nix +++ b/modules/system/desktop/sway/greetd/default.nix @@ -1,34 +1,32 @@ { pkgs, ... }: { - services = { - # Configure greetd for "auto" login (single user only) - greetd = let - startSway = pkgs.writeScript "startsway" '' - if lspci -k | grep "Kernel driver in use: nvidia" &> /dev/null; then - export LIBVA_DRIVER_NAME=nvidia - export GBM_BACKEND=nvidia-drm - export __GLX_VENDOR_LIBRARY_NAME=nvidia - else - : - fi + # Configure greetd for login directly to Sway + services.greetd = let + startSway = pkgs.writeScript "startsway" '' + if ${pkgs.pciutils}/bin/lspci -k | grep "in use: nvidia" &> /dev/null; then + export LIBVA_DRIVER_NAME=nvidia + export GBM_BACKEND=nvidia-drm + export __GLX_VENDOR_LIBRARY_NAME=nvidia + else + : + fi - export XDG_CURRENT_DESKTOP=sway - export QT_QPA_PLATFORM="wayland;xcb" + export XDG_CURRENT_DESKTOP=sway + export QT_QPA_PLATFORM="wayland;xcb" - sway --unsupported-gpu - ''; - in { - enable = true; - restart = true; - settings = { - terminal = { - vt = 2; - switch = true; - }; - default_session = { - command = "${startSway}"; - user = "jimbo"; - }; + sway --unsupported-gpu + ''; + in { + enable = true; + restart = true; + settings = { + terminal = { + vt = 2; + switch = true; + }; + default_session = { + command = "${startSway}"; + user = "jimbo"; }; }; }; diff --git a/modules/system/desktop/sway/portals/default.nix b/modules/system/desktop/sway/portals/default.nix new file mode 100644 index 0000000..64f9c2a --- /dev/null +++ b/modules/system/desktop/sway/portals/default.nix @@ -0,0 +1,16 @@ +{ pkgs, ... }: +{ + xdg.portal = { + wlr = { + enable = true; + settings.screencast = { + max_fps = 60; + chooser_type = "simple"; + chooser_cmd = "${pkgs.slurp}/bin/slurp -f %o -or -B 00000066 -b 00000099"; + }; + }; + extraPortals = with pkgs; [ + xdg-desktop-portal-gtk + ]; + }; +} diff --git a/modules/system/desktop/wayland/default.nix b/modules/system/desktop/wayland/default.nix index 7b446ae..bedb8cf 100644 --- a/modules/system/desktop/wayland/default.nix +++ b/modules/system/desktop/wayland/default.nix @@ -3,7 +3,6 @@ programs = { dconf.enable = true; light.enable = true; - xwayland.enable = true; }; services = { diff --git a/modules/system/devices/audio/default.nix b/modules/system/devices/audio/default.nix new file mode 100644 index 0000000..2a81b20 --- /dev/null +++ b/modules/system/devices/audio/default.nix @@ -0,0 +1,20 @@ +{ pkgs, ... }: +{ + services.pipewire = { + enable = true; + wireplumber = { + enable = true; + configPackages = [ + (pkgs.writeTextDir "share/wireplumber/wireplumber.conf.d/11-bluetooth-policy.conf" '' + wireplumber.settings = { bluetooth.autoswitch-to-headset-profile = false } + '') + ]; + }; + alsa = { + enable = true; + support32Bit = true; + }; + pulse.enable = true; + #jack.enable = true; + }; +} diff --git a/modules/system/devices/default.nix b/modules/system/devices/default.nix index 64ae809..41d1b70 100644 --- a/modules/system/devices/default.nix +++ b/modules/system/devices/default.nix @@ -1,10 +1,11 @@ { ... }: { imports = [ + ./audio ./bluetooth ./filesystems + ./impermanence ./networking - ./pipewire ./printing ./udev ./video diff --git a/modules/system/devices/impermanence/default.nix b/modules/system/devices/impermanence/default.nix new file mode 100644 index 0000000..6792f2a --- /dev/null +++ b/modules/system/devices/impermanence/default.nix @@ -0,0 +1,8 @@ +{ impermanence, ... }: +{ + imports = [ + ./root + ./jimbo + impermanence.nixosModules.impermanence + ]; +} diff --git a/modules/system/devices/impermanence/jimbo/default.nix b/modules/system/devices/impermanence/jimbo/default.nix new file mode 100644 index 0000000..ad244aa --- /dev/null +++ b/modules/system/devices/impermanence/jimbo/default.nix @@ -0,0 +1,37 @@ +{ ... }: +{ + environment.persistence."/persist" = { + hideMounts = true; + users.jimbo = { + directories = [ + "Downloads" + "Documents" + "Games" + "Pictures" + "Videos" + ".snapshots" + ".mozilla" + ".thunderbird" + + ".config/blender" + ".config/vesktop" + ".config/sunshine" + ".config/heroic" + ".config/obs-studio" + + ".local/share/nvim/undo" + ".local/share/fractal" + ".local/share/PrismLauncher" + ".local/share/Steam" + + { directory = ".ssh"; mode = "0700"; } + { directory = ".gnupg"; mode = "0700"; } + { directory = ".local/share/keyrings"; mode = "0700"; } + ]; + files = [ + ".zsh_history" + ".local/share/clipman.json" + ]; + }; + }; +} diff --git a/modules/system/devices/impermanence/root/default.nix b/modules/system/devices/impermanence/root/default.nix new file mode 100644 index 0000000..35cc19b --- /dev/null +++ b/modules/system/devices/impermanence/root/default.nix @@ -0,0 +1,24 @@ +{ ... }: +{ + environment.persistence."/persist" = { + hideMounts = true; + directories = [ + "/etc/nixos" + "/etc/secureboot" + + "/var/log" + "/var/lib/bluetooth" + "/var/lib/mpd" + "/var/lib/nixos" + "/var/lib/fail2ban" + "/var/lib/systemd/coredump" + ]; + files = [ + "/etc/machine-id" + "/etc/ssh/ssh_host_ed25519_key" + "/etc/ssh/ssh_host_ed25519_key.pub" + "/etc/ssh/ssh_host_rsa_key" + "/etc/ssh/ssh_host_rsa_key.pub" + ]; + }; +} diff --git a/modules/system/devices/networking/default.nix b/modules/system/devices/networking/default.nix index 1abbd40..952c3dc 100644 --- a/modules/system/devices/networking/default.nix +++ b/modules/system/devices/networking/default.nix @@ -4,5 +4,9 @@ wireless.enable = false; dhcpcd.enable = true; nftables.enable = true; + nameservers = [ + "1.1.1.1" + "1.1.1.2" + ]; }; } diff --git a/modules/system/devices/networking/wireguard/pc/default.nix b/modules/system/devices/networking/wireguard/pc/default.nix index f120f77..8c9d8e6 100644 --- a/modules/system/devices/networking/wireguard/pc/default.nix +++ b/modules/system/devices/networking/wireguard/pc/default.nix @@ -1,22 +1,22 @@ { config, ... }: { - networking.firewall = { - allowedUDPPorts = [ 51820 ]; - }; + networking = { + firewall.allowedUDPPorts = [ 51820 ]; - networking.wireguard.interfaces = { - "${config.ips.wgInt}" = { - # Define IP of client in per device config - listenPort = 51820; - privateKey = config.secrets.wgClientPriv; - peers = [ - { - publicKey = "qnOT/lXOJMaQgDUdXpyfGZB2IEyUouRje2m/bCe9ux8="; - allowedIPs = [ "${config.ips.wgSpan}.0/24" ]; - endpoint = "sv.${config.domains.jim1}:51820"; - persistentKeepalive = 25; - } - ]; + wireguard.interfaces = { + "${config.ips.wgInt}" = { + # Define IP of client in per device config + listenPort = 51820; + privateKey = config.secrets.wgClientPriv; + peers = [ + { # NixOS Server + publicKey = "qnOT/lXOJMaQgDUdXpyfGZB2IEyUouRje2m/bCe9ux8="; + allowedIPs = [ "${config.ips.wgSpan}.0/24" ]; + endpoint = "sv.${config.domains.jim1}:51820"; + persistentKeepalive = 25; + } + ]; + }; }; }; } diff --git a/modules/system/devices/networking/wireguard/server/default.nix b/modules/system/devices/networking/wireguard/server/default.nix index ec01605..d551ff2 100644 --- a/modules/system/devices/networking/wireguard/server/default.nix +++ b/modules/system/devices/networking/wireguard/server/default.nix @@ -6,12 +6,10 @@ externalInterface = "${config.ips.netInt}"; internalInterfaces = [ "${config.ips.wgInt}" ]; }; - firewall.allowedUDPPorts = [ 51820 ]; - }; - networking.wireguard = { - enable = true; - interfaces = { + firewall.allowedUDPPorts = [ 51820 ]; + + wireguard.interfaces = { "${config.ips.wgInt}" = { ips = [ "${config.ips.wgSpan}.1/24" ]; listenPort = 51820; diff --git a/modules/system/devices/networking/wireless/default.nix b/modules/system/devices/networking/wireless/default.nix index 73f6087..20f0542 100644 --- a/modules/system/devices/networking/wireless/default.nix +++ b/modules/system/devices/networking/wireless/default.nix @@ -5,7 +5,5 @@ enableB43Firmware = true; }; - environment.systemPackages = with pkgs; [ - unstable.impala - ]; + environment.systemPackages = with pkgs; [ unstable.impala ]; } diff --git a/modules/system/devices/pipewire/default.nix b/modules/system/devices/pipewire/default.nix deleted file mode 100644 index 2b2a50d..0000000 --- a/modules/system/devices/pipewire/default.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ pkgs, ... }: -{ - services = { - pipewire = { - enable = true; - audio.enable = true; - wireplumber = { - enable = true; - configPackages = [( - pkgs.writeTextDir "share/wireplumber/wireplumber.conf.d/11-bluetooth-policy.conf" '' - wireplumber.settings = { bluetooth.autoswitch-to-headset-profile = false } - '' - )]; - }; - alsa = { - enable = true; - support32Bit = true; - }; - pulse.enable = true; - #jack.enable = true; - }; - }; -} diff --git a/modules/system/devices/printing/default.nix b/modules/system/devices/printing/default.nix index 5c509da..5621942 100644 --- a/modules/system/devices/printing/default.nix +++ b/modules/system/devices/printing/default.nix @@ -3,7 +3,7 @@ services = { printing = { enable = true; - drivers = with pkgs; [hplip]; + drivers = with pkgs; [ hplip ]; webInterface = false; }; avahi = { diff --git a/modules/system/devices/udev/oculus/default.nix b/modules/system/devices/udev/oculus/default.nix index db86902..1302300 100644 --- a/modules/system/devices/udev/oculus/default.nix +++ b/modules/system/devices/udev/oculus/default.nix @@ -7,8 +7,6 @@ destination = "/etc/udev/rules.d/10-oculus.rules"; }; in { - packages = [ - oculusRules - ]; + packages = [ oculusRules ]; }; } diff --git a/modules/system/devices/udev/pdp/default.nix b/modules/system/devices/udev/pdp/default.nix index 652309f..bba5fd8 100644 --- a/modules/system/devices/udev/pdp/default.nix +++ b/modules/system/devices/udev/pdp/default.nix @@ -7,8 +7,6 @@ destination = "/etc/udev/rules.d/10-pdp.rules"; }; in { - packages = [ - pdpRules - ]; + packages = [ pdpRules ]; }; } diff --git a/modules/system/services/pc/default.nix b/modules/system/services/pc/default.nix index 8eb0044..bf26507 100644 --- a/modules/system/services/pc/default.nix +++ b/modules/system/services/pc/default.nix @@ -1,11 +1,11 @@ { ... }: { imports = [ - ./fwupd ./gnome-keyring + ./gvfs ./keyd ./mpd - ./networkfs ./polkit + ./snapper ]; } diff --git a/modules/system/services/pc/fwupd/default.nix b/modules/system/services/pc/fwupd/default.nix deleted file mode 100644 index 9052a1d..0000000 --- a/modules/system/services/pc/fwupd/default.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ pkgs, ... }: -{ - services.fwupd.enable = true; - - environment.systemPackages = with pkgs; [ - fwupd - ]; -} diff --git a/modules/system/services/pc/networkfs/default.nix b/modules/system/services/pc/gvfs/default.nix similarity index 100% rename from modules/system/services/pc/networkfs/default.nix rename to modules/system/services/pc/gvfs/default.nix diff --git a/modules/system/services/pc/keyd/default.nix b/modules/system/services/pc/keyd/default.nix index 20e30cf..9d7cac5 100644 --- a/modules/system/services/pc/keyd/default.nix +++ b/modules/system/services/pc/keyd/default.nix @@ -8,7 +8,6 @@ main = { capslock = "overload(control,esc)"; leftcontrol = "overload(ctrlmod,noop)"; - esc = "`"; rightcontrol = "esc"; left = "noop"; diff --git a/modules/system/services/pc/school/default.nix b/modules/system/services/pc/school/default.nix deleted file mode 100644 index e5756bd..0000000 --- a/modules/system/services/pc/school/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ ... }: -{ - imports = [ - ./globalprotect - ]; -} diff --git a/modules/system/services/pc/school/globalprotect/default.nix b/modules/system/services/pc/school/globalprotect/default.nix deleted file mode 100644 index a124cad..0000000 --- a/modules/system/services/pc/school/globalprotect/default.nix +++ /dev/null @@ -1,4 +0,0 @@ -{ ... }: -{ - services.globalprotect.enable = true; -} diff --git a/modules/system/services/pc/snapper/default.nix b/modules/system/services/pc/snapper/default.nix new file mode 100644 index 0000000..a4291bf --- /dev/null +++ b/modules/system/services/pc/snapper/default.nix @@ -0,0 +1,13 @@ +{ ... }: +{ + imports = [ + ./root + ./jimbo + ]; + + services.snapper = { + snapshotInterval = "0/6:00:00"; + cleanupInterval = "12:00:00"; + persistentTimer = true; + }; +} diff --git a/modules/system/services/pc/snapper/jimbo/default.nix b/modules/system/services/pc/snapper/jimbo/default.nix new file mode 100644 index 0000000..56e07d5 --- /dev/null +++ b/modules/system/services/pc/snapper/jimbo/default.nix @@ -0,0 +1,12 @@ +{ ... }: +{ + services.snapper.configs.jimbo = { + SUBVOLUME = "/persist/home/jimbo"; + TIMELINE_CREATE = true; + TIMELINE_CLEANUP = true; + TIMELINE_LIMIT_DAILY = 1; + TIMELINE_LIMIT_WEEKLY = 1; + TIMELINE_LIMIT_MONTHLY = 0; + TIMELINE_LIMIT_YEARLY = 0; + }; +} diff --git a/modules/system/services/pc/snapper/root/default.nix b/modules/system/services/pc/snapper/root/default.nix new file mode 100644 index 0000000..92e28cf --- /dev/null +++ b/modules/system/services/pc/snapper/root/default.nix @@ -0,0 +1,12 @@ +{ ... }: +{ + services.snapper.configs.root = { + SUBVOLUME = "/persist"; + TIMELINE_CREATE = true; + TIMELINE_CLEANUP = true; + TIMELINE_LIMIT_DAILY = 1; + TIMELINE_LIMIT_WEEKLY = 0; + TIMELINE_LIMIT_MONTHLY = 0; + TIMELINE_LIMIT_YEARLY = 0; + }; +} diff --git a/modules/system/services/pc/sunshine/default.nix b/modules/system/services/pc/sunshine/default.nix index e73dccb..b5d5f99 100644 --- a/modules/system/services/pc/sunshine/default.nix +++ b/modules/system/services/pc/sunshine/default.nix @@ -2,7 +2,6 @@ { services.sunshine = { enable = true; - settings.port = 57989; autoStart = false; }; } diff --git a/modules/system/services/server/fileserver/local/samba/default.nix b/modules/system/services/server/fileserver/local/samba/default.nix index 7236f2d..fa1b694 100644 --- a/modules/system/services/server/fileserver/local/samba/default.nix +++ b/modules/system/services/server/fileserver/local/samba/default.nix @@ -5,24 +5,25 @@ enable = true; securityType = "user"; openFirewall = true; - extraConfig = '' - workgroup = WORKGROUP - server string = JimSMB - security = user - hosts allow = ${config.ips.localSpan}. 127.0.0.1 localhost - hosts deny = 0.0.0.0/0 - guest account = nobody - map to guest = bad user - ''; - shares = { - roms = { - comment = "Samba share with my ROMs"; - path = "/export/JimboNFS/Downloads/GameFiles/ROMS"; - browseable = "yes"; + settings = { + global = { + "workgroup" = "WORKGROUP"; + "server string" = "JimSMB"; + "security" = "user"; + "hosts allow" = "${config.ips.localSpan}. 127.0.0.1 localhost"; + "hosts deny" = "0.0.0.0/0"; + "guest account" = "nobody"; + "map to guest" = "bad user"; + }; + "roms" = { + "path" = "/export/JimboNFS/Downloads/GameFiles/ROMS"; + "browseable" = "yes"; "read only" = "no"; - "guest ok" = "no"; + "guest ok" = "yes"; "create mask" = "0644"; "directory mask" = "0755"; + "force user" = "username"; + "force group" = "groupname"; }; }; }; diff --git a/modules/system/services/server/social/matrix/synapse/coturn/default.nix b/modules/system/services/server/social/matrix/synapse/coturn/default.nix index 01c1913..159648f 100644 --- a/modules/system/services/server/social/matrix/synapse/coturn/default.nix +++ b/modules/system/services/server/social/matrix/synapse/coturn/default.nix @@ -12,7 +12,7 @@ min-port = 49000; max-port = 50000; use-auth-secret = true; - static-auth-secret = "will be world readable for local users :("; + static-auth-secret = config.secrets.coturnSecret; realm = "turn.${config.domains.jim1}"; cert = "/var/lib/acme/turn.${config.domains.jim1}.com/fullchain.pem"; pkey = "/var/lib/acme/turn.${config.domains.jim1}.com/key.pem"; @@ -24,7 +24,7 @@ "turn:turn.${config.domains.jim1}:3478?transport=udp" "turn:turn.${config.domains.jim1}:3478?transport=tcp" ]; - turn_shared_secret = config.services.coturn.static-auth-secret; + turn_shared_secret = config.secrets.coturnSecret; turn_user_lifetime = "1h"; }; }; @@ -32,10 +32,12 @@ # Open coturn ports networking.firewall = { allowedUDPPorts = [ - 3478 5349 - ]; - allowedUDPPortRanges = [ - { from = 49000; to = 50000; } + 3478 + 5349 ]; + allowedUDPPortRanges = [{ + from = config.services.coturn.min-port; + to = config.services.coturn.max-port; + }]; }; } diff --git a/modules/system/services/server/social/matrix/synapse/default.nix b/modules/system/services/server/social/matrix/synapse/default.nix index d889c86..2fb7b5e 100644 --- a/modules/system/services/server/social/matrix/synapse/default.nix +++ b/modules/system/services/server/social/matrix/synapse/default.nix @@ -13,14 +13,16 @@ public_baseurl = "https://matrix.${config.domains.jim1}"; suppress_key_server_warning = true; - listeners = [{ - port = 8008; - bind_addresses = [ "::" "0.0.0.0" ]; - resources = [ { compress = false; names = [ "client" "federation" ]; } ]; - type = "http"; - tls = false; - x_forwarded = true; - }]; + listeners = [ + { + port = 8008; + bind_addresses = [ "::" "0.0.0.0" ]; + resources = [ { compress = true; names = [ "client" "federation" ]; } ]; + type = "http"; + tls = false; + x_forwarded = true; + } + ]; email = { notif_from = "Jimbo's Matrix "; diff --git a/modules/system/services/server/transmission/default.nix b/modules/system/services/server/transmission/default.nix index b8d7b05..9bc9405 100644 --- a/modules/system/services/server/transmission/default.nix +++ b/modules/system/services/server/transmission/default.nix @@ -8,8 +8,6 @@ enable = true; credentialsFile = pkgs.writeText "credentials" config.secrets.transmissionCredFile; openPeerPorts = true; - settings = { - rpc-authentication-required = true; - }; + settings.rpc-authentication-required = true; }; } diff --git a/overlays/default.nix b/overlays/default.nix index 69ca9f8..c24e25c 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -1,8 +1,7 @@ -{ pkgs, ... }: +{ ... }: { imports = [ - ./unstable ./packages - ./mpv + ./unstable ]; } diff --git a/overlays/mpv/default.nix b/overlays/mpv/default.nix deleted file mode 100644 index a98eb9c..0000000 --- a/overlays/mpv/default.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ unstable, ... }: -{ - nixpkgs.overlays = [ - (self: super: { - mpv = super.mpv.override { - scripts = with self.mpvScripts; [ - mpris - sponsorblock - thumbnail - ]; - }; - }) - ]; -} diff --git a/variables/look/colors/purple/default.nix b/variables/look/colors/default.nix similarity index 93% rename from variables/look/colors/purple/default.nix rename to variables/look/colors/default.nix index 00d8f56..d8247e0 100644 --- a/variables/look/colors/purple/default.nix +++ b/variables/look/colors/default.nix @@ -15,8 +15,6 @@ light = "272b33"; #272B33 urgent = "C43823"; #C43823 text = "C7D3E3"; #C7D3E3 - folder = "indigo"; - wallpapers = "purplespace"; }; } diff --git a/variables/look/colors/green/default.nix b/variables/look/colors/green/default.nix deleted file mode 100644 index bc7fbb3..0000000 --- a/variables/look/colors/green/default.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ lib, config, ... }: -{ - options.look.colors = lib.mkOption { - type = lib.types.attrs; - default = {}; - }; - - config.look.colors = { - prime = "12c949"; #12c949 - accent = "115622"; #115622 - split = "2c7250"; #2c7250 - actSplit = "457551"; #457551 - dark = "101911"; #101911 - mid = "17231c"; #17231c - light = "263327"; #263327 - urgent = "C43823"; #C43823 - text = "C7D3E3"; #C7D3E3 - - folder = "green"; - wallpapers = "leaves"; - }; -} diff --git a/variables/look/colors/orange/default.nix b/variables/look/colors/orange/default.nix deleted file mode 100644 index 1d4785f..0000000 --- a/variables/look/colors/orange/default.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ lib, config, ... }: -{ - options.look.colors = lib.mkOption { - type = lib.types.attrs; - default = {}; - }; - - config.look.colors = { - prime = "f4a61f"; #f4a61f - accent = "684820"; #684820 - split = "9e8955"; #9e8955 - actSplit = "c9ae68"; #c9ae68 - dark = "101419"; #101419 - mid = "191810"; #191810 - light = "332e26"; #332e26 - urgent = "C43823"; #C43823 - text = "C7D3E3"; #C7D3E3 - - folder = "orange"; - wallpapers = "hillorange"; - }; -} diff --git a/variables/look/colors/red/default.nix b/variables/look/colors/red/default.nix deleted file mode 100644 index fd647c3..0000000 --- a/variables/look/colors/red/default.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ lib, config, ... }: -{ - options.look.colors = lib.mkOption { - type = lib.types.attrs; - default = {}; - }; - - config.look.colors = { - prime = "c91236"; #c91236 - accent = "56111f"; #56111f - split = "722d51"; #722d51 - actSplit = "754566"; #754566 - dark = "191016"; #191016 - mid = "23171d"; #23171d - light = "332926"; #332926 - urgent = "C43823"; #C43823 - text = "C7D3E3"; #C7D3E3 - - folder = "red"; - wallpapers = "dogmatica"; - }; -} diff --git a/variables/look/default.nix b/variables/look/default.nix index 0fd75f1..a5930b9 100644 --- a/variables/look/default.nix +++ b/variables/look/default.nix @@ -2,6 +2,7 @@ { imports = [ ./border + ./colors ./fonts ]; } diff --git a/variables/secrets/default.nix b/variables/secrets/default.nix index 6febffc..1cbcd89 100644 Binary files a/variables/secrets/default.nix and b/variables/secrets/default.nix differ