nixos/modules/base/theme.nix

62 lines
2.3 KiB
Nix
Raw Permalink Normal View History

2026-01-21 00:07:34 +01:00
# Centralized theme configuration (Flexoki-inspired)
# See: https://stephango.com/flexoki
{lib, ...}: {
options.fireproof.theme = let
mkColorOption = default: description:
lib.mkOption {
type = lib.types.str;
inherit default description;
example = default;
};
in {
colors = {
# Background colors
bg = mkColorOption "1C1B1A" "Primary background color";
bgAlt = mkColorOption "282726" "Alternative background color";
# Foreground colors
fg = mkColorOption "DAD8CE" "Primary foreground/text color";
fgAlt = mkColorOption "B7B5AC" "Alternative foreground color";
# UI colors
muted = mkColorOption "878580" "Muted/disabled text color";
ui = mkColorOption "343331" "UI element background";
uiAlt = mkColorOption "403E3C" "Alternative UI element background";
# Base colors
black = mkColorOption "100F0F" "Black (darkest)";
white = mkColorOption "DAD8CE" "White (same as fg)";
whiteAlt = mkColorOption "F2F0E5" "Bright white";
# Accent color
accent = mkColorOption "CF6A4C" "Primary accent color";
# Semantic colors
red = mkColorOption "D14D41" "Red (errors, destructive)";
redAlt = mkColorOption "AF3029" "Dark red";
orange = mkColorOption "DA702C" "Orange (warnings)";
orangeAlt = mkColorOption "BC5215" "Dark orange";
yellow = mkColorOption "D0A215" "Yellow (caution)";
yellowAlt = mkColorOption "AD8301" "Dark yellow";
green = mkColorOption "879A39" "Green (success)";
greenAlt = mkColorOption "66800B" "Dark green";
cyan = mkColorOption "3AA99F" "Cyan";
cyanAlt = mkColorOption "24837B" "Dark cyan";
blue = mkColorOption "4385BE" "Blue (info, links)";
blueAlt = mkColorOption "205EA6" "Dark blue";
purple = mkColorOption "8B7EC8" "Purple";
purpleAlt = mkColorOption "5E409D" "Dark purple";
magenta = mkColorOption "CE5D97" "Magenta";
magentaAlt = mkColorOption "A02F6F" "Dark magenta";
};
# HSL variants for tools that need them (like Glance)
hsl = {
bg = mkColorOption "30 4 11" "Background in HSL";
accent = mkColorOption "14 56 55" "Accent in HSL";
green = mkColorOption "72 59 38" "Green in HSL";
red = mkColorOption "5 64 54" "Red in HSL";
};
};
}