{ inputs = { # General inputs stable.url = "nixpkgs/nixos-24.11"; unstable.url = "nixpkgs/nixos-unstable"; # System inputs disko = { url = "github:nix-community/disko"; inputs.nixpkgs.follows = "stable"; }; impermanence.url = "github:nix-community/impermanence"; lanzaboote = { url = "github:nix-community/lanzaboote/v0.4.1"; inputs.nixpkgs.follows = "stable"; }; # Hardware specific jovian = { url = "github:Jovian-Experiments/Jovian-NixOS"; inputs.nixpkgs.follows = "unstable"; }; # Service inputs mailserver = { url = "gitlab:simple-nixos-mailserver/nixos-mailserver/nixos-24.11"; inputs.nixpkgs.follows = "stable"; }; minecraft.url = "github:Infinidoge/nix-minecraft"; # Home inputs hm = { url = "github:nix-community/home-manager/release-24.11"; inputs.nixpkgs.follows = "stable"; }; nur = { url = "github:nix-community/NUR"; inputs.nixpkgs.follows = "unstable"; }; blender.url = "https://flakehub.com/f/edolstra/blender-bin/1.0.13.tar.gz"; }; outputs = { stable, unstable, disko, impermanence, lanzaboote, mailserver, minecraft, jovian, hm, nur, blender, ... }@inputs: let mkNix = modules: channel: channel.lib.nixosSystem { inherit modules; specialArgs = inputs; }; mkHome = modules: pkgs: hm.lib.homeManagerConfiguration { inherit modules pkgs; extraSpecialArgs = inputs; }; in { # nh os switch /path --hostname=host nixosConfigurations = { tower = mkNix [ ./hosts/tower ] stable; # Main Desktop envy = mkNix [ ./hosts/envy ] stable; # HP Convertable intuos = mkNix [ ./hosts/intuos ] stable; # Wacom Intuos Tablet jupiter = mkNix [ ./hosts/jupiter ] unstable; # Steam Deck redmond = mkNix [ ./hosts/redmond ] stable; # Lenovo Dual-Boot midas = mkNix [ ./hosts/midas ] stable; # Dell Optiplex 5040 kitty = mkNix [ ./hosts/kitty ] stable; # Dell Optiplex 7010 prophet = mkNix [ ./hosts/prophet ] stable; # Oracle Neoverse-N1 }; # nh home switch /path -c arch homeConfigurations = { x86 = mkHome [ ./modules/home ] stable.legacyPackages.x86_64-linux; aarch = mkHome [ ./modules/home ] stable.legacyPackages.aarch64-linux; }; }; }