dotfiles/config/themes/default.nix
2025-01-14 21:25:38 -06:00

335 lines
10 KiB
Nix
Executable file

let
currentTheme = catppuccin-macchiato;
# Ayu
ayu-dark = "ayu-dark";
ayu-light = "ayu-light";
ayu-mirage = "ayu-mirage";
# Catppuccin
catppuccin-latte = "catppuccin-latte";
catppuccin-frappe = "catppuccin-frappe";
catppuccin-macchiato = "catppuccin-macchiato";
catppuccin-mocha = "catppuccin-mocha";
# Cobalt
cobalt2 = "cobalt2";
# Dracula
dracula = "dracula";
# Gruvbox
gruvbox-dark = "gruvbox-dark";
gruvbox-light = "gruvbox-light";
# Houston
houston = "houston";
# Kanagawa
kanagawa-dragon = "kanagawa-dragon";
kanagawa-lotus = "kanagawa-lotus";
kanagawa-wave = "kanagawa-wave";
# Laserwave
laserwave = "laserwave";
#Lunar
lunar = "lunar";
# Material
material-darker = "material-darker";
material-deep-ocean = "material-deep-ocean";
material-forest = "material-forest";
material-lighter = "material-lighter";
material-oceanic = "material-oceanic";
material-palenight = "material-palenight";
material-sandy-beach = "material-sandy-beach";
material-sky-blue = "material-sky-blue";
material-space = "material-space";
material-volcano = "material-volcano";
# Monokai
monokai = "monokai";
# Night Owl
night-owl = "night-owl";
# Nord
nord = "nord";
#Ocean Next
ocean-next = "ocean-next";
# One Dark
one-dark = "one-dark";
# Plastic
plastic = "plastic";
# Poimandres
poimandres-base = "poimandres-base";
poimandres-storm = "poimandres-storm";
# Rosepine
rosepine = "rosepine";
rosepine-moon = "rosepine-moon";
rosepine-dawn = "rosepine-dawn";
# Tokyo Night
tokyo-night-night = "tokyo-night-night";
tokyo-night-storm = "tokyo-night-storm";
tokyo-night-day = "tokyo-night-day";
# Solorized
solorized-dark = "solorized-dark";
solorized-light = "solorized-light";
# Synthwave 84
synthwave-84 = "synthwave-84";
# Vesper
vesper = "vesper";
# Wasp
wasp = "wasp";
errorMessage = "Unknown theme: ${currentTheme}";
schemePath = ./schemes;
mkThemeMap = themes: themeColours:
if currentTheme == builtins.head themes
then builtins.head themeColours
else if themes == []
then throw errorMessage
else mkThemeMap (builtins.tail themes) (builtins.tail themeColours);
mapColour =
# Ayu
ayu-darkColour: ayu-lightColour: ayu-mirageColour:
# Catppuccin
catppuccin-frappeColour: catppuccin-latteColour: catppuccin-macchiatoColour: catppuccin-mochaColour:
# Cobalt2
cobalt2Colour:
# Dracula
draculaColour:
# Gruvbox
gruvbox-darkColour: gruvbox-lightColour:
# Houston
houstonColour:
# Kanagawa
kanagawa-dragonColour: kanagawa-lotusColour: kanagawa-waveColour:
# Laserwave
laserwaveColour:
# Lunar
lunarColour:
# Material
material-darkerColour: material-deep-oceanColour: material-forestColour: material-lighterColour: material-oceanicColour: material-palenightColour: material-sandy-beachColour: material-sky-blueColour: material-spaceColour: material-volcanoColour:
# Monokai
monokaiColour:
# Night Owl
night-owlColour:
# Nord
nordColour:
# Ocean Next
ocean-nextColour:
# One Dark
one-darkColour:
# Plastic
plasticColour:
# Poimandres
poimandres-baseColour: poimandres-stormColour:
# Rosepine
rosepineColour: rosepine-moonColour: rosepine-dawnColour:
# Tokyo Night
tokyo-night-nightColor: tokyo-night-stormColor: tokyo-night-dayColor:
# Solorized
solorized-darkColour: solorized-lightColour:
# Synthwave 84
synthwave-84Colour:
# Vesper
vesperColour:
# Wasp
waspColour:
mkThemeMap [
# Ayu
ayu-dark
ayu-light
ayu-mirage
# Catppuccin
catppuccin-frappe
catppuccin-latte
catppuccin-macchiato
catppuccin-mocha
# Cobalt2
cobalt2
# Dracula
dracula
# Gruvbox
gruvbox-dark
gruvbox-light
# Houston
houston
# Kanagawa
kanagawa-dragon
kanagawa-lotus
kanagawa-wave
# Laserwave
laserwave
# Lunar
lunar
# Material
material-darker
material-deep-ocean
material-forest
material-lighter
material-oceanic
material-palenight
material-sandy-beach
material-sky-blue
material-space
material-volcano
# Monokai
monokai
# Night Owl
night-owl
# Nord
nord
# Ocean Next
ocean-next
# One Dark
one-dark
# Plastic
plastic
# Poimandres
poimandres-base
poimandres-storm
# Rosepine
rosepine
rosepine-moon
rosepine-dawn
# Tokyo Night
tokyo-night-night
tokyo-night-storm
tokyo-night-day
# Solorized
solorized-dark
solorized-light
# Synthwave 84
synthwave-84
# Vesper
vesper
# Wasp
wasp
] [
# Ayu
ayu-darkColour
ayu-lightColour
ayu-mirageColour
# Catppuccin
catppuccin-frappeColour
catppuccin-latteColour
catppuccin-macchiatoColour
catppuccin-mochaColour
# Cobalt2
cobalt2Colour
# Dracula
draculaColour
# Gruvbox
gruvbox-darkColour
gruvbox-lightColour
# Houston
houstonColour
# Kanagawa
kanagawa-dragonColour
kanagawa-lotusColour
kanagawa-waveColour
# Laserwave
laserwaveColour
# Lunar
lunarColour
# Material
material-darkerColour
material-deep-oceanColour
material-forestColour
material-lighterColour
material-oceanicColour
material-palenightColour
material-sandy-beachColour
material-sky-blueColour
material-spaceColour
material-volcanoColour
# Monokai
monokaiColour
# Night Owl
night-owlColour
# Nord
nordColour
# Ocean Next
ocean-nextColour
# One Dark
one-darkColour
# Plastic
plasticColour
# Poimandres
poimandres-baseColour
poimandres-stormColour
# Rosepine
rosepineColour
rosepine-moonColour
rosepine-dawnColour
# Tokyo Night
tokyo-night-nightColor
tokyo-night-stormColor
tokyo-night-dayColor
# Solorized
solorized-darkColour
solorized-lightColour
# Synthwave 84
synthwave-84Colour
# Vesper
vesperColour
# Wasp
waspColour
];
in {
themes = {
currentTheme = currentTheme;
font = "MonaspiceRn Nerd Font";
schemes = let
ayuPath = /ayu;
catppuccinPath = /catppuccin;
gruvboxPath = /gruvbox;
kanagawaPath = /kanagawa;
materialPath = /material;
poimandresPath = /poimandres;
rosepinePath = /rosepine;
toyko-nightPath = /tokyo-night;
solarizedPath = /solarized;
in {
${ayu-dark} = import (schemePath + ayuPath + /dark);
${ayu-light} = import (schemePath + ayuPath + /light);
${ayu-mirage} = import (schemePath + ayuPath + /mirage);
${catppuccin-frappe} = import (schemePath + catppuccinPath + /frappe);
${catppuccin-latte} = import (schemePath + catppuccinPath + /latte);
${catppuccin-macchiato} = import (schemePath + catppuccinPath + /macchiato);
${catppuccin-mocha} = import (schemePath + catppuccinPath + /mocha);
${cobalt2} = import (schemePath + /cobalt2);
${dracula} = import (schemePath + /dracula);
${gruvbox-dark} = import (schemePath + gruvboxPath + /dark);
${gruvbox-light} = import (schemePath + gruvboxPath + /light);
${houston} = import (schemePath + /houston);
${kanagawa-dragon} = import (schemePath + kanagawaPath + /kanagawa);
${kanagawa-lotus} = import (schemePath + kanagawaPath + /kanagawa);
${kanagawa-wave} = import (schemePath + kanagawaPath + /kanagawa);
${laserwave} = import (schemePath + /laserwave);
${lunar} = import (schemePath + /lunar);
${material-darker} = import (schemePath + materialPath + /darker);
${material-lighter} = import (schemePath + materialPath + /lighter);
${material-oceanic} = import (schemePath + materialPath + /oceanic);
${material-palenight} = import (schemePath + materialPath + /palenight);
${material-deep-ocean} = import (schemePath + materialPath + /deep-ocean);
${material-forest} = import (schemePath + materialPath + /forest);
${material-sky-blue} = import (schemePath + materialPath + /sky-blue);
${material-sandy-beach} = import (schemePath + materialPath + /sandy-beach);
${material-volcano} = import (schemePath + materialPath + /volcano);
${material-space} = import (schemePath + materialPath + /space);
${monokai} = import (schemePath + /monokai);
${night-owl} = import (schemePath + /night-owl);
${nord} = import (schemePath + /nord);
${ocean-next} = import (schemePath + /ocean-next);
${one-dark} = import (schemePath + /one-dark);
${poimandres-base} = import (schemePath + poimandresPath + /base);
${poimandres-storm} = import (schemePath + poimandresPath + /storm);
${rosepine} = import (schemePath + rosepinePath + /base);
${rosepine-dawn} = import (schemePath + rosepinePath + /dawn);
${rosepine-moon} = import (schemePath + rosepinePath + /moon);
${tokyo-night-night} = import (schemePath + toyko-nightPath + /night);
${tokyo-night-storm} = import (schemePath + toyko-nightPath + /storm);
${tokyo-night-day} = import (schemePath + toyko-nightPath + /day);
${solorized-dark} = import (schemePath + solarizedPath + /dark);
${solorized-light} = import (schemePath + solarizedPath + /light);
${synthwave-84} = import (schemePath + /synthwave-84);
${vesper} = import (schemePath + /vesper);
${wasp} = import (schemePath + /wasp);
};
currentColours = import ./map {inherit mapColour;};
};
}