nix-community.nixvim/plugins/colorschemes/palette.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

157 lines
3.6 KiB
Nix
Raw Permalink Normal View History

2023-12-31 12:22:55 +01:00
{
2024-09-14 11:26:36 -05:00
config,
2023-12-31 12:22:55 +01:00
lib,
...
}:
let
inherit (lib.nixvim) defaultNullOpts;
in
2024-12-22 09:58:27 +00:00
lib.nixvim.plugins.mkNeovimPlugin {
name = "palette";
isColorscheme = true;
packPathName = "palette.nvim";
package = "palette-nvim";
2024-05-05 19:39:35 +02:00
2024-08-22 10:03:02 -05:00
maintainers = [ lib.maintainers.GaetanLepage ];
2024-05-05 19:39:35 +02:00
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
2024-09-14 11:26:36 -05:00
config.plugins.lsp.package
];
2024-05-05 19:39:35 +02:00
# TODO introduced 2024-04-07: remove 2024-06-07
deprecateExtraOptions = true;
optionsRenamedToSettings = [
"palettes"
"customPalettes"
"italics"
"transparentBackground"
"caching"
"cacheDir"
];
2024-05-05 19:39:35 +02:00
settingsOptions = {
2023-12-31 12:22:55 +01:00
palettes = {
main = defaultNullOpts.mkStr "dark" ''
2023-12-31 12:22:55 +01:00
Palette for the main colors.
'';
2024-05-05 19:39:35 +02:00
accent = defaultNullOpts.mkStr "pastel" ''
2023-12-31 12:22:55 +01:00
Palette for the accent colors.
'';
2024-05-05 19:39:35 +02:00
state = defaultNullOpts.mkStr "pastel" ''
2023-12-31 12:22:55 +01:00
Palette for the state colors.
'';
};
2024-05-05 19:39:35 +02:00
custom_palettes =
2024-08-22 10:03:02 -05:00
lib.mapAttrs
2023-12-31 12:22:55 +01:00
(
name: colorNames:
defaultNullOpts.mkAttrsOf
2024-08-22 10:03:02 -05:00
(lib.types.submodule {
options = lib.genAttrs colorNames (
2023-12-31 12:22:55 +01:00
colorName:
2024-08-22 10:03:02 -05:00
lib.mkOption {
type = lib.types.str;
2023-12-31 12:22:55 +01:00
description = "Definition of color '${colorName}'";
}
);
})
{ }
2023-12-31 12:22:55 +01:00
''
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 ''
2023-12-31 12:22:55 +01:00
Whether to use italics.
'';
transparent_background = defaultNullOpts.mkBool false ''
2023-12-31 12:22:55 +01:00
Whether to use transparent background.
'';
caching = defaultNullOpts.mkBool true ''
2023-12-31 12:22:55 +01:00
Whether to enable caching.
'';
cache_dir = defaultNullOpts.mkStr {
__raw = "vim.fn.stdpath('cache') .. '/palette'";
} "Cache directory.";
2023-12-31 12:22:55 +01:00
};
settingsExample = { };
extraConfig = cfg: {
assertions = lib.nixvim.mkAssertions "colorschemes.palette" (
2024-08-22 10:03:02 -05:00
lib.mapAttrsToList
(
name: defaultPaletteNames:
let
2024-08-22 10:03:02 -05:00
customPalettesNames = lib.attrNames cfg.settings.custom_palettes.${name};
allowedPaletteNames = customPalettesNames ++ defaultPaletteNames;
palette = cfg.settings.palettes.${name};
in
{
2024-08-22 10:03:02 -05:00
assertion = lib.isString palette -> lib.elem palette allowedPaletteNames;
message = ''
`settings.palettes.${name}` (${palette}") is not part of the allowed ${name} palette names (${lib.concatStringsSep " " allowedPaletteNames}).
'';
}
)
2023-12-31 12:22:55 +01:00
{
main = [
"dark"
"light"
];
accent = [
"pastel"
"dark"
"bright"
];
state = [
"pastel"
"dark"
"bright"
];
}
);
};
}