colorschemes/palette: switch to mkNeovimPlugin

This commit is contained in:
Gaetan Lepage 2024-04-07 18:18:49 +02:00 committed by Gaétan Lepage
parent d348bb3e03
commit 07de1fe92e
2 changed files with 83 additions and 84 deletions

View file

@ -5,18 +5,34 @@
pkgs,
...
}:
with lib; let
cfg = config.colorschemes.palette;
in {
meta.maintainers = [maintainers.GaetanLepage];
with lib;
helpers.neovim-plugin.mkNeovimPlugin config {
name = "palette";
isColorscheme = true;
originalName = "palette.nvim";
defaultPackage = pkgs.vimPlugins.palette-nvim;
options.colorschemes.palette =
helpers.neovim-plugin.extraOptionsOptions
// {
enable = mkEnableOption "palette.nvim";
maintainers = [maintainers.GaetanLepage];
package = helpers.mkPackageOption "palette.nvim" pkgs.vimPlugins.palette-nvim;
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
pkgs.vimPlugins.nvim-lspconfig
];
# TODO introduced 2024-04-07: remove 2024-06-07
deprecateExtraOptions = true;
optionsRenamedToSettings = [
"palettes"
"customPalettes"
"italics"
"transparentBackground"
"caching"
"cacheDir"
];
settingsOptions = {
palettes = {
main = helpers.defaultNullOpts.mkStr "dark" ''
Palette for the main colors.
@ -89,7 +105,7 @@ in {
Whether to use italics.
'';
transparentBackground = helpers.defaultNullOpts.mkBool false ''
transparent_background = helpers.defaultNullOpts.mkBool false ''
Whether to use transparent background.
'';
@ -97,54 +113,33 @@ in {
Whether to enable caching.
'';
cacheDir =
cache_dir =
helpers.defaultNullOpts.mkStr
''{__raw = "vim.fn.stdpath('cache') .. '/palette'";}''
"Cache directory.";
};
config = mkIf cfg.enable {
assertions =
mapAttrsToList (
name: defaultPaletteNames: let
palette = cfg.palettes.${name};
allowedPaletteNames = (attrNames cfg.customPalettes.${name}) ++ defaultPaletteNames;
in {
assertion = isString palette -> elem palette allowedPaletteNames;
message = ''
Nixvim: `colorschemes.palette.palettes.${name}` (${palette}") is not part of the allowed ${name} palette names (${concatStringsSep " " allowedPaletteNames}).
'';
}
)
{
main = ["dark" "light"];
accent = ["pastel" "dark" "bright"];
state = ["pastel" "dark" "bright"];
};
settingsExample = {};
colorscheme = "palette";
extraConfig = cfg: {
assertions =
mapAttrsToList (
name: defaultPaletteNames: let
customPalettesNames = attrNames cfg.settings.custom_palettes.${name};
allowedPaletteNames = customPalettesNames ++ defaultPaletteNames;
extraPlugins = [
cfg.package
# Annoyingly, lspconfig is required, otherwise this line is breaking:
# https://github.com/roobert/palette.nvim/blob/a808c190a4f74f73782302152ebf323660d8db5f/lua/palette/init.lua#L45https://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
pkgs.vimPlugins.nvim-lspconfig
];
extraConfigLuaPre = let
setupOptions = with cfg;
palette = cfg.settings.palettes.${name};
in {
assertion = isString palette -> elem palette allowedPaletteNames;
message = ''
Nixvim (colorschemes.palette): `settings.palettes.${name}` (${palette}") is not part of the allowed ${name} palette names (${concatStringsSep " " allowedPaletteNames}).
'';
}
)
{
inherit palettes;
custom_palettes = customPalettes;
inherit italics;
transparent_background = transparentBackground;
inherit caching;
cache_dir = cacheDir;
}
// cfg.extraOptions;
in ''
require('palette').setup(${helpers.toLuaObject setupOptions})
'';
};
}
main = ["dark" "light"];
accent = ["pastel" "dark" "bright"];
state = ["pastel" "dark" "bright"];
};
};
}

View file

@ -7,20 +7,22 @@
colorschemes.palette = {
enable = true;
palettes = {
main = "dark";
accent = "pastel";
state = "pastel";
settings = {
palettes = {
main = "dark";
accent = "pastel";
state = "pastel";
};
custom_palettes = {
main = {};
accent = {};
state = {};
};
italics = true;
transparent_background = false;
caching = true;
cache_dir.__raw = "vim.fn.stdpath('cache') .. '/palette'";
};
customPalettes = {
main = {};
accent = {};
state = {};
};
italics = true;
transparentBackground = false;
caching = true;
cacheDir.__raw = "vim.fn.stdpath('cache') .. '/palette'";
};
};
@ -28,28 +30,30 @@
colorschemes.palette = {
enable = true;
palettes = {
main = "dust_dusk";
};
settings = {
palettes = {
main = "dust_dusk";
};
customPalettes = {
main = {
dust_dusk = {
color0 = "#121527";
color1 = "#1A1E39";
color2 = "#232A4D";
color3 = "#3E4D89";
color4 = "#687BBA";
color5 = "#A4B1D6";
color6 = "#bdbfc9";
color7 = "#DFE5F1";
color8 = "#e9e9ed";
custom_palettes = {
main = {
dust_dusk = {
color0 = "#121527";
color1 = "#1A1E39";
color2 = "#232A4D";
color3 = "#3E4D89";
color4 = "#687BBA";
color5 = "#A4B1D6";
color6 = "#bdbfc9";
color7 = "#DFE5F1";
color8 = "#e9e9ed";
};
};
};
};
italics = true;
transparentBackground = false;
italics = true;
transparent_background = false;
};
};
};
}