diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2015-07-28 14:29:29 +0200 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2015-07-28 15:04:18 +0200 |
commit | 0ca10a445a76e9e88818a986a0691b30b20aaada (patch) | |
tree | 31547bb747f24a22ca4153a7ff5cc59c37e7f50b /lib/modules.nix | |
parent | c60e4016e725736c7499d35edac11d7a2df5d9b5 (diff) | |
download | nixpkgs-0ca10a445a76e9e88818a986a0691b30b20aaada.tar nixpkgs-0ca10a445a76e9e88818a986a0691b30b20aaada.tar.gz nixpkgs-0ca10a445a76e9e88818a986a0691b30b20aaada.tar.bz2 nixpkgs-0ca10a445a76e9e88818a986a0691b30b20aaada.tar.lz nixpkgs-0ca10a445a76e9e88818a986a0691b30b20aaada.tar.xz nixpkgs-0ca10a445a76e9e88818a986a0691b30b20aaada.tar.zst nixpkgs-0ca10a445a76e9e88818a986a0691b30b20aaada.zip |
Fix indentation
Diffstat (limited to 'lib/modules.nix')
-rw-r--r-- | lib/modules.nix | 65 |
1 files changed, 33 insertions, 32 deletions
diff --git a/lib/modules.nix b/lib/modules.nix index 80268e51e11..959abf5e51e 100644 --- a/lib/modules.nix +++ b/lib/modules.nix @@ -281,38 +281,39 @@ rec { inherit isDefined files; }; - # Merge definitions of a value of a given type - mergeDefinitions = loc: type: defs: rec { - defsFinal = - let - # Process mkMerge and mkIf properties - processIfAndMerge = defs: concatMap (m: - map (value: { inherit (m) file; inherit value; }) (dischargeProperties m.value) - ) defs; - - # Process mkOverride properties - processOverride = defs: filterOverrides defs; - - # Sort mkOrder properties - processOrder = defs: - # Avoid sorting if we don't have to. - if any (def: def.value._type or "" == "order") defs - then sortProperties defs - else defs; - in - processOrder (processOverride (processIfAndMerge defs)); - - # Type-check the remaining definitions, and merge them. - mergedValue = foldl' (res: def: - if type.check def.value then res - else throw "The option value `${showOption loc}' in `${def.file}' is not a ${type.name}.") - (type.merge loc defsFinal) defsFinal; - - isDefined = defsFinal != []; - optionalValue = - if isDefined then { value = mergedValue; } - else {}; - }; + # Merge definitions of a value of a given type. + mergeDefinitions = loc: type: defs: rec { + defsFinal = + let + # Process mkMerge and mkIf properties + processIfAndMerge = defs: concatMap (m: + map (value: { inherit (m) file; inherit value; }) (dischargeProperties m.value) + ) defs; + + # Process mkOverride properties + processOverride = defs: filterOverrides defs; + + # Sort mkOrder properties + processOrder = defs: + # Avoid sorting if we don't have to. + if any (def: def.value._type or "" == "order") defs + then sortProperties defs + else defs; + in + processOrder (processOverride (processIfAndMerge defs)); + + # Type-check the remaining definitions, and merge them. + mergedValue = foldl' (res: def: + if type.check def.value then res + else throw "The option value `${showOption loc}' in `${def.file}' is not a ${type.name}.") + (type.merge loc defsFinal) defsFinal; + + isDefined = defsFinal != []; + + optionalValue = + if isDefined then { value = mergedValue; } + else {}; + }; /* Given a config set, expand mkMerge properties, and push down the other properties into the children. The result is a list of |