{ 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: channel: arch: hm.lib.homeManagerConfiguration { inherit modules; pkgs = builtins.getAttr arch channel.legacyPackages; extraSpecialArgs = inputs; }; in { # nh os switch /path -H host nixosConfigurations = { tower = mkNix [ ./hosts/tower ] stable; # Main Desktop 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 "x86_64-linux"; aarch = mkHome [ ./modules/home ] stable "aarch64-linux"; }; }; }