--- a/lib/flakePart.nix +++ b/lib/flakePart.nix @@ -33,6 +33,8 @@ # To use user-provided nixpkgs, we first need to extract wanted nixpkgs attribute, # to do that, evaluate all the modules with only needed option declared. bootstrapEval = lib.evalModules { + class = "fleet"; + prefix = ["fleetConfiguration"]; modules = [ module { @@ -50,6 +52,8 @@ }; bootstrapNixpkgs = bootstrapEval.config.nixpkgs.buildUsing; normalEval = bootstrapNixpkgs.lib.evalModules { + class = "fleet"; + prefix = ["fleetConfiguration"]; modules = (import ../modules/module-list.nix) ++ [ module ( --- a/modules/nixos.nix +++ b/modules/nixos.nix @@ -37,14 +37,17 @@ module: let inherit (hostArgs.config) system; + modulesPath = "${config.nixpkgs.buildUsing}/nixos/modules"; in config.nixpkgs.buildUsing.lib.evalModules { - modules = (import "${config.nixpkgs.buildUsing}/nixos/modules/module-list.nix") ++ [ + class = "nixos"; + prefix = ["fleetConfiguration" "hosts" hostArgs.config._module.args.name "nixos"]; + modules = (import "${modulesPath}/module-list.nix") ++ [ (module // { key = "attr"; }) (config.nixos // { key = "attr"; }) ]; specialArgs = { - inherit fleetLib inputs self; + inherit fleetLib inputs self modulesPath; inputs' = mapAttrs ( inputName: input: builtins.addErrorContext @@ -56,6 +59,9 @@ "input is not a flake, perhaps flake = false was added to te input declaration?" ) ) inputs; + self' = builtins.addErrorContext "while retrieving system-dependent attributes for a flake's own outputs" ( + _fleetFlakeRootConfig.perInput system self + ); }; }; }; @@ -68,7 +74,7 @@ # (mkRemovedOptionModule ["nixosModules"] "replaced with hosts.*.nixos.imports.") # ]; nixos = { - config._module.args = { + _module.args = { nixosHosts = mapAttrs (_: value: value.nixos_unchecked.config) config.hosts; hosts = config.hosts; host = hostArgs.config;