lib/modules: Make unifyModuleSyntax fully idempotent
Because why not
This commit is contained in:
parent
aa613427b7
commit
3cc77ce756
|
@ -116,9 +116,9 @@ rec {
|
||||||
/* Massage a module into canonical form, that is, a set consisting
|
/* Massage a module into canonical form, that is, a set consisting
|
||||||
of ‘options’, ‘config’ and ‘imports’ attributes. */
|
of ‘options’, ‘config’ and ‘imports’ attributes. */
|
||||||
unifyModuleSyntax = file: key: m:
|
unifyModuleSyntax = file: key: m:
|
||||||
let metaSet = if m ? meta
|
let addMeta = config: if m ? meta
|
||||||
then { meta = m.meta; }
|
then mkMerge [ config { meta = m.meta; } ]
|
||||||
else {};
|
else config;
|
||||||
in
|
in
|
||||||
if m ? config || m ? options then
|
if m ? config || m ? options then
|
||||||
let badAttrs = removeAttrs m ["_file" "key" "disabledModules" "imports" "options" "config" "meta"]; in
|
let badAttrs = removeAttrs m ["_file" "key" "disabledModules" "imports" "options" "config" "meta"]; in
|
||||||
|
@ -130,7 +130,7 @@ rec {
|
||||||
disabledModules = m.disabledModules or [];
|
disabledModules = m.disabledModules or [];
|
||||||
imports = m.imports or [];
|
imports = m.imports or [];
|
||||||
options = m.options or {};
|
options = m.options or {};
|
||||||
config = mkMerge [ (m.config or {}) metaSet ];
|
config = addMeta (m.config or {});
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ _file = m._file or file;
|
{ _file = m._file or file;
|
||||||
|
@ -138,7 +138,7 @@ rec {
|
||||||
disabledModules = m.disabledModules or [];
|
disabledModules = m.disabledModules or [];
|
||||||
imports = m.require or [] ++ m.imports or [];
|
imports = m.require or [] ++ m.imports or [];
|
||||||
options = {};
|
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
|
applyIfFunction = key: f: args@{ config, options, lib, ... }: if isFunction f then
|
||||||
|
|
Loading…
Reference in New Issue