{ 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 = inputs: inputs.flake-utils.lib.eachDefaultSystemPassThrough (system: with inputs; let mkNix = name: channel: channel.lib.nixosSystem { modules = [ (./hosts + "/${name}") ]; specialArgs = inputs; }; mkHome = channel: modules: hm.lib.homeManagerConfiguration { inherit modules; extraSpecialArgs = inputs; pkgs = builtins.getAttr system channel.legacyPackages; }; hostChannels = { tower = stable; intuos = stable; jupiter = unstable; redmond = stable; midas = stable; kitty = stable; prophet = stable; }; in { nixosConfigurations = builtins.mapAttrs (name: channel: mkNix name channel) hostChannels; homeConfigurations = { default = mkHome stable [ ./modules/home ]; full = mkHome stable [ ./modules/home { home.guifull.enable = true; } ]; }; } ); }