summary refs log tree commit diff
path: root/pkgs/lib/modules.nix
diff options
context:
space:
mode:
authorNicolas Pierron <nicolas.b.pierron@gmail.com>2009-09-15 00:21:39 +0000
committerNicolas Pierron <nicolas.b.pierron@gmail.com>2009-09-15 00:21:39 +0000
commit37ce2ca949e389ea2106ad596b3f0bfc3313e468 (patch)
tree941b6bb42122587784ea901ec95f54efdabd3cc0 /pkgs/lib/modules.nix
parenta593492d4f6b9cde1e3a8e7d710d5d10b03b7718 (diff)
downloadnixpkgs-37ce2ca949e389ea2106ad596b3f0bfc3313e468.tar
nixpkgs-37ce2ca949e389ea2106ad596b3f0bfc3313e468.tar.gz
nixpkgs-37ce2ca949e389ea2106ad596b3f0bfc3313e468.tar.bz2
nixpkgs-37ce2ca949e389ea2106ad596b3f0bfc3313e468.tar.lz
nixpkgs-37ce2ca949e389ea2106ad596b3f0bfc3313e468.tar.xz
nixpkgs-37ce2ca949e389ea2106ad596b3f0bfc3313e468.tar.zst
nixpkgs-37ce2ca949e389ea2106ad596b3f0bfc3313e468.zip
Handles cases where developers ""cannot"" put their initial modules in
other files.

Imports of imported attribute set are not working anymore because this
feature is hard to maintain and because this a potential source of error.

Imports are only accepted inside named modules where the system has some
control over mutual inclusion.

svn path=/nixpkgs/trunk/; revision=17144
Diffstat (limited to 'pkgs/lib/modules.nix')
-rw-r--r--pkgs/lib/modules.nix20
1 files changed, 9 insertions, 11 deletions
diff --git a/pkgs/lib/modules.nix b/pkgs/lib/modules.nix
index 7e1d2f9d56f..61cf7624bc5 100644
--- a/pkgs/lib/modules.nix
+++ b/pkgs/lib/modules.nix
@@ -64,22 +64,20 @@ rec {
 
   moduleClosure = initModules: args:
     let
-      moduleImport = m: lib.addErrorContext 
-        "Import module ${(if builtins.isAttrs m then "{...}" else m)}." (
-        (unifyModuleSyntax (applyIfFunction 
-	  (if builtins.isAttrs m then m else import m) args)) // {
+      moduleImport = m:
+        (unifyModuleSyntax (applyIfFunction (importIfPath m) args)) // {
           # used by generic closure to avoid duplicated imports.
-          key = m;
-          paths = [ m ];
-        }
-      );
+          key = if isPath m then m else
+            /bad/developer/implies/bad/error/messages;
+        };
 
       getImports = m: attrByPath ["imports"] [] m;
+
     in
-      lazyGenericClosure {
-        startSet = map moduleImport initModules;
+      (lazyGenericClosure {
+        startSet = map moduleImport (filter isPath initModules);
         operator = m: map moduleImport (getImports m);
-      };
+      }) ++ (map moduleImport (filter (m: ! isPath m) initModules));
 
   selectDeclsAndDefs = modules:
     lib.concatMap (m: