diff options
author | Nicolas Pierron <nicolas.b.pierron@gmail.com> | 2009-10-09 18:11:24 +0000 |
---|---|---|
committer | Nicolas Pierron <nicolas.b.pierron@gmail.com> | 2009-10-09 18:11:24 +0000 |
commit | fd0396037a4d9d8635d080bf31ca5c9ea2b9415f (patch) | |
tree | ade93fa2ed3a1d8c68cb9214df9aa79ae91a243e /pkgs/lib/modules.nix | |
parent | 67bf96d424e6bf34aa49d95194bcefaffb787533 (diff) | |
download | nixlib-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/modules.nix')
-rw-r--r-- | pkgs/lib/modules.nix | 23 |
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 |