diff options
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 |