mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-13 05:05:29 +03:00
lib.modules: init lib.mkDefinition
Free-floating definitions including file location.
This commit is contained in:
parent
4ad504735a
commit
b42b9e061b
2 changed files with 19 additions and 4 deletions
|
@ -446,6 +446,7 @@ let
|
|||
fixupOptionType
|
||||
mkIf
|
||||
mkAssert
|
||||
mkDefinition
|
||||
mkMerge
|
||||
mkOverride
|
||||
mkOptionDefault
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue