helpers: expose maybeRaw for wider use

This commit is contained in:
Gaetan Lepage 2024-01-01 23:15:15 +01:00 committed by Gaétan Lepage
parent b0895fc9fa
commit f0b487a10c

View file

@ -117,9 +117,7 @@ with lib; rec {
else v; else v;
}; };
defaultNullOpts = let defaultNullOpts = rec {
maybeRaw = t: lib.types.either t nixvimTypes.rawLua;
in rec {
mkNullable = type: default: desc: mkNullable = type: default: desc:
mkNullOrOption type ( mkNullOrOption type (
let let
@ -188,28 +186,28 @@ with lib; rec {
'' ''
); );
mkNum = default: mkNullable (maybeRaw lib.types.number) (toString default); mkNum = default: mkNullable (with nixvimTypes; maybeRaw number) (toString default);
mkInt = default: mkNullable (maybeRaw lib.types.int) (toString default); mkInt = default: mkNullable (with nixvimTypes; maybeRaw int) (toString default);
# Positive: >0 # Positive: >0
mkPositiveInt = default: mkNullable (maybeRaw lib.types.ints.positive) (toString default); mkPositiveInt = default: mkNullable (with nixvimTypes; maybeRaw ints.positive) (toString default);
# Unsigned: >=0 # Unsigned: >=0
mkUnsignedInt = default: mkNullable (maybeRaw lib.types.ints.unsigned) (toString default); mkUnsignedInt = default: mkNullable (with nixvimTypes; maybeRaw ints.unsigned) (toString default);
mkBool = default: mkBool = default:
mkNullable (maybeRaw lib.types.bool) ( mkNullable (with nixvimTypes; maybeRaw bool) (
if default if default
then "true" then "true"
else "false" else "false"
); );
mkStr = default: mkNullable (maybeRaw lib.types.str) ''${builtins.toString default}''; mkStr = default: mkNullable (with nixvimTypes; maybeRaw str) ''${builtins.toString default}'';
mkAttributeSet = default: mkNullable lib.types.attrs ''${default}''; mkAttributeSet = default: mkNullable nixvimTypes.attrs ''${default}'';
# Note that this function is _not_ to be used with submodule elements, as it may obstruct the # Note that this function is _not_ to be used with submodule elements, as it may obstruct the
# documentation # documentation
mkListOf = ty: default: mkNullable (lib.types.listOf (maybeRaw ty)) default; mkListOf = ty: default: mkNullable (with nixvimTypes; listOf (maybeRaw ty)) default;
# Note that this function is _not_ to be used with submodule elements, as it may obstruct the # Note that this function is _not_ to be used with submodule elements, as it may obstruct the
# documentation # documentation
mkAttrsOf = ty: default: mkNullable (lib.types.attrsOf (maybeRaw ty)) default; mkAttrsOf = ty: default: mkNullable (with nixvimTypes; attrsOf (maybeRaw ty)) default;
mkEnum = enum: default: mkNullable (maybeRaw (lib.types.enum enum)) ''"${default}"''; mkEnum = enumValues: default: mkNullable (with nixvimTypes; maybeRaw (enum enumValues)) ''"${default}"'';
mkEnumFirstDefault = enum: mkEnum enum (head enum); mkEnumFirstDefault = enumValues: mkEnum enumValues (head enumValues);
mkBorder = default: name: desc: mkBorder = default: name: desc:
mkNullable mkNullable
nixvimTypes.border nixvimTypes.border
@ -424,6 +422,11 @@ with lib; rec {
check = isRawType; check = isRawType;
}; };
maybeRaw = type:
types.either
type
nixvimTypes.rawLua;
border = with types; border = with types;
oneOf [ oneOf [
str str