network/nix/pkgs/default.nix

43 lines
1.3 KiB
Nix

{ self, nixpkgs, system }:
let
inherit (self.lib) config;
export-config-file = builtins.toFile "config.nix" (
nixpkgs.lib.generators.toPretty {} config
);
export-config = nixpkgs.legacyPackages.${system}.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" = nixpkgs.legacyPackages.${system}.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)
);
test_vm = nixpkgs.legacyPackages.${system}.runCommandLocal "test_vm" {
src = self.nixosConfigurations.test_vm.config.system.build.toplevel;
} ''
set -x
mkdir -p $out/{bin,dev,etc,home,mnt,nix/store,nix/var,proc,root,run,sys,tmp,var,usr}
ln -s $src/init $out/
ln -s $src/etc $out/etc/static
'';
device-templates = import ./device-templates.nix {
inherit self nixpkgs system;
};
in
salt-pillars // device-templates // {
inherit export-config test_vm;
}