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,7 +1,7 @@
{
pkgs,
lib,
config,
theme,
...
}:
@@ -58,9 +58,9 @@ in
enable = true;
settings = {
background-color = "#1c1b1bee";
text-color = "#e5e2e1";
border-color = "#cffc00";
background-color = "${theme.colors.glassBg}ee";
text-color = theme.colors.textSecondary;
border-color = theme.colors.accentVolt;
border-size = 1;
border-radius = 0;
width = 420;
@@ -73,13 +73,13 @@ in
max-icon-size = 48;
"urgency=critical" = {
border-color = "#ff7a59";
text-color = "#ffffff";
border-color = theme.colors.accentCoral;
text-color = theme.colors.textPrimary;
default-timeout = 0;
};
"urgency=low" = {
border-color = "#2a2929";
text-color = "#adaaaa";
border-color = theme.colors.surfaceVariant;
text-color = theme.colors.textMuted;
};
};
};

View File

@@ -1,6 +1,7 @@
{
lib,
config,
theme,
...
}:
@@ -12,11 +13,11 @@ in
# Per-host monitor configuration.
#
# Hosts declare their displays once, in hosts/<host>/default.nix, via:
# home-manager.users.<my.username>.volt.monitors = [ { ... } ];
# home-manager.users.<my.username>.hypr.monitors = [ { ... } ];
# and the setting flows into Hyprland here. The default (empty output +
# preferred mode) works on any machine with any display.
# -------------------------------------------------------------------------
options.volt.monitors = lib.mkOption {
options.hypr.monitors = lib.mkOption {
description = "Hyprland monitor rules for this host";
type = lib.types.listOf (
lib.types.submodule {
@@ -69,7 +70,7 @@ in
;
}
// (lib.optionalAttrs (m.vrr != null) { inherit (m) vrr; })
) config.volt.monitors;
) config.hypr.monitors;
wayland.windowManager.hyprland = {
enable = true;
@@ -91,7 +92,7 @@ in
};
# -----------------------------------------------------------------------
# 2. Monitors (hl.monitor) - declared per-host via volt.monitors
# 2. Monitors (hl.monitor) - declared per-host via hypr.monitors
# (see hosts/<host>/default.nix); defaults to any display @ preferred.
# -----------------------------------------------------------------------
@@ -143,12 +144,12 @@ in
# Silicon Volt: electric lime gradient on focus, glass gray at rest
active_border = {
colors = [
"rgba(cffc00ee)"
"rgba(e3ff66ee)"
"rgba(${theme.bare.accentVolt}ee)"
"rgba(${theme.bare.accentVoltLight}ee)"
];
angle = 45;
};
inactive_border = "rgba(ffffff14)";
inactive_border = "rgba(${theme.bare.textPrimary}14)";
};
layout = "dwindle";
};
@@ -158,20 +159,20 @@ in
font_size = 14;
font_family = "JetBrainsMono Nerd Font";
col = {
active = "rgba(cffc0022)";
inactive = "rgba(ffffff08)";
active = "rgba(${theme.bare.accentVolt}22)";
inactive = "rgba(${theme.bare.textPrimary}08)";
};
};
col = {
border_active = {
colors = [
"rgba(cffc00ee)"
"rgba(e3ff66ee)"
"rgba(${theme.bare.accentVolt}ee)"
"rgba(${theme.bare.accentVoltLight}ee)"
];
angle = 45;
};
border_inactive = "rgba(ffffff14)";
border_inactive = "rgba(${theme.bare.textPrimary}14)";
};
};

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }:
{ theme, ... }:
{
programs.hyprlock = {
@@ -32,7 +32,7 @@
{
monitor = "";
text = "$TIME";
color = "rgba(ffffffdd)";
color = "rgba(${theme.bare.textPrimary}dd)";
font_size = 90;
font_family = "JetBrainsMono Nerd Font";
position = "0, 220";
@@ -43,7 +43,7 @@
{
monitor = "";
text = "cmd[update:1000] echo \" $(date +'%A, %B %d') \"";
color = "rgba(adaaaaff)";
color = "rgba(${theme.bare.textMuted}ff)";
font_size = 20;
font_family = "JetBrainsMono Nerd Font";
position = "0, 120";
@@ -54,7 +54,7 @@
{
monitor = "";
text = "NIXOS // SILICON VOLT";
color = "rgba(cffc00ee)";
color = "rgba(${theme.bare.accentVolt}ee)";
font_size = 14;
font_family = "JetBrainsMono Nerd Font";
position = "0, 60";
@@ -65,7 +65,7 @@
{
monitor = "";
text = "cmd[update:3600000] echo \" $USER @ $(hostname) \"";
color = "rgba(adaaaa99)";
color = "rgba(${theme.bare.textMuted}99)";
font_size = 13;
font_family = "JetBrainsMono Nerd Font";
position = "0, -160";
@@ -84,11 +84,11 @@
dots_spacing = 0.2;
dots_center = true;
# Volt lime outline, dark glass interior
outer_color = "rgba(cffc00ee)";
inner_color = "rgba(1c1b1b, 0.9)";
check_color = "rgba(e3ff66ee)";
fail_color = "rgba(ff7a59ee)";
font_color = "rgba(e5e2e1ff)";
outer_color = "rgba(${theme.bare.accentVolt}ee)";
inner_color = "rgba(${theme.bare.glassBg}, 0.9)";
check_color = "rgba(${theme.bare.accentVoltLight}ee)";
fail_color = "rgba(${theme.bare.accentCoral}ee)";
font_color = "rgba(${theme.bare.textSecondary}ff)";
fail_text = "$FAIL (<b>attempts: $ATTEMPTS</b>)";
fade_on_empty = false;
placeholder_text = "<i> Enter Password...</i>";