From 6d1afa41ed35de82287bc372cc46b0ede7c1d471 Mon Sep 17 00:00:00 2001 From: alexion Date: Wed, 22 Jul 2026 11:38:34 -0400 Subject: [PATCH] feat(desktop): let Stylix manage tmux and fish theming (task 0022) Narrow the terminal tools excluded from Stylix to nvim alone. nvim keeps its dedicated gbprod/nord.nvim colorscheme, which is richer than the base16 mapping Stylix would apply. tmux and fish are now Stylix-managed. Drop the hand-written Nord colours from the tmux status bar so Stylix themes the status and pane styles, keeping the minimal layout (session name plus window list) reapplied after Stylix so it still wins. --- .claude/tasks/0022-stylix-nord-theming.md | 11 +++++++---- modules/desktop/theming.nix | 14 +++----------- modules/tmux/extra.conf | 11 ++--------- 3 files changed, 12 insertions(+), 24 deletions(-) diff --git a/.claude/tasks/0022-stylix-nord-theming.md b/.claude/tasks/0022-stylix-nord-theming.md index 21694d3..c3ee558 100644 --- a/.claude/tasks/0022-stylix-nord-theming.md +++ b/.claude/tasks/0022-stylix-nord-theming.md @@ -16,7 +16,7 @@ The theming is reversible per target, so individual surfaces can migrate toward - [x] Stylix is a flake input, wired into the host build. - [x] A desktop theming module resolves a single Nord base16 scheme and applies it to GTK, Qt, cursor, and system fonts. - [x] A single static Nord wallpaper is set by Stylix; no dynamic, animated, or cycling wallpaper. -- [x] Stylix targets for nvim, tmux, and fish are off, leaving their existing themes untouched. +- [x] The Stylix target for nvim is off, leaving its existing theme untouched (narrowed from nvim + tmux + fish during review, see notes). - [x] neogaia builds green under `nix flake check`, and an eval probe confirms the resolved scheme is Nord. ## Implementation Notes @@ -31,9 +31,12 @@ The theming is reversible per target, so individual surfaces can migrate toward nvim here is configured through nixvim, so the Stylix target that would theme it is `nixvim`. Disabling `neovim` would have been a no-op and left nvim themed. -- **fish is disabled at two levels.** - fish is enabled both at system level (`programs.fish`, for `/etc/shells` and vendor completions) and in home-manager, so its theming has a target in each scope. - Both are turned off, so the hand-written fish theme stands. +- **Only nvim is excluded from Stylix (narrowed during review).** + The task first turned the nvim, tmux, and fish targets all off. + In review the operator narrowed that to nvim alone, so tmux and fish are now Stylix-managed. + nvim stays off because its `gbprod/nord.nvim` colorscheme is a purpose-built, treesitter-aware theme, richer than the generic base16 mapping Stylix's neovim target would apply. + fish had no colour theme of its own, so handing it to Stylix is a clean addition. + tmux carried a hand-written Nord status bar, so its colour lines are removed from `extra.conf` and Stylix now themes the status and pane styles, while the operator's minimal layout (session name plus window list, empty right side) is kept and reapplied after Stylix so it still wins. - **Cursor generation switched on explicitly.** home-manager now wants `home.pointerCursor.enable` set explicitly rather than inferring it from the presence of cursor settings, so the module sets it to silence the deprecation and keep the build warning-clean (bar the pre-existing benign nixvim `nixpkgs.follows` notice). diff --git a/modules/desktop/theming.nix b/modules/desktop/theming.nix index 24e1d34..f7fa96b 100644 --- a/modules/desktop/theming.nix +++ b/modules/desktop/theming.nix @@ -42,10 +42,6 @@ in package = pkgs.jetbrains-mono; name = "JetBrains Mono"; }; - - # fish is also installed at system level, so its theming has a target - # here of its own. - targets.fish.enable = false; }; home-manager.users.${user} = { @@ -53,13 +49,9 @@ in # whose generation must be switched on explicitly. home.pointerCursor.enable = true; - # 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; - tmux.enable = false; - nixvim.enable = false; - }; + # nvim keeps its dedicated Nord colorscheme, which is richer than the + # base16 mapping Stylix would apply, so its target stays off. + stylix.targets.nixvim.enable = false; }; }; } diff --git a/modules/tmux/extra.conf b/modules/tmux/extra.conf index 11bf371..a2efb6b 100644 --- a/modules/tmux/extra.conf +++ b/modules/tmux/extra.conf @@ -32,18 +32,11 @@ set -ag terminal-overrides ",*:RGB" setw -g monitor-bell on set -g bell-action none -# Minimal status bar (session name + window list only), styled with Nord -# colours. +# Minimal status bar: session name plus window list only. +# Colours are left to Stylix, which themes the status and pane styles. set -g status-position bottom -set -g status-style "bg=#2E3440,fg=#D8DEE9" set -g status-left " #S " set -g status-left-length 20 set -g status-right "" -setw -g window-status-current-style "bg=#88C0D0,fg=#2E3440,bold" setw -g window-status-current-format " #I:#W " setw -g window-status-format " #I:#W " -setw -g window-status-style "fg=#4C566A" -setw -g window-status-bell-style "bg=#BF616A,fg=#2E3440,bold" - -set -g pane-border-style "fg=#3B4252" -set -g pane-active-border-style "fg=#88C0D0"