diff options
author | Silvan Mosberger <contact@infinisil.com> | 2021-12-07 18:30:52 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-07 18:30:52 +0100 |
commit | 490d46f044d3c82b4948626fa2fca5be7903434e (patch) | |
tree | c0593855dcf951de15fcdcd0bb861e446db53997 /nixos | |
parent | bb8900960cb01bd15c472bbf25ee34a4b0c0c7c2 (diff) | |
parent | 260b941dd0e7e72cf9b87f36f92b7e60f38d661f (diff) |
Merge pull request #148315 from hercules-ci/nixos-evalModules-legacy-cleanup
NixOS/evalModules legacy cleanup
Diffstat (limited to 'nixos')
-rw-r--r-- | nixos/lib/eval-config.nix | 50 | ||||
-rw-r--r-- | nixos/modules/misc/documentation.nix | 20 |
2 files changed, 43 insertions, 27 deletions
diff --git a/nixos/lib/eval-config.nix b/nixos/lib/eval-config.nix index 74b52daa3c8eb..d4567409f4015 100644 --- a/nixos/lib/eval-config.nix +++ b/nixos/lib/eval-config.nix @@ -8,6 +8,7 @@ # as subcomponents (e.g. the container feature, or nixops if network # expressions are ever made modular at the top level) can just use # types.submodule instead of using eval-config.nix +evalConfigArgs@ { # !!! system can be set modularly, would be nice to remove system ? builtins.currentSystem , # !!! is this argument needed any more? The pkgs argument can @@ -28,7 +29,7 @@ in if e == "" then [] else [(import e)] }: -let extraArgs_ = extraArgs; pkgs_ = pkgs; +let pkgs_ = pkgs; in let @@ -51,28 +52,49 @@ let }; }; - noUserModules = lib.evalModules { - inherit prefix check; - modules = baseModules ++ extraModules ++ [ pkgsModule ]; - args = extraArgs; + withWarnings = x: + lib.warnIf (evalConfigArgs?args) "The extraArgs argument to eval-config.nix is deprecated. Please set config._module.args instead." + lib.warnIf (evalConfigArgs?check) "The check argument to eval-config.nix is deprecated. Please set config._module.check instead." + x; + + legacyModules = + lib.optional (evalConfigArgs?args) { + config = { + _module.args = extraArgs; + }; + } + ++ lib.optional (evalConfigArgs?check) { + config = { + _module.check = lib.mkDefault check; + }; + }; + allUserModules = modules ++ legacyModules; + + noUserModules = lib.evalModules ({ + inherit prefix; + modules = baseModules ++ extraModules ++ [ pkgsModule modulesModule ]; specialArgs = { modulesPath = builtins.toString ../modules; } // specialArgs; - }; + }); - # These are the extra arguments passed to every module. In - # particular, Nixpkgs is passed through the "pkgs" argument. - extraArgs = extraArgs_ // { - inherit noUserModules baseModules extraModules modules; + # Extra arguments that are useful for constructing a similar configuration. + modulesModule = { + config = { + _module.args = { + inherit noUserModules baseModules extraModules modules; + }; + }; }; -in rec { + nixosWithUserModules = noUserModules.extendModules { modules = allUserModules; }; + +in withWarnings { # Merge the option definitions in all modules, forming the full # system configuration. - inherit (noUserModules.extendModules { inherit modules; }) - config options _module type; + inherit (nixosWithUserModules) config options _module type; inherit extraArgs; - inherit (_module.args) pkgs; + inherit (nixosWithUserModules._module.args) pkgs; } diff --git a/nixos/modules/misc/documentation.nix b/nixos/modules/misc/documentation.nix index 1f837f9efa22d..64b1c15086fc8 100644 --- a/nixos/modules/misc/documentation.nix +++ b/nixos/modules/misc/documentation.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, baseModules, extraModules, modules, modulesPath, ... }: +{ config, lib, pkgs, extendModules, noUserModules, ... }: with lib; @@ -6,11 +6,8 @@ let cfg = config.documentation; - manualModules = - baseModules - # Modules for which to show options even when not imported - ++ [ ../virtualisation/qemu-vm.nix ] - ++ optionals cfg.nixos.includeAllModules (extraModules ++ modules); + /* Modules for which to show options even when not imported. */ + extraDocModules = [ ../virtualisation/qemu-vm.nix ]; /* For the purpose of generating docs, evaluate options with each derivation in `pkgs` (recursively) replaced by a fake with path "\${pkgs.attribute.path}". @@ -24,13 +21,10 @@ let extraSources = cfg.nixos.extraModuleSources; options = let - scrubbedEval = evalModules { - modules = [ { nixpkgs.localSystem = config.nixpkgs.localSystem; } ] ++ manualModules; - args = (config._module.args) // { modules = [ ]; }; - specialArgs = { - pkgs = scrubDerivations "pkgs" pkgs; - inherit modulesPath; - }; + extendNixOS = if cfg.nixos.includeAllModules then extendModules else noUserModules.extendModules; + scrubbedEval = extendNixOS { + modules = extraDocModules; + specialArgs.pkgs = scrubDerivations "pkgs" pkgs; }; scrubDerivations = namePrefix: pkgSet: mapAttrs (name: value: |