Inventory: init external modules support
This commit is contained in:
committed by
hsjobeki
parent
f936b21100
commit
b3bcecd61c
@@ -38,8 +38,9 @@ let
|
||||
};
|
||||
|
||||
checkService =
|
||||
serviceName:
|
||||
builtins.elem "inventory" (clan-core.lib.modules.getFrontmatter serviceName).features or [ ];
|
||||
modulepath: serviceName:
|
||||
builtins.elem "inventory"
|
||||
(clan-core.lib.modules.getFrontmatter modulepath serviceName).features or [ ];
|
||||
|
||||
extendMachine =
|
||||
{ machineConfig, inventory }:
|
||||
@@ -53,7 +54,7 @@ let
|
||||
acc
|
||||
++ [
|
||||
{
|
||||
assertion = checkService serviceName;
|
||||
assertion = checkService inventory.modules.${serviceName} serviceName;
|
||||
message = ''
|
||||
Service ${serviceName} cannot be used in inventory. It does not declare the 'inventory' feature.
|
||||
|
||||
@@ -94,7 +95,7 @@ let
|
||||
acc2: instanceName: serviceConfig:
|
||||
|
||||
let
|
||||
roles = clan-core.lib.modules.getRoles serviceName;
|
||||
roles = clan-core.lib.modules.getRoles inventory.modules serviceName;
|
||||
|
||||
resolvedRoles = lib.genAttrs roles (
|
||||
roleName:
|
||||
@@ -129,11 +130,11 @@ let
|
||||
# TODO: maybe optimize this dont lookup the role in inverse roles. Imports are not lazy
|
||||
roleModules = builtins.map (
|
||||
role:
|
||||
if builtins.elem role roles && clan-core.clanModules ? ${serviceName} then
|
||||
clan-core.clanModules.${serviceName} + "/roles/${role}.nix"
|
||||
if builtins.elem role roles && inventory.modules ? ${serviceName} then
|
||||
inventory.modules.${serviceName} + "/roles/${role}.nix"
|
||||
else
|
||||
throw "Module ${serviceName} doesn't have role: '${role}'. Role: ${
|
||||
clan-core.clanModules.${serviceName}
|
||||
inventory.modules.${serviceName}
|
||||
}/roles/${role}.nix not found."
|
||||
) machineRoles;
|
||||
|
||||
@@ -151,6 +152,7 @@ let
|
||||
|
||||
constraintAssertions = clan-core.lib.modules.checkConstraints {
|
||||
moduleName = serviceName;
|
||||
allModules = inventory.modules;
|
||||
inherit resolvedRoles instanceName;
|
||||
};
|
||||
in
|
||||
|
||||
Reference in New Issue
Block a user