base/export/nixosConfigurations.nix

15 lines
946 B
Nix

{ nixosUsers ? {}, nixosGroups ? {}, nixosModules, hmModules ? { default = {}; }, ...}@flake: { nixpkgs, ... }@inputs: { host, ... }@imports: let
system = hostname: { namespace?"fbs42" }: nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs flake namespace; };
modules = builtins.concatLists (map (base: builtins.attrValues (flake.lib.scan { base = "${base}/host/${hostname}"; })) flake.lib.schema.base)
++ [ { config.networking.hostName = hostname; } ]
++ [ nixosModules.default ]
++ [ inputs.home-manager.nixosModules.default ]
++ [ { config.home-manager.sharedModules = [ hmModules.default ]; } ]
++ [ { config.home-manager.extraSpecialArgs = { inherit flake namespace; }; } ]
++ builtins.attrValues nixosUsers
++ builtins.attrValues nixosGroups
;
};
in builtins.mapAttrs (hostname: snippets: assert builtins.length snippets == 1; system hostname (builtins.head snippets)) host