diff options
author | Silvan Mosberger <contact@infinisil.com> | 2019-12-05 05:15:17 +0100 |
---|---|---|
committer | Silvan Mosberger <contact@infinisil.com> | 2019-12-05 05:51:44 +0100 |
commit | 3cc77ce756dc3dbcbd20daa74a081fa1151e2f78 (patch) | |
tree | 5ab8bdb4d91a0a3b2cd72c3ae3649b507b425785 /lib/modules.nix | |
parent | aa613427b7ec84ddb9f07c21482dbdc6c169855d (diff) |
lib/modules: Make unifyModuleSyntax fully idempotent
Because why not
Diffstat (limited to 'lib/modules.nix')
-rw-r--r-- | lib/modules.nix | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/lib/modules.nix b/lib/modules.nix index 287142c77d30..6bfc314991b2 100644 --- a/lib/modules.nix +++ b/lib/modules.nix @@ -116,9 +116,9 @@ rec { /* Massage a module into canonical form, that is, a set consisting of ‘options’, ‘config’ and ‘imports’ attributes. */ unifyModuleSyntax = file: key: m: - let metaSet = if m ? meta - then { meta = m.meta; } - else {}; + let addMeta = config: if m ? meta + then mkMerge [ config { meta = m.meta; } ] + else config; in if m ? config || m ? options then let badAttrs = removeAttrs m ["_file" "key" "disabledModules" "imports" "options" "config" "meta"]; in @@ -130,7 +130,7 @@ rec { disabledModules = m.disabledModules or []; imports = m.imports or []; options = m.options or {}; - config = mkMerge [ (m.config or {}) metaSet ]; + config = addMeta (m.config or {}); } else { _file = m._file or file; @@ -138,7 +138,7 @@ rec { disabledModules = m.disabledModules or []; imports = m.require or [] ++ m.imports or []; options = {}; - config = mkMerge [ (removeAttrs m ["_file" "key" "disabledModules" "require" "imports"]) metaSet ]; + config = addMeta (removeAttrs m ["_file" "key" "disabledModules" "require" "imports"]); }; applyIfFunction = key: f: args@{ config, options, lib, ... }: if isFunction f then |