nix/evaluator.nix in confctl-1.0.0 vs nix/evaluator.nix in confctl-2.0.0

- old
+ new

@@ -16,12 +16,12 @@ }; nameValuePairs = builtins.map (m: { name = m.name; value = { - inherit (m) name; - } // m.config; + inherit (m) name alias clusterName carrier metaConfig; + }; }) machines; machinesAttrs = builtins.listToAttrs nameValuePairs; fullMachinesAttrs = builtins.listToAttrs (builtins.map (m: { @@ -51,11 +51,11 @@ machineSwpins = m: import ./lib/swpins/eval.nix { inherit (arg) confDir; name = m.name; - channels = m.config.swpins.channels; + channels = m.metaConfig.swpins.channels; pkgs = corePkgs.pkgs; lib = corePkgs.lib; }; coreSwpinsAttrs = coreSwpins.evaluated; @@ -68,20 +68,31 @@ selectedToplevels = builtins.listToAttrs (builtins.map (host: { name = host; value = buildToplevel fullMachinesAttrs.${host}; }) arg.machines); - buildToplevel = m: (evalMachine m).config.system.build.toplevel; + buildToplevel = machine: + let + machineConfig = (evalMachine machine).config; - evalMachine = m: + buildAttr = coreLib.attrByPath machine.build.attribute null machineConfig; + + result = + if isNull buildAttr then + abort "Attribute 'config.${coreLib.concatStringsSep "." machine.build.attribute}' not found on machine ${machine.name}" + else + buildAttr; + in result; + + evalMachine = machine: let importPath = { nixos = <nixpkgs/nixos/lib/eval-config.nix>; vpsadminos = <vpsadminos/os/default.nix>; }; - evalConfig = import importPath.${m.config.spin} { - modules = [ m.build.toplevel ]; + evalConfig = import importPath.${machine.metaConfig.spin} { + modules = machine.extraModules ++ [ machine.build.toplevel ]; }; in evalConfig; evalConfctl = let