Theme Options
cells/options/theme.nix defines my.theme, the shared palette and visual identity object used by desktop leaves.
Up: options
Down: theme | theme selection | theme application
What this node does
The theme schema includes a slug, light or dark variant, named colors, accent, border color, GTK theme, icon theme, cursor, Qt/Kvantum settings, terminal color scheme, Starship palette, Waybar variation, fonts, and Cava gradient colors.
options.my.theme = mkOption {
type = types.submodule {
options = {
slug = mkOption { type = types.str; };
variant = mkOption { type = types.enum [ "dark" "light" ]; };
accent = mkOption { type = types.str; };
font.sans = mkOption { type = types.str; };
font.mono = mkOption { type = types.str; };
};
};
};Why it exists
Desktop configuration often drifts because every application has its own theme file. This schema creates one typed source of truth.
Leaves such as Hyprland, GTK, Kvantum, Waybar, Starship, Cava, and terminal configuration can consume the same selected theme instead of hard-coding colors independently.
What to copy
Keep theme data declarative and application-neutral. Then write application leaves that translate my.theme into concrete config files.