diff options
author | Shea Levy <shea@shealevy.com> | 2013-06-07 03:42:46 -0400 |
---|---|---|
committer | Shea Levy <shea@shealevy.com> | 2013-06-07 03:42:46 -0400 |
commit | 6d64b1d92c9ac0b0f7404f8bbb3a302b3030027a (patch) | |
tree | 2adc234219c37ff16d7a7c2cb03f3470d393d148 /pkgs/lib/modules.nix | |
parent | d465d6764ab6e11bdd01b2f8bf8bd5cb436e6870 (diff) | |
download | nixpkgs-6d64b1d92c9ac0b0f7404f8bbb3a302b3030027a.tar nixpkgs-6d64b1d92c9ac0b0f7404f8bbb3a302b3030027a.tar.gz nixpkgs-6d64b1d92c9ac0b0f7404f8bbb3a302b3030027a.tar.bz2 nixpkgs-6d64b1d92c9ac0b0f7404f8bbb3a302b3030027a.tar.lz nixpkgs-6d64b1d92c9ac0b0f7404f8bbb3a302b3030027a.tar.xz nixpkgs-6d64b1d92c9ac0b0f7404f8bbb3a302b3030027a.tar.zst nixpkgs-6d64b1d92c9ac0b0f7404f8bbb3a302b3030027a.zip |
Give unique keys to submodule components
I'm not wed to the outPath values I chose, other options are probably valid there too. It would be nice if we could track which file each merged value came from as well. Signed-off-by: Shea Levy <shea@shealevy.com>
Diffstat (limited to 'pkgs/lib/modules.nix')
-rw-r--r-- | pkgs/lib/modules.nix | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/pkgs/lib/modules.nix b/pkgs/lib/modules.nix index 74603e9c579..3d4ebc32512 100644 --- a/pkgs/lib/modules.nix +++ b/pkgs/lib/modules.nix @@ -75,12 +75,19 @@ rec { ); - unifyOptionModule = {key ? "<unknown location>"}: m: (args: - let module = lib.applyIfFunction m args; in - if lib.isModule module then - { inherit key; } // module + unifyOptionModule = {key ? "<unknown location>"}: name: index: m: (args: + let + module = lib.applyIfFunction m args; + key_ = rec { + file = key; + option = name; + number = index; + outPath = "file ${toString file} option ${option} options number ${toString number}"; + }; + in if lib.isModule module then + { key = key_; } // module else - { inherit key; options = module; } + { key = key_; options = module; } ); @@ -240,7 +247,7 @@ rec { decls = # add location to sub-module options. map (m: mapSubOptions - (unifyOptionModule {inherit (m) key;}) + (unifyOptionModule {inherit (m) key;} name) m.options ) declarations; |