summary refs log tree commit diff
path: root/pkgs/lib
diff options
context:
space:
mode:
authorNicolas Pierron <nicolas.b.pierron@gmail.com>2009-10-09 18:11:24 +0000
committerNicolas Pierron <nicolas.b.pierron@gmail.com>2009-10-09 18:11:24 +0000
commitfd0396037a4d9d8635d080bf31ca5c9ea2b9415f (patch)
treeade93fa2ed3a1d8c68cb9214df9aa79ae91a243e /pkgs/lib
parent67bf96d424e6bf34aa49d95194bcefaffb787533 (diff)
downloadnixlib-fd0396037a4d9d8635d080bf31ca5c9ea2b9415f.tar
nixlib-fd0396037a4d9d8635d080bf31ca5c9ea2b9415f.tar.gz
nixlib-fd0396037a4d9d8635d080bf31ca5c9ea2b9415f.tar.bz2
nixlib-fd0396037a4d9d8635d080bf31ca5c9ea2b9415f.tar.lz
nixlib-fd0396037a4d9d8635d080bf31ca5c9ea2b9415f.tar.xz
nixlib-fd0396037a4d9d8635d080bf31ca5c9ea2b9415f.tar.zst
nixlib-fd0396037a4d9d8635d080bf31ca5c9ea2b9415f.zip
extract function unifyOptionModule from moduleMerge. This function is
used to convert option sets, provided inside option declarations, to a
module.

svn path=/nixpkgs/trunk/; revision=17735
Diffstat (limited to 'pkgs/lib')
-rw-r--r--pkgs/lib/modules.nix23
1 files changed, 14 insertions, 9 deletions
diff --git a/pkgs/lib/modules.nix b/pkgs/lib/modules.nix
index 0df5c63da552..aeabf640cc2e 100644
--- a/pkgs/lib/modules.nix
+++ b/pkgs/lib/modules.nix
@@ -68,6 +68,16 @@ rec {
             {}
         );
 
+
+  unifyOptionModule = {key ? "<unknown location>"}: m: (args:
+    let module = lib.applyIfFunction m args; in
+    if lib.isModule module then
+      { inherit key; } // module
+    else
+      { inherit key; options = module; }
+  );
+
+
   moduleClosure = initModules: args:
     let
       moduleImport = m:
@@ -189,16 +199,11 @@ rec {
           options = lib.zip (name: values:
             if any isOption values then
               let
-                # locations to sub-options declarations
-                decls =
+                decls = # add location to sub-module options.
                   map (m:
-                    mapSubOptions (subModule: (args:
-                      let module = lib.applyIfFunction subModule args; in
-                      if lib.isModule module then
-                        { inherit (m) key; } // module
-                      else
-                        { inherit (m) key; options = module; }
-                    )) m.options
+                    mapSubOptions
+                      (unifyOptionModule {inherit (m) key;})
+                      m.options
                   ) (declarationsOf name);
               in
                 addOptionMakeUp