lib.modules: init lib.mkDefinition

Free-floating definitions including file location.
This commit is contained in:
Robert Hensing 2025-03-17 16:17:54 +00:00 committed by Johannes Kirschbauer
parent 4ad504735a
commit b42b9e061b
No known key found for this signature in database
2 changed files with 19 additions and 4 deletions

View file

@ -446,6 +446,7 @@ let
fixupOptionType
mkIf
mkAssert
mkDefinition
mkMerge
mkOverride
mkOptionDefault

View file

@ -1097,10 +1097,16 @@ let
# Process mkMerge and mkIf properties.
defs' = concatMap (
m:
map (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))
}
) (addErrorContext "while evaluating definitions from `${m.file}':" (dischargeProperties m.value))
) defs;
# Process mkOverride properties.
@ -1171,6 +1177,8 @@ let
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 ];
@ -1365,6 +1373,11 @@ let
inherit contents;
};
/**
Return a definition with file location information.
*/
mkDefinition = args@{ file, value, ... }: args // { _type = "definition"; };
mkOverride = priority: content: {
_type = "override";
inherit priority content;
@ -2095,6 +2108,7 @@ private
mkBefore
mkChangedOptionModule
mkDefault
mkDefinition
mkDerivedConfig
mkFixStrictness
mkForce