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 fixupOptionType
mkIf mkIf
mkAssert mkAssert
mkDefinition
mkMerge mkMerge
mkOverride mkOverride
mkOptionDefault mkOptionDefault

View file

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