Refactor(inventory/constraints): use explizit dependency injections instead of specialArgs

This commit is contained in:
Johannes Kirschbauer
2025-05-10 13:40:35 +02:00
parent efd8fa90ba
commit 0b5fa1c731
4 changed files with 27 additions and 23 deletions

View File

@@ -1,9 +1,12 @@
{ {
lib,
config,
resolvedRoles, resolvedRoles,
instanceName, instanceName,
moduleName, moduleName,
allRoles,
}:
{
lib,
config,
... ...
}: }:
let let
@@ -11,7 +14,7 @@ let
in in
{ {
imports = [ imports = [
./interface.nix (lib.modules.importApply ./interface.nix { inherit allRoles; })
# Role assertions # Role assertions
{ {
config.assertions = lib.foldlAttrs ( config.assertions = lib.foldlAttrs (
@@ -24,7 +27,7 @@ in
"${moduleName}.${instanceName}.roles.${roleName}.min" = { "${moduleName}.${instanceName}.roles.${roleName}.min" = {
assertion = memberCount >= roleConstraints.min; assertion = memberCount >= roleConstraints.min;
message = '' message = ''
The ${moduleName} module requires at least ${builtins.toString roleConstraints.min} members of the '${roleName}' role The '${moduleName}' module requires at least ${builtins.toString roleConstraints.min} members of the '${roleName}' role
but found '${builtins.toString memberCount}' members within instance '${instanceName}': but found '${builtins.toString memberCount}' members within instance '${instanceName}':
${lib.concatLines members} ${lib.concatLines members}

View File

@@ -1,7 +1,8 @@
{
allRoles,
}:
{ {
lib, lib,
allRoles,
moduleName,
... ...
}: }:
let let
@@ -9,12 +10,6 @@ let
rolesAttrs = builtins.groupBy lib.id allRoles; rolesAttrs = builtins.groupBy lib.id allRoles;
in in
{ {
options.serviceName = mkOption {
type = types.str;
default = moduleName;
readOnly = true;
visible = false;
};
options.roles = lib.mapAttrs ( options.roles = lib.mapAttrs (
_name: _: _name: _:
mkOption { mkOption {

View File

@@ -34,25 +34,33 @@ let
allModules, allModules,
}: }:
lib.evalModules { lib.evalModules {
specialArgs = {
inherit moduleName resolvedRoles instanceName;
allRoles = getRoles "inventory.modules" allModules moduleName;
};
modules = [ modules = [
(getFrontmatter allModules.${moduleName} moduleName) (getFrontmatter allModules.${moduleName} moduleName)
./interface.nix ./interface.nix
{
constraints.imports = [
(lib.modules.importApply ../constraints {
inherit moduleName resolvedRoles instanceName;
allRoles = getRoles "inventory.modules" allModules moduleName;
})
];
}
]; ];
}; };
# For Documentation purposes only # For Documentation purposes only
frontmatterOptions = frontmatterOptions =
(lib.evalModules { (lib.evalModules {
specialArgs = {
moduleName = "{moduleName}";
allRoles = [ "{roleName}" ];
};
modules = [ modules = [
./interface.nix ./interface.nix
{
constraints.imports = [
(lib.modules.importApply ../constraints {
moduleName = "{moduleName}";
allRoles = [ "{roleName}" ];
})
];
}
]; ];
}).options; }).options;

View File

@@ -1,6 +1,5 @@
{ {
lib, lib,
specialArgs,
... ...
}: }:
let let
@@ -76,9 +75,8 @@ in
``` ```
''; '';
type = types.submoduleWith { type = types.submoduleWith {
inherit specialArgs;
modules = [ modules = [
../constraints
]; ];
}; };
}; };