mirror of
https://github.com/CHN-beta/nixos.git
synced 2026-01-12 06:29:23 +08:00
35 lines
1.1 KiB
Nix
35 lines
1.1 KiB
Nix
{ inputs, localLib }:
|
|
let
|
|
singles = [ "nas" "pc" "vps4" "vps6" "one" "srv3" "test" "test-pc" "test-pc-vm" ];
|
|
cluster = { srv1 = 3; srv2 = 2; };
|
|
deviceModules = builtins.listToAttrs
|
|
(
|
|
(builtins.map
|
|
(n: { name = n; value = [ { config.nixos.model.hostname = n; } ../modules ../devices/${n} ../devices/cross ]; })
|
|
singles)
|
|
++ (builtins.concatLists (builtins.map
|
|
(cluster: builtins.map
|
|
(node:
|
|
{
|
|
name = "${cluster.name}-${node}";
|
|
value =
|
|
[
|
|
{ config.nixos.model.cluster = { clusterName = cluster.name; nodeName = node; }; }
|
|
../modules
|
|
../devices/${cluster.name}
|
|
../devices/${cluster.name}/${node}
|
|
../devices/cross
|
|
];
|
|
})
|
|
(builtins.genList (n: "node${builtins.toString n}") cluster.value))
|
|
(localLib.attrsToList cluster)))
|
|
);
|
|
in builtins.mapAttrs
|
|
(_: v: inputs.nixpkgs.lib.nixosSystem
|
|
{
|
|
system = "x86_64-linux";
|
|
specialArgs = { topInputs = inputs; inherit localLib; };
|
|
modules = localLib.mkModules v;
|
|
})
|
|
deviceModules
|