{ inputs = { # General inputs stable.url = "nixpkgs/nixos-24.11"; unstable.url = "nixpkgs/nixos-unstable"; # Flake helpers flake-utils.url = "github:numtide/flake-utils"; # System inputs disko = { url = "github:nix-community/disko"; 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 = "github:edolstra/nix-warez?dir=blender"; }; outputs = { stable, unstable, flake-utils, disko, impermanence, lanzaboote, mailserver, minecraft, jovian, hm, nur, blender, ... }@inputs: inputs.flake-utils.lib.eachDefaultSystemPassThrough (system: let mkNix = modules: channel: channel.lib.nixosSystem { inherit modules; specialArgs = inputs; }; mkHome = modules: channel: hm.lib.homeManagerConfiguration { inherit modules; pkgs = channel.legacyPackages.${system}; extraSpecialArgs = inputs; }; in { nixosConfigurations = { tower = mkNix [ ./hosts/tower ] stable; intuos = mkNix [ ./hosts/intuos ] stable; jupiter = mkNix [ ./hosts/jupiter ] unstable; redmond = mkNix [ ./hosts/redmond ] stable; midas = mkNix [ ./hosts/midas ] stable; kitty = mkNix [ ./hosts/kitty ] stable; prophet = mkNix [ ./hosts/prophet ] stable; }; homeConfigurations.bun = mkHome [ ./modules/home ] stable; } ); }