{ inputs, self, withSystem, ... }: let mkNixos = { system ? "x86_64-linux", nixpkgs ? inputs.nixpkgs, config ? {}, overlays ? [], modules ? [], }: withSystem system ( { inputs', lib, pkgs, system, ... }: let customPkgs = import nixpkgs ( lib.recursiveUpdate { inherit system; overlays = (builtins.attrValues self.overlays) ++ overlays; config.allowUnfree = true; } {inherit config;} ); in nixpkgs.lib.nixosSystem { inherit system; specialArgs = { inherit inputs inputs' lib; pkgs = if (nixpkgs != inputs.nixpkgs || config != {} || overlays != []) then customPkgs else pkgs; }; modules = [../nixos] ++ modules; } ); in { flake.nixosConfigurations = let defaultModules = [ ../modules inputs.agenix.nixosModules.default { environment.systemPackages = [ inputs.agenix.packages.x86_64-linux.default ]; } ]; fullNixOSModules = defaultModules ++ [ { home-manager.users.michael = import ../user/environments/nixos/home.nix; } ]; in { kitchen = mkNixos { modules = fullNixOSModules ++ [ ../modules/common.nix ../modules/containers.nix ../machines/kitchen/configuration.nix ]; }; thinkcentre = mkNixos { modules = fullNixOSModules ++ [ ../modules/common.nix ../modules/containers.nix ../machines/thinkcentre/configuration.nix ]; }; terra = mkNixos { modules = fullNixOSModules ++ [ ../modules/common.nix ../modules/containers.nix ../machines/terra/configuration.nix ]; }; oracle = mkNixos { modules = defaultModules ++ [ { home-manager.users.michael = import ../user/environments/nixos-server/home.nix; } ../machines/oracle/configuration.nix ]; }; nova = mkNixos { modules = defaultModules ++ [ { home-manager.users.michael = import ../user/environments/nixos-server/home.nix; } ../machines/nova/configuration.nix ]; }; work = mkNixos { modules = [ inputs.nixos-wsl.nixosModules.default ../machines/work/configuration.nix ]; }; }; }