feat(desktop): theme the graphical layer Nord with Stylix (task 0022) #14
Reference in New Issue
Block a user
Delete Branch "task-0022-stylix-nord-theming"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Task:
.claude/tasks/0022-stylix-nord-theming.mdSummary
Themes the whole new graphical layer Nord from a single source.
lib.nix(inert until enabled).modules/desktop/theming.nix, guarded bymodules.desktop.theming.enableand turned on by the desktop aggregator, which resolves a single Nord base16 scheme and applies it to GTK, Qt, cursor, and the system monospace font.nix flake checkis green for neogaia, and an eval probe confirmsconfig.lib.stylix.colors.schemeresolves toNord.Deviations from the plan
image; rather than commit a binary or fetch one at build time, the module draws a vertical gradient across the Nord Polar Night shades (#2E3440→#3B4252) with ImageMagick. Static, genuinely Nord, fully reproducible. Swapping in a picture later is a one-line change.nixvim, notneovim, since nvim is configured through nixvim here; disablingneovimwould have left it themed.programs.fishand home-manager), matching where it is enabled.Review
Risk
Overall: Medium
lib.niximports the Stylix module into every host's module set, anddesktop.nixflips theming on bymkDefaultfor any desktop host.nix flake check, but rendering relies on manual live-session checking.Unaddressed findings
Standards
theming.nixwallpaper comment — a judgement call that the "no committed binary and no network fetch" note borders on justifying the choice against alternatives. Kept: it states a real present consequence of the generated-gradient approach, which the reviewer agreed is defensible.Spec
fonts.monospacepinned to JetBrains Mono, where the criterion asked only for "system fonts". Minor, reasonable default.— Claude
@@ -0,0 +56,4 @@# nvim, tmux, and fish are configured through home-manager and keep their# own hand-written themes, so their Stylix targets stay off.stylix.targets = {fish.enable = false;What's the point of Stylix if I still need hand written themes...?
@@ -0,0 +56,4 @@# nvim, tmux, and fish are configured through home-manager and keep their# own hand-written themes, so their Stylix targets stay off.stylix.targets = {fish.enable = false;Fair challenge. Stylix's payoff here isn't the terminal — it's everything that had no theme: GTK apps, Qt apps, the cursor, and the bar / launcher / lock / notifications still to come. That's roughly a dozen surfaces driven from one scheme so they can't drift apart. The terminal is the one place we already had curated Nord, so it's the one place Stylix adds least.
Per tool:
gbprod/nord.nvim, a purpose-built colorscheme with treesitter-aware highlights. Stylix's neovim target would swap that for a generic 16-colour base16 mapping — a downgrade, not a win.#2E3440/#88C0D0/ …), already exactly as wanted.And it's reversible per target — each is a one-line
enable = true— so nothing is locked in. If you want to shrink the hand-theme surface, tmux and fish are the safe ones to hand to Stylix; I'd keep nvim hand-themed, since the dedicated colorscheme beats the base16 mapping. Say the word and I'll flip whichever you want.— Claude
Only nvim shouldn't be managed by stylix
Done in
6d1afa4. Onlynixvimstays off now; tmux and fish are Stylix-managed.fish had no colour theme of its own, so that was a clean flip. tmux did — a hand-written Nord status bar in
extra.conf— which would have fought Stylix, so I removed those colour lines and let Stylix theme the status and pane styles. I kept your minimal layout (session name + window list, empty right side) and it's reapplied after Stylix's theme, so the layout still wins while the colours come from the one scheme.Verified on the rendered
tmux.conf: Stylix sourcesbase16-nord.confbefore your layout block, its unconditional colour lines apply, and its optional verbose statusbar stays gated off — so no clobbering.nix flake checkis green.— Claude