home: centralize theme and make home-manager feature-aware

- add home/theme.nix as the single Silicon Volt palette and pass it to
  home modules via extraSpecialArgs
- drive foot, hyprland, hyprlock, mako, fzf, starship, rofi and the
  herdr picker from that palette; raw config files use @color@ tokens
  substituted at build time
- pass my = config.my into home-manager; add my.pi.enable, my.flakeDir
- gate home/pi.nix on my.pi.enable (enabled on hades)
- route zshconf/hyprconf aliases and FLAKE_CONFIG through my.flakeDir
- rename the hyprland monitor option volt.monitors -> hypr.monitors
- fix use_auto_tmux command-substitution bug in zsh/init.zsh
- track home/nvim/config/lazy-lock.json for reproducible plugins
- document theming and toggles in the README
This commit is contained in:
2026-09-19 00:48:19 -07:00
parent fb743d7353
commit 8010cea0bc
18 changed files with 287 additions and 100 deletions

View File

@@ -1,4 +1,10 @@
{ pkgs, inputs, ... }:
{
pkgs,
lib,
inputs,
theme,
...
}:
let
herdrPkg =
@@ -13,7 +19,35 @@ let
else
(pkgs.herdr or null);
herdrPicker = pkgs.writeShellScriptBin "herdr-picker" (builtins.readFile ./scripts/herdr-picker.sh);
# Inject the shared palette into the picker script (see home/theme.nix).
herdrPicker = pkgs.writeShellScriptBin "herdr-picker" (
lib.replaceStrings
[
"@bg@"
"@glass@"
"@fg@"
"@fgBright@"
"@muted@"
"@volt@"
"@voltLight@"
"@coral@"
"@blue@"
"@surface@"
]
[
theme.colors.bgPrimary
theme.colors.glassBg
theme.colors.textSecondary
theme.colors.textPrimary
theme.colors.textMuted
theme.colors.accentVolt
theme.colors.accentVoltLight
theme.colors.accentCoral
theme.colors.accentBlue
theme.colors.surfaceVariant
]
(builtins.readFile ./scripts/herdr-picker.sh)
);
in
{
home.packages = (if herdrPkg != null then [ herdrPkg ] else [ ]) ++ [
@@ -47,41 +81,38 @@ in
hide-when-typing = "yes";
};
# Silicon Volt palette, sourced from home/theme.nix.
colors-dark = {
# Silicon Volt palette (matches home/hypr theme + mako):
# bgPrimary #131313, bgSecondary #0e0e0e, glassBg #1c1b1b,
# textPrimary #ffffff, textSecondary #e5e2e1, textMuted #adaaaa,
# accents: volt #cffc00, coral #ff7a59, blue #00bfff
alpha = 0.92;
background = "131313";
foreground = "e5e2e1";
background = theme.bare.bgPrimary;
foreground = theme.bare.textSecondary;
# Cursor text and cursor (background) colors
cursor = "0e0e0e cffc00";
cursor = "${theme.bare.bgSecondary} ${theme.bare.accentVolt}";
regular0 = "0e0e0e"; # bgSecondary
regular1 = "ff7a59"; # accentCoral
regular2 = "cffc00"; # accentVolt (green)
regular3 = "e3ff66"; # accentVoltLight (yellow)
regular4 = "00bfff"; # accentBlue
regular5 = "c6c6c7"; # Neutral Gray (magenta)
regular6 = "66d9ff"; # Light Cyan
regular7 = "e5e2e1"; # textSecondary
regular0 = theme.bare.bgSecondary;
regular1 = theme.bare.accentCoral;
regular2 = theme.bare.accentVolt;
regular3 = theme.bare.accentVoltLight;
regular4 = theme.bare.accentBlue;
regular5 = theme.bare.neutralGray;
regular6 = theme.bare.lightCyan;
regular7 = theme.bare.textSecondary;
# Bright Colors
bright0 = "2a2929"; # surfaceVariant
bright1 = "ff9a82"; # Bright Coral
bright2 = "dfff66"; # Bright Lime
bright3 = "f0ff8c"; # Bright Volt
bright4 = "66d9ff"; # Bright Blue
bright5 = "e0e0e1"; # Bright Gray
bright6 = "99e6ff"; # Bright Cyan
bright7 = "ffffff"; # textPrimary
bright0 = theme.bare.surfaceVariant;
bright1 = theme.bare.brightCoral;
bright2 = theme.bare.brightLime;
bright3 = theme.bare.brightVolt;
bright4 = theme.bare.lightCyan;
bright5 = theme.bare.brightGray;
bright6 = theme.bare.brightCyan;
bright7 = theme.bare.textPrimary;
# Selection & URLs - volt lime selection like the site
selection-foreground = "0e0e0e";
selection-background = "cffc00";
urls = "00bfff";
selection-foreground = theme.bare.bgSecondary;
selection-background = theme.bare.accentVolt;
urls = theme.bare.accentBlue;
};
};
};