2023-05-13 20:43:36 +05:30
|
|
|
{
|
|
|
|
pkgs,
|
|
|
|
config,
|
|
|
|
lib,
|
|
|
|
...
|
|
|
|
} @ args:
|
|
|
|
with lib; let
|
|
|
|
cfg = config.colorschemes.catppuccin;
|
|
|
|
helpers = import ../helpers.nix args;
|
2023-07-12 09:30:23 +02:00
|
|
|
|
|
|
|
flavours = [
|
|
|
|
"latte"
|
|
|
|
"mocha"
|
|
|
|
"frappe"
|
|
|
|
"macchiato"
|
|
|
|
];
|
2023-05-13 20:43:36 +05:30
|
|
|
in {
|
|
|
|
options = {
|
|
|
|
colorschemes.catppuccin = {
|
|
|
|
enable = mkEnableOption "catppuccin";
|
|
|
|
|
|
|
|
package =
|
|
|
|
helpers.mkPackageOption "catppuccin" pkgs.vimPlugins.catppuccin-nvim;
|
|
|
|
|
2023-07-12 09:30:23 +02:00
|
|
|
flavour = helpers.defaultNullOpts.mkEnumFirstDefault flavours "Theme flavour";
|
2023-05-13 20:43:36 +05:30
|
|
|
|
|
|
|
background = let
|
|
|
|
mkBackgroundStyle = name:
|
2023-07-12 09:30:23 +02:00
|
|
|
helpers.defaultNullOpts.mkEnumFirstDefault flavours "Background for ${name}";
|
2023-05-13 20:43:36 +05:30
|
|
|
in {
|
|
|
|
light = mkBackgroundStyle "light";
|
|
|
|
dark = mkBackgroundStyle "dark";
|
|
|
|
};
|
|
|
|
|
|
|
|
terminalColors =
|
|
|
|
helpers.defaultNullOpts.mkBool false
|
|
|
|
"Configure the colors used when opening a :terminal in Neovim";
|
|
|
|
|
|
|
|
transparentBackground =
|
|
|
|
helpers.defaultNullOpts.mkBool false "Enable Transparent background";
|
|
|
|
|
|
|
|
showBufferEnd =
|
|
|
|
helpers.defaultNullOpts.mkBool false
|
|
|
|
"show the '~' characters after the end of buffers";
|
|
|
|
|
|
|
|
dimInactive = {
|
|
|
|
enabled =
|
|
|
|
helpers.defaultNullOpts.mkBool false
|
|
|
|
"if true, dims the background color of inactive window or buffer or split";
|
|
|
|
|
|
|
|
shade =
|
|
|
|
helpers.defaultNullOpts.mkStr "dark"
|
|
|
|
"sets the shade to apply to the inactive split or window or buffer";
|
|
|
|
|
|
|
|
percentage =
|
|
|
|
helpers.defaultNullOpts.mkNullable (types.numbers.between 0.0 1.0)
|
|
|
|
"0.15"
|
|
|
|
"percentage of the shade to apply to the inactive window, split or buffer";
|
|
|
|
};
|
|
|
|
|
|
|
|
disableItalic = helpers.defaultNullOpts.mkBool false "Force no italic";
|
|
|
|
|
|
|
|
disableBold = helpers.defaultNullOpts.mkBool false "Force no bold";
|
|
|
|
|
|
|
|
styles = {
|
|
|
|
comments =
|
|
|
|
helpers.defaultNullOpts.mkNullable (types.listOf types.str)
|
|
|
|
''[ "italic" ]'' "Define comments highlight properties";
|
|
|
|
|
|
|
|
conditionals =
|
|
|
|
helpers.defaultNullOpts.mkNullable (types.listOf types.str)
|
|
|
|
''[ 'italic" ]'' "Define conditionals highlight properties";
|
|
|
|
|
|
|
|
loops =
|
|
|
|
helpers.defaultNullOpts.mkNullable (types.listOf types.str) "[]"
|
|
|
|
"Define loops highlight properties";
|
|
|
|
|
|
|
|
functions =
|
|
|
|
helpers.defaultNullOpts.mkNullable (types.listOf types.str) "[]"
|
|
|
|
"Define functions highlight properties";
|
|
|
|
|
|
|
|
keywords =
|
|
|
|
helpers.defaultNullOpts.mkNullable (types.listOf types.str) "[]"
|
|
|
|
"Define keywords highlight properties";
|
|
|
|
|
|
|
|
strings =
|
|
|
|
helpers.defaultNullOpts.mkNullable (types.listOf types.str) "[]"
|
|
|
|
"Define strings highlight properties";
|
|
|
|
|
|
|
|
variables =
|
|
|
|
helpers.defaultNullOpts.mkNullable (types.listOf types.str) "[]"
|
|
|
|
"Define variables highlight properties";
|
|
|
|
|
|
|
|
numbers =
|
|
|
|
helpers.defaultNullOpts.mkNullable (types.listOf types.str) "[]"
|
|
|
|
"Define numbers highlight properties";
|
|
|
|
|
|
|
|
booleans =
|
|
|
|
helpers.defaultNullOpts.mkNullable (types.listOf types.str) "[]"
|
|
|
|
"Define booleans highlight properties";
|
|
|
|
|
|
|
|
properties =
|
|
|
|
helpers.defaultNullOpts.mkNullable (types.listOf types.str) "[]"
|
|
|
|
"Define properties highlight properties";
|
|
|
|
|
|
|
|
types =
|
|
|
|
helpers.defaultNullOpts.mkNullable (types.listOf types.str) "[]"
|
|
|
|
"Define types highlight properties";
|
|
|
|
|
|
|
|
operators =
|
|
|
|
helpers.defaultNullOpts.mkNullable (types.listOf types.str) "[]"
|
|
|
|
"Define operators highlight properties";
|
|
|
|
};
|
|
|
|
|
2023-07-12 09:30:23 +02:00
|
|
|
colorOverrides =
|
|
|
|
genAttrs
|
|
|
|
(flavours ++ ["all"])
|
|
|
|
(
|
|
|
|
flavour:
|
|
|
|
helpers.defaultNullOpts.mkNullable
|
|
|
|
(with types; attrsOf str)
|
|
|
|
"{}"
|
|
|
|
(
|
|
|
|
if flavour == "all"
|
|
|
|
then "Override colors for all of the flavours."
|
|
|
|
else "Override colors for the ${flavour} flavour."
|
|
|
|
)
|
|
|
|
);
|
2023-05-13 20:43:36 +05:30
|
|
|
|
|
|
|
customHighlights =
|
|
|
|
helpers.defaultNullOpts.mkNullable
|
|
|
|
(with types; either str (attrsOf attrs)) "" ''
|
|
|
|
Override specific highlight groups to use other groups or a hex color
|
|
|
|
Example:
|
|
|
|
function(colors)
|
|
|
|
return {
|
|
|
|
Comment = { fg = colors.flamingo },
|
|
|
|
["@constant.builtin"] = { fg = colors.peach, style = {} },
|
|
|
|
["@comment"] = { fg = colors.surface2, style = { "italic" } },
|
|
|
|
}
|
|
|
|
end
|
|
|
|
'';
|
|
|
|
|
|
|
|
integrations = {
|
|
|
|
aerial = helpers.defaultNullOpts.mkBool false "";
|
|
|
|
|
|
|
|
barbar = helpers.defaultNullOpts.mkBool config.plugins.barbar.enable "";
|
|
|
|
|
|
|
|
beacon = helpers.defaultNullOpts.mkBool false "";
|
|
|
|
|
|
|
|
cmp = helpers.defaultNullOpts.mkBool config.plugins.nvim-cmp.enable "";
|
|
|
|
|
|
|
|
coc_nvim = helpers.defaultNullOpts.mkBool false "";
|
|
|
|
|
|
|
|
dashboard =
|
|
|
|
helpers.defaultNullOpts.mkBool config.plugins.dashboard.enable "";
|
|
|
|
|
|
|
|
fern = helpers.defaultNullOpts.mkBool false "";
|
|
|
|
|
|
|
|
fidget = helpers.defaultNullOpts.mkBool false "";
|
|
|
|
|
|
|
|
gitgutter =
|
|
|
|
helpers.defaultNullOpts.mkBool config.plugins.gitgutter.enable "";
|
|
|
|
|
|
|
|
gitsigns =
|
|
|
|
helpers.defaultNullOpts.mkBool config.plugins.gitsigns.enable "";
|
|
|
|
|
|
|
|
harpoon =
|
|
|
|
helpers.defaultNullOpts.mkBool config.plugins.harpoon.enable "";
|
|
|
|
|
|
|
|
headlines = helpers.defaultNullOpts.mkBool false "";
|
|
|
|
|
|
|
|
hop = helpers.defaultNullOpts.mkBool false "";
|
|
|
|
|
|
|
|
illuminate = helpers.defaultNullOpts.mkBool false "";
|
|
|
|
|
|
|
|
leap = helpers.defaultNullOpts.mkBool false "";
|
|
|
|
|
|
|
|
lightspeed = helpers.defaultNullOpts.mkBool false "";
|
|
|
|
|
|
|
|
lsp_saga =
|
|
|
|
helpers.defaultNullOpts.mkBool config.plugins.lspsaga.enable "";
|
|
|
|
|
|
|
|
lsp_trouble =
|
|
|
|
helpers.defaultNullOpts.mkBool config.plugins.trouble.enable "";
|
|
|
|
|
|
|
|
markdown = helpers.defaultNullOpts.mkBool false "";
|
|
|
|
|
|
|
|
mason = helpers.defaultNullOpts.mkBool false "";
|
|
|
|
|
|
|
|
mini = helpers.defaultNullOpts.mkBool false "";
|
|
|
|
|
|
|
|
neogit = helpers.defaultNullOpts.mkBool config.plugins.neogit.enable "";
|
|
|
|
|
|
|
|
neotest = helpers.defaultNullOpts.mkBool false "";
|
|
|
|
|
|
|
|
neotree =
|
|
|
|
helpers.defaultNullOpts.mkBool config.plugins.neo-tree.enable "";
|
|
|
|
|
|
|
|
noice = helpers.defaultNullOpts.mkBool config.plugins.noice.enable "";
|
|
|
|
|
|
|
|
notify = helpers.defaultNullOpts.mkBool config.plugins.notify.enable "";
|
|
|
|
|
|
|
|
nvimtree =
|
|
|
|
helpers.defaultNullOpts.mkBool config.plugins.nvim-tree.enable "";
|
|
|
|
|
|
|
|
octo = helpers.defaultNullOpts.mkBool false "";
|
|
|
|
|
|
|
|
overseer = helpers.defaultNullOpts.mkBool false "";
|
|
|
|
|
|
|
|
pounce = helpers.defaultNullOpts.mkBool false "";
|
|
|
|
|
|
|
|
sandwich = helpers.defaultNullOpts.mkBool false "";
|
|
|
|
|
|
|
|
semantic_tokens = helpers.defaultNullOpts.mkBool false "";
|
|
|
|
|
|
|
|
symbols_outline = helpers.defaultNullOpts.mkBool false "";
|
|
|
|
|
|
|
|
telekasten = helpers.defaultNullOpts.mkBool false "";
|
|
|
|
|
|
|
|
telescope =
|
|
|
|
helpers.defaultNullOpts.mkBool config.plugins.telescope.enable "";
|
|
|
|
|
|
|
|
treesitter =
|
|
|
|
helpers.defaultNullOpts.mkBool config.plugins.treesitter.enable "";
|
|
|
|
|
|
|
|
treesitter_context =
|
|
|
|
helpers.defaultNullOpts.mkBool config.plugins.treesitter.enable "";
|
|
|
|
|
|
|
|
ts_rainbow =
|
|
|
|
helpers.defaultNullOpts.mkBool
|
|
|
|
config.plugins.treesitter-rainbow.enable "";
|
|
|
|
|
|
|
|
ts_rainbow2 = helpers.defaultNullOpts.mkBool false "";
|
|
|
|
|
|
|
|
vim_sneak = helpers.defaultNullOpts.mkBool false "";
|
|
|
|
|
|
|
|
vimwiki = helpers.defaultNullOpts.mkBool false "";
|
|
|
|
|
|
|
|
which_key =
|
|
|
|
helpers.defaultNullOpts.mkBool config.plugins.which-key.enable "";
|
|
|
|
|
|
|
|
barbecue = {
|
|
|
|
dim_dirname = helpers.defaultNullOpts.mkBool true "";
|
|
|
|
|
|
|
|
bold_basename = helpers.defaultNullOpts.mkBool true "";
|
|
|
|
|
|
|
|
dim_context = helpers.defaultNullOpts.mkBool false "";
|
|
|
|
|
|
|
|
alt_background = helpers.defaultNullOpts.mkBool false "";
|
|
|
|
};
|
|
|
|
|
|
|
|
dap = {
|
|
|
|
enabled = helpers.defaultNullOpts.mkBool false "";
|
|
|
|
|
|
|
|
enable_ui = helpers.defaultNullOpts.mkBool false "";
|
|
|
|
};
|
|
|
|
indent_blankline = {
|
|
|
|
enabled =
|
|
|
|
helpers.defaultNullOpts.mkBool
|
|
|
|
config.plugins.indent-blankline.enable "";
|
|
|
|
|
|
|
|
colored_indent_levels = helpers.defaultNullOpts.mkBool false "";
|
|
|
|
};
|
|
|
|
|
|
|
|
native_lsp = {
|
|
|
|
enabled = helpers.defaultNullOpts.mkBool config.plugins.lsp.enable "";
|
|
|
|
|
|
|
|
virtual_text = {
|
|
|
|
errors =
|
|
|
|
helpers.defaultNullOpts.mkNullable (types.listOf types.str)
|
|
|
|
''[ "italic" ]'' "";
|
|
|
|
|
|
|
|
hints =
|
|
|
|
helpers.defaultNullOpts.mkNullable (types.listOf types.str)
|
|
|
|
''[ "italic" ]'' "";
|
|
|
|
|
|
|
|
warnings =
|
|
|
|
helpers.defaultNullOpts.mkNullable (types.listOf types.str)
|
|
|
|
''[ "italic" ]'' "";
|
|
|
|
|
|
|
|
information =
|
|
|
|
helpers.defaultNullOpts.mkNullable (types.listOf types.str)
|
|
|
|
''[ "italic" ]'' "";
|
|
|
|
};
|
|
|
|
|
|
|
|
underlines = {
|
|
|
|
errors =
|
|
|
|
helpers.defaultNullOpts.mkNullable (types.listOf types.str)
|
|
|
|
''[ "underline" ]'' "";
|
|
|
|
|
|
|
|
hints =
|
|
|
|
helpers.defaultNullOpts.mkNullable (types.listOf types.str)
|
|
|
|
''[ "underline" ]'' "";
|
|
|
|
|
|
|
|
warnings =
|
|
|
|
helpers.defaultNullOpts.mkNullable (types.listOf types.str)
|
|
|
|
''[ "underline" ]'' "";
|
|
|
|
|
|
|
|
information =
|
|
|
|
helpers.defaultNullOpts.mkNullable (types.listOf types.str)
|
|
|
|
''[ "underline" ]'' "";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
navic = {
|
|
|
|
enabled = helpers.defaultNullOpts.mkBool false "";
|
|
|
|
|
|
|
|
custom_bg = helpers.defaultNullOpts.mkStr "NONE" "";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
config = mkIf cfg.enable {
|
|
|
|
colorscheme = "catppuccin";
|
|
|
|
extraPlugins = [cfg.package];
|
|
|
|
options = {termguicolors = true;};
|
|
|
|
extraConfigLuaPre = let
|
|
|
|
setupOptions = with cfg; {
|
|
|
|
inherit (cfg) flavour background styles integrations;
|
|
|
|
transparent_background = transparentBackground;
|
|
|
|
show_end_of_buffer = showBufferEnd;
|
|
|
|
term_colors = terminalColors;
|
|
|
|
dim_inactive = dimInactive;
|
|
|
|
no_italic = disableItalic;
|
|
|
|
no_bold = disableBold;
|
|
|
|
color_overrides = colorOverrides;
|
|
|
|
custom_highlights =
|
|
|
|
helpers.ifNonNull' cfg.customHighlights
|
|
|
|
(
|
|
|
|
if isString customHighlights
|
|
|
|
then helpers.mkRaw customHighlights
|
|
|
|
else
|
|
|
|
helpers.mkRaw ''
|
|
|
|
function(colors)
|
|
|
|
return
|
|
|
|
${helpers.toLuaObject customHighlights}
|
|
|
|
end
|
|
|
|
''
|
|
|
|
);
|
|
|
|
};
|
|
|
|
in ''
|
|
|
|
require("catppuccin").setup(${helpers.toLuaObject setupOptions})
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
}
|