network/nix/pkgs/default.nix

66 lines
1.9 KiB
Nix
Raw Normal View History

{ self, nixpkgs, system }:
let
inherit (self.lib) config;
2021-03-31 01:23:58 +02:00
pkgs = nixpkgs.legacyPackages.${system};
export-config-file = builtins.toFile "config.nix" (
nixpkgs.lib.generators.toPretty {} config
);
2021-03-31 01:23:58 +02:00
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 // {
2021-03-31 01:23:58 +02:00
"${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)
);
2021-03-22 23:47:19 +01:00
mkRootfs = hostName:
self.nixosConfigurations.${hostName}.config.system.build.toplevel;
2021-03-22 23:47:19 +01:00
2021-03-31 01:23:58 +02:00
rootfs-packages =
2021-03-22 23:47:19 +01:00
builtins.foldl' (rootfs: hostName: rootfs // {
"${hostName}-rootfs" = mkRootfs hostName;
}) {} (
builtins.attrNames (
2021-03-31 01:23:58 +02:00
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";
});
2021-03-31 01:23:58 +02:00
}) {} (
builtins.attrNames (
nixpkgs.lib.filterAttrs (_: { role, ... }: role == "server")
2021-03-22 23:47:19 +01:00
config.site.hosts
)
);
device-templates = import ./device-templates.nix {
inherit self nixpkgs system;
};
2021-05-06 17:42:26 +02:00
dns-slaves = import ./dns-slaves.nix {
inherit self nixpkgs system;
};
in
2021-03-31 01:23:58 +02:00
salt-pillars // rootfs-packages // vm-packages // device-templates // {
2021-05-06 17:42:26 +02:00
inherit export-config dns-slaves;
}