aboutsummaryrefslogtreecommitdiff
path: root/lib/modules.nix
diff options
context:
space:
mode:
authorSilvan Mosberger <contact@infinisil.com>2019-12-05 05:15:17 +0100
committerSilvan Mosberger <contact@infinisil.com>2019-12-05 05:51:44 +0100
commit3cc77ce756dc3dbcbd20daa74a081fa1151e2f78 (patch)
tree5ab8bdb4d91a0a3b2cd72c3ae3649b507b425785 /lib/modules.nix
parentaa613427b7ec84ddb9f07c21482dbdc6c169855d (diff)
lib/modules: Make unifyModuleSyntax fully idempotent
Because why not
Diffstat (limited to 'lib/modules.nix')
-rw-r--r--lib/modules.nix10
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