67 lines
1.8 KiB
Nix
67 lines
1.8 KiB
Nix
|
{lib}: rec {
|
||
|
mkLuaBinding = key: action: desc:
|
||
|
lib.mkIf (key != null) {
|
||
|
"${key}" = {
|
||
|
inherit action desc;
|
||
|
lua = true;
|
||
|
silent = true;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
mkExprBinding = key: action: desc:
|
||
|
lib.mkIf (key != null) {
|
||
|
"${key}" = {
|
||
|
inherit action desc;
|
||
|
lua = true;
|
||
|
silent = true;
|
||
|
expr = true;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
mkBinding = key: action: desc:
|
||
|
lib.mkIf (key != null) {
|
||
|
"${key}" = {
|
||
|
inherit action desc;
|
||
|
silent = true;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
mkMappingOption = description: default:
|
||
|
lib.mkOption {
|
||
|
type = lib.types.nullOrlib.types.str;
|
||
|
inherit default description;
|
||
|
};
|
||
|
|
||
|
# Utility function that takes two attrsets:
|
||
|
# { someKey = "some_value" } and
|
||
|
# { someKey = { description = "Some Description"; }; }
|
||
|
# and merges them into
|
||
|
# { someKey = { value = "some_value"; description = "Some Description"; }; }
|
||
|
addDescriptionsToMappings = actualMappings: mappingDefinitions:
|
||
|
lib.attrsets.mapAttrs (name: value: let
|
||
|
isNested = lib.isAttrs value;
|
||
|
returnedValue =
|
||
|
if isNested
|
||
|
then addDescriptionsToMappings actualMappings."${name}" mappingDefinitions."${name}"
|
||
|
else {
|
||
|
value = value;
|
||
|
description = mappingDefinitions."${name}".description;
|
||
|
};
|
||
|
in
|
||
|
returnedValue)
|
||
|
actualMappings;
|
||
|
|
||
|
mkSetBinding = binding: action:
|
||
|
mkBinding binding.value action binding.description;
|
||
|
|
||
|
mkSetExprBinding = binding: action:
|
||
|
mkExprBinding binding.value action binding.description;
|
||
|
|
||
|
mkSetLuaBinding = binding: action:
|
||
|
mkLuaBinding binding.value action binding.description;
|
||
|
|
||
|
# For forward compatibility.
|
||
|
literalExpression = lib.literalExpression or lib.literalExample;
|
||
|
literalDocBook = lib.literalDocBook or lib.literalExample;
|
||
|
}
|