43 lines
1.2 KiB
Nix
43 lines
1.2 KiB
Nix
# Generate partial NixOS configurations for every machine in the inventory
|
|
# This function is responsible for generating the module configuration for every machine in the inventory.
|
|
{ lib, clanLib }:
|
|
let
|
|
/*
|
|
Returns a set with NixOS configuration for every machine in the inventory.
|
|
|
|
machinesFromInventory :: Inventory -> { ${machine_name} :: NixOSConfiguration }
|
|
*/
|
|
buildInventory =
|
|
{
|
|
inventory,
|
|
directory,
|
|
flakeInputs,
|
|
}:
|
|
(lib.evalModules {
|
|
specialArgs = {
|
|
inherit clanLib;
|
|
};
|
|
modules = [
|
|
./builder
|
|
{ inherit directory inventory; }
|
|
(
|
|
# config.distributedServices.allMachines.${name} or [ ];
|
|
{ config, ... }:
|
|
{
|
|
distributedServices = clanLib.inventory.mapInstances {
|
|
inherit (config) inventory;
|
|
inherit flakeInputs;
|
|
};
|
|
machines = lib.mapAttrs (_machineName: v: {
|
|
machineImports = v;
|
|
}) config.distributedServices.allMachines;
|
|
}
|
|
)
|
|
(lib.modules.importApply ./inventory-introspection.nix { inherit clanLib; })
|
|
];
|
|
}).config;
|
|
in
|
|
{
|
|
inherit buildInventory;
|
|
}
|