summary refs log tree commit diff
path: root/lib
diff options
context:
space:
mode:
authorRobert Hensing <roberth@users.noreply.github.com>2022-02-06 22:49:17 +0100
committerGitHub <noreply@github.com>2022-02-06 22:49:17 +0100
commit8403e02a5d2ed920b80f8171d048af53e4c84bcb (patch)
tree966368cb63f142a92a97dff84e3002e1abf67bad /lib
parentab253b13327c7d7dfc2daaa7a0e4e13441cc819d (diff)
parent5ab62e17b51087d3ee38684c3911354ec70f5f0b (diff)
downloadnixpkgs-8403e02a5d2ed920b80f8171d048af53e4c84bcb.tar
nixpkgs-8403e02a5d2ed920b80f8171d048af53e4c84bcb.tar.gz
nixpkgs-8403e02a5d2ed920b80f8171d048af53e4c84bcb.tar.bz2
nixpkgs-8403e02a5d2ed920b80f8171d048af53e4c84bcb.tar.lz
nixpkgs-8403e02a5d2ed920b80f8171d048af53e4c84bcb.tar.xz
nixpkgs-8403e02a5d2ed920b80f8171d048af53e4c84bcb.tar.zst
nixpkgs-8403e02a5d2ed920b80f8171d048af53e4c84bcb.zip
Merge pull request #126769 from ncfavier/nixosSystem-lib
nixos: move default module location logic to `eval-config.nix`
Diffstat (limited to 'lib')
-rw-r--r--lib/default.nix4
-rw-r--r--lib/modules.nix12
2 files changed, 9 insertions, 7 deletions
diff --git a/lib/default.nix b/lib/default.nix
index 26842253880..3e43733ad20 100644
--- a/lib/default.nix
+++ b/lib/default.nix
@@ -111,8 +111,8 @@ let
       cleanSource sourceByRegex sourceFilesBySuffices
       commitIdFromGitRepo cleanSourceWith pathHasContext
       canCleanSource pathIsRegularFile pathIsGitRepo;
-    inherit (self.modules) evalModules unifyModuleSyntax
-      applyIfFunction mergeModules
+    inherit (self.modules) evalModules setDefaultModuleLocation
+      unifyModuleSyntax applyIfFunction mergeModules
       mergeModules' mergeOptionDecls evalOptionValue mergeDefinitions
       pushDownProperties dischargeProperties filterOverrides
       sortProperties fixupOptionType mkIf mkAssert mkMerge mkOverride
diff --git a/lib/modules.nix b/lib/modules.nix
index c68bbfcaa3e..f1125aca0a3 100644
--- a/lib/modules.nix
+++ b/lib/modules.nix
@@ -334,6 +334,10 @@ rec {
     in modulesPath: initialModules: args:
       filterModules modulesPath (collectStructuredModules unknownModule "" initialModules args);
 
+  /* Wrap a module with a default location for reporting errors. */
+  setDefaultModuleLocation = file: m:
+    { _file = file; imports = [ m ]; };
+
   /* Massage a module into canonical form, that is, a set consisting
      of ‘options’, ‘config’ and ‘imports’ attributes. */
   unifyModuleSyntax = file: key: m:
@@ -534,11 +538,9 @@ rec {
      correspond to the definition of 'loc' in 'opt.file'. */
   mergeOptionDecls =
    let
-    packSubmodule = file: m:
-      { _file = file; imports = [ m ]; };
     coerceOption = file: opt:
-      if isFunction opt then packSubmodule file opt
-      else packSubmodule file { options = opt; };
+      if isFunction opt then setDefaultModuleLocation file opt
+      else setDefaultModuleLocation file { options = opt; };
    in loc: opts:
     foldl' (res: opt:
       let t  = res.type;
@@ -568,7 +570,7 @@ rec {
 
           getSubModules = opt.options.type.getSubModules or null;
           submodules =
-            if getSubModules != null then map (packSubmodule opt._file) getSubModules ++ res.options
+            if getSubModules != null then map (setDefaultModuleLocation opt._file) getSubModules ++ res.options
             else if opt.options ? options then map (coerceOption opt._file) options' ++ res.options
             else res.options;
         in opt.options // res //