about summary refs log tree commit diff
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 287142c77d303..6bfc314991b27 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