From fd0396037a4d9d8635d080bf31ca5c9ea2b9415f Mon Sep 17 00:00:00 2001 From: Nicolas Pierron Date: Fri, 9 Oct 2009 18:11:24 +0000 Subject: [PATCH] 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 --- pkgs/lib/modules.nix | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/pkgs/lib/modules.nix b/pkgs/lib/modules.nix index 0df5c63da55..aeabf640cc2 100644 --- a/pkgs/lib/modules.nix +++ b/pkgs/lib/modules.nix @@ -68,6 +68,16 @@ rec { {} ); + + unifyOptionModule = {key ? ""}: 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