nixos-config/flake-parts/hosts.nix

31 lines
705 B
Nix

{
inputs,
self,
lib,
...
}:
let
mkHost =
hostDir:
inputs.nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs self; };
modules =
(lib.singleton {
networking.hostName = hostDir |> lib.baseNameOf |> lib.unsafeDiscardStringContext;
})
++ self.lib.listNixFilesRecursively hostDir;
};
mkHosts =
baseDir:
baseDir
|> self.lib.listDirectoryNames
|> self.lib.genAttrs (hostName: mkHost "${baseDir}/${hostName}");
in
{
flake = {
nixosConfigurations = mkHosts "${self}/hosts";
externalConfigurations = mkHosts "${self}/external-hosts";
allHosts = self.nixosConfigurations // self.externalConfigurations;
};
}