nixos-config/flake-parts/hosts.nix
2026-01-17 13:21:16 +01:00

42 lines
1.1 KiB
Nix

{
inputs,
self,
lib,
...
}:
let
mkHost =
hostName:
inputs.nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs self; };
modules = [
{ networking = { inherit hostName; }; }
"${self}/hosts/common.nix"
"${self}/hosts/${hostName}"
"${self}/users/seb"
]
++ lib.optional (lib.pathExists "${self}/users/seb/@${hostName}") "${self}/users/seb/@${hostName}";
};
mkDeployNode = hostName: {
hostname = "${hostName}.${
self.nixosConfigurations.${hostName}.config.custom.networking.overlay.domain
}";
user = "root";
interactiveSudo = true;
profiles.system.path =
inputs.deploy-rs.lib.x86_64-linux.activate.nixos
self.nixosConfigurations.${hostName};
};
hostNames = "${self}/hosts" |> self.lib.listDirectoryNames;
in
{
flake = {
nixosConfigurations = hostNames |> self.lib.genAttrs mkHost;
deploy.nodes = hostNames |> self.lib.genAttrs mkDeployNode;
checks = inputs.deploy-rs.lib |> lib.mapAttrs (_: deployLib: deployLib.deployChecks self.deploy);
};
}