80 lines
2.0 KiB
Nix
80 lines
2.0 KiB
Nix
{ lib, config, ... }:
|
|
let
|
|
themes = {
|
|
gruvboxDarkMedium = {
|
|
bg = "#282828";
|
|
bg0_h = "#1d2021";
|
|
bg0_s = "#32302f";
|
|
bg1 = "#3c3836";
|
|
bg2 = "#504945";
|
|
bg3 = "#665c54";
|
|
bg4 = "#7c6f64";
|
|
fg = "#ebdbb2";
|
|
fg1 = "#ebdbb2";
|
|
fg2 = "#d5c4a1";
|
|
fg3 = "#bdae93";
|
|
fg4 = "#a89984";
|
|
red = "#cc241d";
|
|
red_b = "#fb4934";
|
|
green = "#98971a";
|
|
green_b = "#b8bb26";
|
|
yellow = "#d79921";
|
|
yellow_b = "#fabd2f";
|
|
blue = "#458588";
|
|
blue_b = "#83a598";
|
|
purple = "#b16286";
|
|
purple_b = "#d3869b";
|
|
aqua = "#689d6a";
|
|
aqua_b = "#8ec07c";
|
|
orange = "#d65d0e";
|
|
orange_b = "#fe8019";
|
|
gray = "#928374";
|
|
};
|
|
catppuccinMocha = {
|
|
bg = "#1e1e2e";
|
|
bg0_h = "#11111b";
|
|
bg0_s = "#181825";
|
|
bg1 = "#313244";
|
|
bg2 = "#45475a";
|
|
bg3 = "#585b70";
|
|
bg4 = "#6c7086";
|
|
fg = "#cdd6f4";
|
|
fg1 = "#cdd6f4";
|
|
fg2 = "#bac2de";
|
|
fg3 = "#a6adc8";
|
|
fg4 = "#9399b2";
|
|
red = "#d20f39";
|
|
red_b = "#f38ba8";
|
|
green = "#40a02b";
|
|
green_b = "#a6e3a1";
|
|
yellow = "#df8e1d";
|
|
yellow_b = "#f9e2af";
|
|
blue = "#1e66f5";
|
|
blue_b = "#89b4fa";
|
|
purple = "#8839ef";
|
|
purple_b = "#cba6f7";
|
|
aqua = "#179299";
|
|
aqua_b = "#94e2d5";
|
|
orange = "#fe640b";
|
|
orange_b = "#fab387";
|
|
gray = "#7f849c";
|
|
};
|
|
};
|
|
in
|
|
{
|
|
options.theme = {
|
|
name = lib.mkOption {
|
|
type = lib.types.enum (builtins.attrNames themes);
|
|
default = "gruvboxDarkMedium";
|
|
description = "Theme name to use";
|
|
};
|
|
colors = lib.mkOption {
|
|
type = lib.types.attrsOf lib.types.str;
|
|
description = "Named color palette";
|
|
default = themes.gruvboxDarkMedium;
|
|
};
|
|
};
|
|
|
|
config.theme.colors = themes.${config.theme.name};
|
|
}
|