mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-27 02:59:00 +02:00
We used to only think of it as the plugin repo's name, but we have been needing to use it for the name of the plugin's packpath location.
155 lines
3.6 KiB
Nix
155 lines
3.6 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
...
|
|
}:
|
|
let
|
|
inherit (lib.nixvim) defaultNullOpts;
|
|
in
|
|
lib.nixvim.neovim-plugin.mkNeovimPlugin {
|
|
name = "palette";
|
|
isColorscheme = true;
|
|
packPathName = "palette.nvim";
|
|
package = "palette-nvim";
|
|
|
|
maintainers = [ lib.maintainers.GaetanLepage ];
|
|
|
|
extraPlugins = [
|
|
# Annoyingly, lspconfig is required, otherwise this line is breaking:
|
|
# https://github.com/roobert/palette.nvim/blob/a808c190a4f74f73782302152ebf323660d8db5f/lua/palette/init.lua#L45
|
|
# An issue has been opened upstream to warn the maintainer: https://github.com/roobert/palette.nvim/issues/2
|
|
config.plugins.lsp.package
|
|
];
|
|
|
|
# TODO introduced 2024-04-07: remove 2024-06-07
|
|
deprecateExtraOptions = true;
|
|
optionsRenamedToSettings = [
|
|
"palettes"
|
|
"customPalettes"
|
|
"italics"
|
|
"transparentBackground"
|
|
"caching"
|
|
"cacheDir"
|
|
];
|
|
|
|
settingsOptions = {
|
|
palettes = {
|
|
main = defaultNullOpts.mkStr "dark" ''
|
|
Palette for the main colors.
|
|
'';
|
|
|
|
accent = defaultNullOpts.mkStr "pastel" ''
|
|
Palette for the accent colors.
|
|
'';
|
|
|
|
state = defaultNullOpts.mkStr "pastel" ''
|
|
Palette for the state colors.
|
|
'';
|
|
};
|
|
|
|
customPalettes =
|
|
lib.mapAttrs
|
|
(
|
|
name: colorNames:
|
|
defaultNullOpts.mkAttrsOf
|
|
(lib.types.submodule {
|
|
options = lib.genAttrs colorNames (
|
|
colorName:
|
|
lib.mkOption {
|
|
type = lib.types.str;
|
|
description = "Definition of color '${colorName}'";
|
|
}
|
|
);
|
|
})
|
|
{ }
|
|
''
|
|
Custom palettes for ${name} colors.
|
|
''
|
|
)
|
|
{
|
|
main = [
|
|
"color0"
|
|
"color1"
|
|
"color2"
|
|
"color3"
|
|
"color4"
|
|
"color5"
|
|
"color6"
|
|
"color7"
|
|
"color8"
|
|
];
|
|
|
|
accent = [
|
|
"accent0"
|
|
"accent1"
|
|
"accent2"
|
|
"accent3"
|
|
"accent4"
|
|
"accent5"
|
|
"accent6"
|
|
];
|
|
|
|
state = [
|
|
"error"
|
|
"warning"
|
|
"hint"
|
|
"ok"
|
|
"info"
|
|
];
|
|
};
|
|
|
|
italics = defaultNullOpts.mkBool true ''
|
|
Whether to use italics.
|
|
'';
|
|
|
|
transparent_background = defaultNullOpts.mkBool false ''
|
|
Whether to use transparent background.
|
|
'';
|
|
|
|
caching = defaultNullOpts.mkBool true ''
|
|
Whether to enable caching.
|
|
'';
|
|
|
|
cache_dir = defaultNullOpts.mkStr {
|
|
__raw = "vim.fn.stdpath('cache') .. '/palette'";
|
|
} "Cache directory.";
|
|
};
|
|
|
|
settingsExample = { };
|
|
|
|
extraConfig = cfg: {
|
|
assertions =
|
|
lib.mapAttrsToList
|
|
(
|
|
name: defaultPaletteNames:
|
|
let
|
|
customPalettesNames = lib.attrNames cfg.settings.custom_palettes.${name};
|
|
allowedPaletteNames = customPalettesNames ++ defaultPaletteNames;
|
|
|
|
palette = cfg.settings.palettes.${name};
|
|
in
|
|
{
|
|
assertion = lib.isString palette -> lib.elem palette allowedPaletteNames;
|
|
message = ''
|
|
Nixvim (colorschemes.palette): `settings.palettes.${name}` (${palette}") is not part of the allowed ${name} palette names (${lib.concatStringsSep " " allowedPaletteNames}).
|
|
'';
|
|
}
|
|
)
|
|
{
|
|
main = [
|
|
"dark"
|
|
"light"
|
|
];
|
|
accent = [
|
|
"pastel"
|
|
"dark"
|
|
"bright"
|
|
];
|
|
state = [
|
|
"pastel"
|
|
"dark"
|
|
"bright"
|
|
];
|
|
};
|
|
};
|
|
}
|