diff --git a/common/nixos/desktop.nix b/common/system/desktop.nix similarity index 94% rename from common/nixos/desktop.nix rename to common/system/desktop.nix index 155b420..0d44b03 100644 --- a/common/nixos/desktop.nix +++ b/common/system/desktop.nix @@ -6,19 +6,22 @@ ... }: { imports = [ - "${inputs.impermanence}/nixos.nix" - ./features/avahi.nix ./features/bluetooth.nix ./features/command-not-found.nix + ./features/flatpak.nix ./features/fonts.nix ./features/fwupd.nix ./features/geoclue.nix + ./features/mullvad.nix ./features/opengl.nix ./features/openssh.nix + ./features/opentabletdriver.nix ./features/pipewire.nix ./features/plasma.nix + ./features/printing.nix ./features/sops.nix + ./features/steam.nix ./features/sudo.nix ./features/users.nix ]; diff --git a/common/nixos/features/avahi.nix b/common/system/features/avahi.nix similarity index 100% rename from common/nixos/features/avahi.nix rename to common/system/features/avahi.nix diff --git a/common/nixos/features/bluetooth.nix b/common/system/features/bluetooth.nix similarity index 100% rename from common/nixos/features/bluetooth.nix rename to common/system/features/bluetooth.nix diff --git a/common/nixos/features/command-not-found.nix b/common/system/features/command-not-found.nix similarity index 100% rename from common/nixos/features/command-not-found.nix rename to common/system/features/command-not-found.nix diff --git a/nixos/features/flatpak.nix b/common/system/features/flatpak.nix similarity index 100% rename from nixos/features/flatpak.nix rename to common/system/features/flatpak.nix diff --git a/common/nixos/features/fonts.nix b/common/system/features/fonts.nix similarity index 100% rename from common/nixos/features/fonts.nix rename to common/system/features/fonts.nix diff --git a/common/nixos/features/fwupd.nix b/common/system/features/fwupd.nix similarity index 100% rename from common/nixos/features/fwupd.nix rename to common/system/features/fwupd.nix diff --git a/common/nixos/features/geoclue.nix b/common/system/features/geoclue.nix similarity index 100% rename from common/nixos/features/geoclue.nix rename to common/system/features/geoclue.nix diff --git a/common/system/features/mullvad.nix b/common/system/features/mullvad.nix new file mode 100644 index 0000000..85b77bf --- /dev/null +++ b/common/system/features/mullvad.nix @@ -0,0 +1,3 @@ +{ + services.mullvad-vpn.enable = true; +} diff --git a/common/nixos/features/opengl.nix b/common/system/features/opengl.nix similarity index 100% rename from common/nixos/features/opengl.nix rename to common/system/features/opengl.nix diff --git a/common/nixos/features/openssh.nix b/common/system/features/openssh.nix similarity index 100% rename from common/nixos/features/openssh.nix rename to common/system/features/openssh.nix diff --git a/nixos/features/opentabletdriver.nix b/common/system/features/opentabletdriver.nix similarity index 100% rename from nixos/features/opentabletdriver.nix rename to common/system/features/opentabletdriver.nix diff --git a/common/nixos/features/pipewire.nix b/common/system/features/pipewire.nix similarity index 100% rename from common/nixos/features/pipewire.nix rename to common/system/features/pipewire.nix diff --git a/common/nixos/features/plasma.nix b/common/system/features/plasma.nix similarity index 100% rename from common/nixos/features/plasma.nix rename to common/system/features/plasma.nix diff --git a/nixos/features/printing.nix b/common/system/features/printing.nix similarity index 100% rename from nixos/features/printing.nix rename to common/system/features/printing.nix diff --git a/common/nixos/features/sops.nix b/common/system/features/sops.nix similarity index 100% rename from common/nixos/features/sops.nix rename to common/system/features/sops.nix diff --git a/nixos/features/steam.nix b/common/system/features/steam.nix similarity index 100% rename from nixos/features/steam.nix rename to common/system/features/steam.nix diff --git a/common/nixos/features/sudo.nix b/common/system/features/sudo.nix similarity index 100% rename from common/nixos/features/sudo.nix rename to common/system/features/sudo.nix diff --git a/common/nixos/features/users.nix b/common/system/features/users.nix similarity index 100% rename from common/nixos/features/users.nix rename to common/system/features/users.nix diff --git a/common/nixos/server.nix b/common/system/server.nix similarity index 97% rename from common/nixos/server.nix rename to common/system/server.nix index ce0d390..c35166b 100644 --- a/common/nixos/server.nix +++ b/common/system/server.nix @@ -6,8 +6,6 @@ ... }: { imports = [ - (inputs.impermanence + "/nixos.nix") - ./features/avahi.nix ./features/command-not-found.nix ./features/openssh.nix diff --git a/common/home-manager/desktop.nix b/common/user/desktop.nix similarity index 98% rename from common/home-manager/desktop.nix rename to common/user/desktop.nix index 68b7db3..8449a66 100644 --- a/common/home-manager/desktop.nix +++ b/common/user/desktop.nix @@ -45,7 +45,7 @@ sops systeroid tokei - vscodium + vscodium-fhs ]; xdg = { diff --git a/common/home-manager/features/bottom.nix b/common/user/features/bottom.nix similarity index 100% rename from common/home-manager/features/bottom.nix rename to common/user/features/bottom.nix diff --git a/common/home-manager/features/cava.nix b/common/user/features/cava.nix similarity index 100% rename from common/home-manager/features/cava.nix rename to common/user/features/cava.nix diff --git a/common/home-manager/features/direnv.nix b/common/user/features/direnv.nix similarity index 100% rename from common/home-manager/features/direnv.nix rename to common/user/features/direnv.nix diff --git a/common/home-manager/features/fish.nix b/common/user/features/fish.nix similarity index 100% rename from common/home-manager/features/fish.nix rename to common/user/features/fish.nix diff --git a/common/home-manager/features/git.nix b/common/user/features/git.nix similarity index 100% rename from common/home-manager/features/git.nix rename to common/user/features/git.nix diff --git a/common/home-manager/features/helix.nix b/common/user/features/helix.nix similarity index 100% rename from common/home-manager/features/helix.nix rename to common/user/features/helix.nix diff --git a/common/home-manager/features/joshuto.nix b/common/user/features/joshuto.nix similarity index 100% rename from common/home-manager/features/joshuto.nix rename to common/user/features/joshuto.nix diff --git a/common/home-manager/features/mmtc.nix b/common/user/features/mmtc.nix similarity index 100% rename from common/home-manager/features/mmtc.nix rename to common/user/features/mmtc.nix diff --git a/common/home-manager/features/mpd.nix b/common/user/features/mpd.nix similarity index 100% rename from common/home-manager/features/mpd.nix rename to common/user/features/mpd.nix diff --git a/common/home-manager/features/mpris-proxy.nix b/common/user/features/mpris-proxy.nix similarity index 100% rename from common/home-manager/features/mpris-proxy.nix rename to common/user/features/mpris-proxy.nix diff --git a/common/home-manager/features/mpv.nix b/common/user/features/mpv.nix similarity index 100% rename from common/home-manager/features/mpv.nix rename to common/user/features/mpv.nix diff --git a/common/home-manager/features/nushell/config.nu b/common/user/features/nushell/config.nu similarity index 100% rename from common/home-manager/features/nushell/config.nu rename to common/user/features/nushell/config.nu diff --git a/common/home-manager/features/nushell/default.nix b/common/user/features/nushell/default.nix similarity index 100% rename from common/home-manager/features/nushell/default.nix rename to common/user/features/nushell/default.nix diff --git a/common/home-manager/features/qutebrowser/default.nix b/common/user/features/qutebrowser/default.nix similarity index 100% rename from common/home-manager/features/qutebrowser/default.nix rename to common/user/features/qutebrowser/default.nix diff --git a/common/home-manager/features/qutebrowser/start.html b/common/user/features/qutebrowser/start.html similarity index 100% rename from common/home-manager/features/qutebrowser/start.html rename to common/user/features/qutebrowser/start.html diff --git a/common/home-manager/features/readline.nix b/common/user/features/readline.nix similarity index 100% rename from common/home-manager/features/readline.nix rename to common/user/features/readline.nix diff --git a/common/home-manager/features/ssh.nix b/common/user/features/ssh.nix similarity index 100% rename from common/home-manager/features/ssh.nix rename to common/user/features/ssh.nix diff --git a/common/home-manager/server.nix b/common/user/server.nix similarity index 100% rename from common/home-manager/server.nix rename to common/user/server.nix diff --git a/flake.lock b/flake.lock index c792c81..b40f3f3 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "hardware": { "locked": { - "lastModified": 1694710316, - "narHash": "sha256-uRh46iIC86D8BD1wCDA5gRrt+hslUXiD0kx/UjnjBcs=", + "lastModified": 1695887975, + "narHash": "sha256-u3+5FR12dI305jCMb0fJNQx2qwoQ54lv1tPoEWp0hmg=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "570256327eb6ca6f7bebe8d93af49459092a0c43", + "rev": "adcfd6aa860d1d129055039696bc457af7d50d0e", "type": "github" }, "original": { @@ -22,11 +22,11 @@ ] }, "locked": { - "lastModified": 1694643239, - "narHash": "sha256-pv2k/5FvyirDE8g4TNehzwZ0T4UOMMmqWSQnM/luRtE=", + "lastModified": 1695738267, + "narHash": "sha256-LTNAbTQ96xSj17xBfsFrFS9i56U2BMLpD0BduhrsVkU=", "owner": "nix-community", "repo": "home-manager", - "rev": "d9b88b43524db1591fb3d9410a21428198d75d49", + "rev": "0f4e5b4999fd6a42ece5da8a3a2439a50e48e486", "type": "github" }, "original": { @@ -52,11 +52,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1694767346, - "narHash": "sha256-5uH27SiVFUwsTsqC5rs3kS7pBoNhtoy9QfTP9BmknGk=", + "lastModified": 1695830400, + "narHash": "sha256-gToZXQVr0G/1WriO83olnqrLSHF2Jb8BPcmCt497ro0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ace5093e36ab1e95cb9463863491bee90d5a4183", + "rev": "8a86b98f0ba1c405358f1b71ff8b5e1d317f5db2", "type": "github" }, "original": { @@ -68,11 +68,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1693675694, - "narHash": "sha256-2pIOyQwGyy2FtFAUIb8YeKVmOCcPOTVphbAvmshudLE=", + "lastModified": 1694908564, + "narHash": "sha256-ducA98AuWWJu5oUElIzN24Q22WlO8bOfixGzBgzYdVc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5601118d39ca9105f8e7b39d4c221d3388c0419d", + "rev": "596611941a74be176b98aeba9328aa9d01b8b322", "type": "github" }, "original": { @@ -84,11 +84,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1693626178, - "narHash": "sha256-Rpiy6lIOu4zny8tfGuIeN1ji9eSz9nPmm9yBhh/4IOM=", + "lastModified": 1694760568, + "narHash": "sha256-3G07BiXrp2YQKxdcdms22MUx6spc6A++MSePtatCYuI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bfb7dfec93f3b5d7274db109f2990bc889861caf", + "rev": "46688f8eb5cd6f1298d873d4d2b9cf245e09e88e", "type": "github" }, "original": { @@ -113,11 +113,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1694495315, - "narHash": "sha256-sZEYXs9T1NVHZSSbMqBEtEm2PGa7dEDcx0ttQkArORc=", + "lastModified": 1695284550, + "narHash": "sha256-z9fz/wz9qo9XePEvdduf+sBNeoI9QG8NJKl5ssA8Xl4=", "owner": "Mic92", "repo": "sops-nix", - "rev": "ea208e55f8742fdcc0986b256bdfa8986f5e4415", + "rev": "2f375ed8702b0d8ee2430885059d5e7975e38f78", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 4f479c1..5bcc2e1 100644 --- a/flake.nix +++ b/flake.nix @@ -20,6 +20,7 @@ self, nixpkgs, home-manager, + impermanence, sops-nix, ... } @ inputs: let @@ -34,11 +35,14 @@ pkgs = import nixpkgs {inherit system;}; }); - mkSystem = class: name: args @ {modules ? [], ...}: + mkSystem = name: { + class, + modules ? [], + ... + }: nixpkgs.lib.nixosSystem ({ specialArgs = {inherit inputs;}; } - // args // { modules = modules @@ -51,7 +55,7 @@ nix = { registry = lib.mapAttrs (_: value: {flake = value;}) inputs; - nixPath = lib.mapAttrsToList (key: value: "${key}=${value.to.path}") config.nix.registry; + nixPath = lib.mapAttrsToList (key: _: "${key}=flake:${key}") config.nix.registry; settings = { experimental-features = "nix-command flakes"; @@ -63,51 +67,64 @@ networking.hostName = lib.mkDefault name; }) - (./common/nixos + "/${class}.nix") - (./nixos + "/${name}") - home-manager.nixosModules.home-manager - { + (./system + "/${name}") + ({lib, ...}: { home-manager = { useGlobalPkgs = true; extraSpecialArgs = {inherit inputs;}; - users.lukas.imports = [ - ({config, ...}: { - home.homeDirectory = - nixpkgs.lib.mkDefault "/home/${config.home.username}"; - systemd.user.startServices = "sd-switch"; + users = lib.mapAttrs (username: user: + user + // { + imports = + user.imports + ++ [ + ({config, ...}: { + home = { + username = lib.mkDefault username; + homeDirectory = lib.mkDefault "/home/${config.home.username}"; + }; + + systemd.user.startServices = "sd-switch"; + }) + (./common/user + "/${class}.nix") + ]; }) - (./common/home-manager + "/${class}.nix") - (./home-manager + "/${name}/lukas.nix") - ]; + (import (./user + "/${name}")); }; - } + }) + (./common/system + "/${class}.nix") + + home-manager.nixosModules.home-manager + (impermanence + "/nixos.nix") (sops-nix + "/modules/sops") ]; }); - setups = { - desktop = { - glacier = {}; - - flamingo = {}; - - scenery = {}; + systems = { + glacier = { + class = "desktop"; }; - server = { - abacus = {}; + flamingo = { + class = "desktop"; + }; - vessel = {}; + scenery = { + class = "desktop"; + }; + + abacus = { + class = "server"; + }; + + vessel = { + class = "server"; }; }; in { formatter = forEachSystem ({pkgs}: pkgs.alejandra); - nixosConfigurations = - nixpkgs.lib.attrsets.mergeAttrsList - (builtins.attrValues (nixpkgs.lib.mapAttrs - (class: configs: (nixpkgs.lib.mapAttrs (mkSystem class) configs)) - setups)); + nixosConfigurations = nixpkgs.lib.mapAttrs mkSystem systems; }; } diff --git a/nixos/abacus/default.nix b/system/abacus/default.nix similarity index 100% rename from nixos/abacus/default.nix rename to system/abacus/default.nix diff --git a/nixos/abacus/gitea.nix b/system/abacus/gitea.nix similarity index 100% rename from nixos/abacus/gitea.nix rename to system/abacus/gitea.nix diff --git a/nixos/abacus/hiraeth.nix b/system/abacus/hiraeth.nix similarity index 98% rename from nixos/abacus/hiraeth.nix rename to system/abacus/hiraeth.nix index 1f10cb7..84fa3f8 100644 --- a/nixos/abacus/hiraeth.nix +++ b/system/abacus/hiraeth.nix @@ -52,7 +52,7 @@ in { StateDirectoryMode = "0700"; UMask = "0077"; WorkingDirectory = "/var/lib/hiraeth"; - ExecStart = "${hiraeth}/bin/hiraeth run"; + ExecStart = "${pkgs.getExe' hiraeth "hiraeth"} run"; Restart = "on-failure"; TimeoutSec = 15; ReadOnlyPaths = "/etc/hiraeth/hiraeth.toml"; diff --git a/nixos/abacus/navidrome.nix b/system/abacus/navidrome.nix similarity index 100% rename from nixos/abacus/navidrome.nix rename to system/abacus/navidrome.nix diff --git a/nixos/abacus/vaultwarden.nix b/system/abacus/vaultwarden.nix similarity index 100% rename from nixos/abacus/vaultwarden.nix rename to system/abacus/vaultwarden.nix diff --git a/nixos/abacus/woodpecker.nix b/system/abacus/woodpecker.nix similarity index 100% rename from nixos/abacus/woodpecker.nix rename to system/abacus/woodpecker.nix diff --git a/nixos/flamingo/default.nix b/system/flamingo/default.nix similarity index 81% rename from nixos/flamingo/default.nix rename to system/flamingo/default.nix index 4e704e4..633edf2 100644 --- a/nixos/flamingo/default.nix +++ b/system/flamingo/default.nix @@ -11,8 +11,6 @@ (modulesPath + "/installer/scan/not-detected.nix") inputs.hardware.nixosModules.lenovo-thinkpad-t480 - - ../features/flatpak.nix ]; nixpkgs.hostPlatform = "x86_64-linux"; @@ -22,8 +20,6 @@ kernelModules = ["kvm-intel"]; }; - hardware.cpu.intel.updateMicrocode = config.hardware.enableRedistributableFirmware; - system.stateVersion = "23.11"; powerManagement.cpuFreqGovernor = "powersave"; diff --git a/nixos/glacier/default.nix b/system/glacier/default.nix similarity index 74% rename from nixos/glacier/default.nix rename to system/glacier/default.nix index 91dc180..d1d66e3 100644 --- a/nixos/glacier/default.nix +++ b/system/glacier/default.nix @@ -11,11 +11,6 @@ inputs.hardware.nixosModules.common-cpu-amd inputs.hardware.nixosModules.common-gpu-amd inputs.hardware.nixosModules.common-pc-ssd - - ../features/flatpak.nix - ../features/opentabletdriver.nix - ../features/printing.nix - ../features/steam.nix ]; nixpkgs.hostPlatform = "x86_64-linux"; @@ -30,8 +25,6 @@ binfmt.emulatedSystems = ["aarch64-linux"]; }; - hardware.cpu.amd.updateMicrocode = config.hardware.enableRedistributableFirmware; - system.stateVersion = "23.11"; powerManagement.cpuFreqGovernor = "performance"; @@ -40,6 +33,4 @@ epson-escpr epson-escpr2 ]; - - services.mullvad-vpn.enable = true; } diff --git a/nixos/scenery/default.nix b/system/scenery/default.nix similarity index 85% rename from nixos/scenery/default.nix rename to system/scenery/default.nix index 10a4095..dea2729 100644 --- a/nixos/scenery/default.nix +++ b/system/scenery/default.nix @@ -18,8 +18,6 @@ kernelModules = ["kvm-intel"]; }; - hardware.cpu.intel.updateMicrocode = config.hardware.enableRedistributableFirmware; - system.stateVersion = "23.11"; powerManagement.cpuFreqGovernor = "powersave"; diff --git a/nixos/vessel/backup.nix b/system/vessel/backup.nix similarity index 79% rename from nixos/vessel/backup.nix rename to system/vessel/backup.nix index cf99717..623c0cb 100644 --- a/nixos/vessel/backup.nix +++ b/system/vessel/backup.nix @@ -1,4 +1,8 @@ -{pkgs, ...}: { +{ + pkgs, + lib, + ... +}: { systemd.timers.local-backup = { description = "Local rsync Backup"; wantedBy = ["timers.target"]; @@ -13,7 +17,7 @@ description = "Local rsync Backup"; serviceConfig = { Type = "oneshot"; - ExecStart = ''${pkgs.rsync}/bin/rsync --verbose --verbose --archive --update --delete /srv/storage/ /srv/backup/''; + ExecStart = ''${lib.getExe pkgs.rsync} --verbose --verbose --archive --update --delete /srv/storage/ /srv/backup/''; User = "root"; Group = "root"; }; diff --git a/nixos/vessel/default.nix b/system/vessel/default.nix similarity index 89% rename from nixos/vessel/default.nix rename to system/vessel/default.nix index 6cad068..17ba508 100644 --- a/nixos/vessel/default.nix +++ b/system/vessel/default.nix @@ -24,8 +24,6 @@ kernelModules = ["kvm-intel"]; }; - hardware.cpu.intel.updateMicrocode = config.hardware.enableRedistributableFirmware; - system.stateVersion = "23.11"; powerManagement.cpuFreqGovernor = "performance"; diff --git a/user/abacus/default.nix b/user/abacus/default.nix new file mode 100644 index 0000000..ba3ad85 --- /dev/null +++ b/user/abacus/default.nix @@ -0,0 +1,5 @@ +{ + lukas.imports = [ + ./lukas + ]; +} diff --git a/home-manager/abacus/lukas.nix b/user/abacus/lukas/default.nix similarity index 81% rename from home-manager/abacus/lukas.nix rename to user/abacus/lukas/default.nix index c8f750a..7b3402c 100644 --- a/home-manager/abacus/lukas.nix +++ b/user/abacus/lukas/default.nix @@ -1,6 +1,5 @@ {pkgs, ...}: { home = { - username = "lukas"; packages = with pkgs; [ gitea ]; diff --git a/user/flamingo/default.nix b/user/flamingo/default.nix new file mode 100644 index 0000000..ba3ad85 --- /dev/null +++ b/user/flamingo/default.nix @@ -0,0 +1,5 @@ +{ + lukas.imports = [ + ./lukas + ]; +} diff --git a/home-manager/scenery/lukas.nix b/user/flamingo/lukas/default.nix similarity index 64% rename from home-manager/scenery/lukas.nix rename to user/flamingo/lukas/default.nix index 86c8b0b..bd1011f 100644 --- a/home-manager/scenery/lukas.nix +++ b/user/flamingo/lukas/default.nix @@ -1,6 +1,9 @@ { + pkgs, + lib, + ... +}: { home = { - username = "lukas"; stateVersion = "23.11"; }; } diff --git a/user/glacier/default.nix b/user/glacier/default.nix new file mode 100644 index 0000000..ba3ad85 --- /dev/null +++ b/user/glacier/default.nix @@ -0,0 +1,5 @@ +{ + lukas.imports = [ + ./lukas + ]; +} diff --git a/home-manager/glacier/lukas.nix b/user/glacier/lukas/default.nix similarity index 74% rename from home-manager/glacier/lukas.nix rename to user/glacier/lukas/default.nix index 7b738a8..5c98ee0 100644 --- a/home-manager/glacier/lukas.nix +++ b/user/glacier/lukas/default.nix @@ -1,10 +1,13 @@ -{pkgs, ...}: { +{ + pkgs, + lib, + ... +}: { home = { - username = "lukas"; + stateVersion = "23.11"; packages = with pkgs; [ nvtop-amd mullvad-vpn ]; - stateVersion = "23.11"; }; } diff --git a/user/scenery/default.nix b/user/scenery/default.nix new file mode 100644 index 0000000..ba3ad85 --- /dev/null +++ b/user/scenery/default.nix @@ -0,0 +1,5 @@ +{ + lukas.imports = [ + ./lukas + ]; +} diff --git a/home-manager/vessel/lukas.nix b/user/scenery/lukas/default.nix similarity index 100% rename from home-manager/vessel/lukas.nix rename to user/scenery/lukas/default.nix diff --git a/user/vessel/default.nix b/user/vessel/default.nix new file mode 100644 index 0000000..ba3ad85 --- /dev/null +++ b/user/vessel/default.nix @@ -0,0 +1,5 @@ +{ + lukas.imports = [ + ./lukas + ]; +} diff --git a/home-manager/flamingo/lukas.nix b/user/vessel/lukas/default.nix similarity index 63% rename from home-manager/flamingo/lukas.nix rename to user/vessel/lukas/default.nix index 86c8b0b..95a261a 100644 --- a/home-manager/flamingo/lukas.nix +++ b/user/vessel/lukas/default.nix @@ -1,6 +1,5 @@ -{ +{pkgs, ...}: { home = { - username = "lukas"; stateVersion = "23.11"; }; }