feat(inventory/instances): dont set module location to allow underlying error location to bubble up

This commit is contained in:
Johannes Kirschbauer
2025-04-08 13:10:26 +02:00
parent 4913d2db87
commit 07e6df35a5

View File

@@ -120,22 +120,9 @@ let
} }
``` ```
*/ */
makeExtensibleConfig =
f: args:
let
makeModuleExtensible =
eval:
eval.config
// {
__functor = _self: m: makeModuleExtensible (eval.extendModules { modules = lib.toList m; });
};
in
makeModuleExtensible (f args);
# Extend evalModules result by a module, returns .config. # Extend evalModules result by a module, returns .config.
extendEval = extendEval = eval: m: (eval.extendModules { modules = lib.toList m; }).config;
eval: m:
(eval.extendModules { modules = lib.toList m; } ).config;
/** /**
Apply the settings to the instance Apply the settings to the instance
@@ -151,20 +138,18 @@ let
machines = lib.mapAttrs (machineName: v: { machines = lib.mapAttrs (machineName: v: {
# TODO: evaluate the settings against the interface # TODO: evaluate the settings against the interface
# settings = (evalMachineSettings { inherit roleName instanceName; inherit (v) settings; }).config; # settings = (evalMachineSettings { inherit roleName instanceName; inherit (v) settings; }).config;
settings = ( settings =
evalMachineSettings { (evalMachineSettings {
inherit roleName instanceName machineName; inherit roleName instanceName machineName;
inherit (v) settings; inherit (v) settings;
} }).config;
).config;
}) role.machines; }) role.machines;
# TODO: evaluate the settings against the interface # TODO: evaluate the settings against the interface
settings = ( settings =
evalMachineSettings { (evalMachineSettings {
inherit roleName instanceName; inherit roleName instanceName;
inherit (role) settings; inherit (role) settings;
} }).config;
).config;
}) instance.roles; }) instance.roles;
in in
{ {
@@ -332,20 +317,17 @@ in
name = machineName; name = machineName;
roles = lib.attrNames (lib.filterAttrs (_n: v: v.machines ? ${machineName}) roles); roles = lib.attrNames (lib.filterAttrs (_n: v: v.machines ? ${machineName}) roles);
}; };
settings = ( settings =
evalMachineSettings { (evalMachineSettings {
inherit roleName instanceName machineName; inherit roleName instanceName machineName;
settings = settings =
config.instances.${instanceName}.roles.${roleName}.machines.${machineName}.settings or { }; config.instances.${instanceName}.roles.${roleName}.machines.${machineName}.settings or { };
} }).config;
).config; extendSettings = extendEval (evalMachineSettings {
extendSettings = extendEval (
evalMachineSettings {
inherit roleName instanceName machineName; inherit roleName instanceName machineName;
settings = settings =
config.instances.${instanceName}.roles.${roleName}.machines.${machineName}.settings or { }; config.instances.${instanceName}.roles.${roleName}.machines.${machineName}.settings or { };
} });
);
}; };
modules = [ v ]; modules = [ v ];
}).config; }).config;
@@ -521,7 +503,8 @@ in
imports = [ imports = [
# For error backtracing. This module was produced by the 'perMachine' function # For error backtracing. This module was produced by the 'perMachine' function
# TODO: check if we need this or if it leads to better errors if we pass the underlying module locations # TODO: check if we need this or if it leads to better errors if we pass the underlying module locations
(lib.setDefaultModuleLocation "clan.service: ${config.manifest.name} - via perMachine" machineResult.nixosModule) # (lib.setDefaultModuleLocation "clan.service: ${config.manifest.name} - via perMachine" machineResult.nixosModule)
(machineResult.nixosModule)
] ++ instanceResults; ] ++ instanceResults;
}; };
} }