1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
{
lib,
inputs,
...
}: {
flake = let
mkHost = name: cfg:
inputs.nixpkgs.lib.nixosSystem {
system = cfg.system;
specialArgs = cfg.profile.specialArgs;
modules =
cfg.profile.modules
++ cfg.modules
++ [
./hosts/${name}
../hosts/${name}
{
networking.hostName = name;
}
];
};
mkLXCTemplatePackage = name: cfg:
inputs.nixos-generators.nixosGenerate {
system = cfg.system;
specialArgs = cfg.profile.specialArgs;
modules =
cfg.profile.modules
++ cfg.modules
++ [
{
networking.hostName = name;
}
];
format = "proxmox-lxc";
};
profiles = import ./profiles lib inputs;
hosts = import ./hosts profiles;
templatePackages = {
lxcbase = {
system = "x86_64-linux";
profile = profiles.lxcbase;
modules = [];
};
};
in {
nixosConfigurations = inputs.nixpkgs.lib.mapAttrs mkHost hosts;
packages.x86_64-linux = inputs.nixpkgs.lib.mapAttrs mkLXCTemplatePackage templatePackages;
};
}