69 lines
1.9 KiB
Nix
69 lines
1.9 KiB
Nix
{ self, nixpkgs, system }:
|
|
|
|
let
|
|
inherit (self.lib) config;
|
|
|
|
pkgs = nixpkgs.legacyPackages.${system};
|
|
|
|
export-config-file = builtins.toFile "config.nix" (
|
|
nixpkgs.lib.generators.toPretty {} config
|
|
);
|
|
export-config = pkgs.runCommandLocal "config.nix" {} ''
|
|
cp ${export-config-file} $out
|
|
'';
|
|
|
|
salt-pillar-file = hostName: builtins.toFile "${hostName}.yaml" (
|
|
nixpkgs.lib.generators.toPretty {} (self.lib.saltPillarFor hostName)
|
|
);
|
|
salt-pillars = builtins.foldl' (result: hostName: result // {
|
|
"${hostName}-pillar" = pkgs.runCommandLocal "${hostName}-pillar.nix" {} ''
|
|
cp ${salt-pillar-file hostName} $out
|
|
'';
|
|
}) {} (
|
|
builtins.filter (hostName:
|
|
builtins.elem config.site.hosts.${hostName}.role [ "server" "container" ]
|
|
) (builtins.attrNames config.site.hosts)
|
|
);
|
|
|
|
mkRootfs = hostName:
|
|
self.nixosConfigurations.${hostName}.config.system.build.toplevel;
|
|
|
|
rootfs-packages =
|
|
builtins.foldl' (rootfs: hostName: rootfs // {
|
|
"${hostName}-rootfs" = mkRootfs hostName;
|
|
}) {} (
|
|
builtins.attrNames (
|
|
nixpkgs.lib.filterAttrs (_: { role, ... }: builtins.elem role ["server" "container"])
|
|
config.site.hosts
|
|
)
|
|
);
|
|
|
|
vm-packages =
|
|
builtins.foldl' (rootfs: hostName: rootfs // {
|
|
"${hostName}-vm" = self.nixosConfigurations.${hostName}.config.system.build.vm
|
|
.overrideAttrs (oa: {
|
|
meta.mainProgram = "run-${hostName}-vm";
|
|
});
|
|
}) {} (
|
|
builtins.attrNames (
|
|
nixpkgs.lib.filterAttrs (_: { role, ... }: role == "server")
|
|
config.site.hosts
|
|
)
|
|
);
|
|
|
|
device-templates = import ./device-templates.nix {
|
|
inherit self nixpkgs system;
|
|
};
|
|
|
|
dns-slaves = import ./dns-slaves.nix {
|
|
inherit self nixpkgs system;
|
|
};
|
|
|
|
starlink = import ./starlink {
|
|
inherit pkgs;
|
|
};
|
|
in
|
|
salt-pillars // rootfs-packages // vm-packages // device-templates // starlink // {
|
|
inherit export-config dns-slaves;
|
|
}
|