From 6a5332ec8cf26dac495606db320548baaf83a60d Mon Sep 17 00:00:00 2001 From: Johannes Kirschbauer Date: Tue, 4 Feb 2025 15:39:09 +0700 Subject: [PATCH] inventory: use special args to split build inventory into modules --- lib/inventory/build-inventory/default.nix | 93 ++++++++++++----------- 1 file changed, 50 insertions(+), 43 deletions(-) diff --git a/lib/inventory/build-inventory/default.nix b/lib/inventory/build-inventory/default.nix index 21122605d..8618d1433 100644 --- a/lib/inventory/build-inventory/default.nix +++ b/lib/inventory/build-inventory/default.nix @@ -138,6 +138,7 @@ let resolvedRolesPerInstance firstRole isClanModule + supportedRoles ; # TODO: Add other attributes machineImports = @@ -274,52 +275,58 @@ let buildInventory = { inventory, directory }: (lib.evalModules { + specialArgs = { + inherit directory inventory; + }; modules = [ ./internal.nix - { - machines = builtins.mapAttrs ( - machineName: machineConfig: - let - compiledServices = compileServicesForMachine { - inherit - machineName - inventory - directory - ; - }; - compiledMachine = compileMachine { - inherit - machineConfig - ; - }; + ( + { ... }: + { + machines = builtins.mapAttrs ( + machineName: machineConfig: + let + compiledServices = compileServicesForMachine { + inherit + machineName + inventory + directory + ; + }; + compiledMachine = compileMachine { + inherit + machineConfig + ; + }; - machineImports = - compiledMachine.machineImports - ++ builtins.foldl' ( - acc: service: - let - failedAssertions = (lib.filterAttrs (_: v: !v.assertion) service.assertions); - failedAssertionsImports = - if failedAssertions != { } then - [ - { - clan.inventory.assertions = failedAssertions; - } - ] - else - [ ]; - in - acc - ++ service.machineImports - # Import failed assertions - ++ failedAssertionsImports - ) [ ] (builtins.attrValues compiledServices); - in - { - inherit machineImports compiledServices compiledMachine; - } - ) (inventory.machines or { }); - } + machineImports = + compiledMachine.machineImports + ++ builtins.foldl' ( + acc: service: + let + failedAssertions = (lib.filterAttrs (_: v: !v.assertion) service.assertions); + failedAssertionsImports = + if failedAssertions != { } then + [ + { + clan.inventory.assertions = failedAssertions; + } + ] + else + [ ]; + in + acc + ++ service.machineImports + # Import failed assertions + ++ failedAssertionsImports + ) [ ] (builtins.attrValues compiledServices); + in + { + inherit machineImports compiledServices compiledMachine; + } + ) (inventory.machines or { }); + } + ) ]; }).config; in