lib.modules: init lib.mkDefinition

Free-floating definitions including file location.

Changed files
+19 -4
lib
+1
lib/default.nix
···
fixupOptionType
mkIf
mkAssert
+
mkDefinition
mkMerge
mkOverride
mkOptionDefault
+18 -4
lib/modules.nix
···
# Process mkMerge and mkIf properties.
defs' = concatMap (
m:
-
map (value: {
-
inherit (m) file;
-
inherit value;
-
}) (addErrorContext "while evaluating definitions from `${m.file}':" (dischargeProperties m.value))
+
map (
+
value:
+
if value._type or null == "definition" then
+
value
+
else
+
{
+
inherit (m) file;
+
inherit value;
+
}
+
) (addErrorContext "while evaluating definitions from `${m.file}':" (dischargeProperties m.value))
) defs;
# Process mkOverride properties.
···
map (mapAttrs (n: v: mkIf cfg.condition v)) (pushDownProperties cfg.content)
else if cfg._type or "" == "override" then
map (mapAttrs (n: v: mkOverride cfg.priority v)) (pushDownProperties cfg.content)
+
# else if cfg._type or "" == "definition" then
+
# map (mapAttrs (n: v: mkDefinition v)) (pushDownProperties cfg.content)
# FIXME: handle mkOrder?
else
[ cfg ];
···
_type = "merge";
inherit contents;
};
+
+
/**
+
Return a definition with file location information.
+
*/
+
mkDefinition = args@{ file, value, ... }: args // { _type = "definition"; };
mkOverride = priority: content: {
_type = "override";
···
mkBefore
mkChangedOptionModule
mkDefault
+
mkDefinition
mkDerivedConfig
mkFixStrictness
mkForce