Full replacement of the previous iteration, rebuilt around three ideas:
- Pure evaluation: theme-state.json lives inside the flake and is read
via the nomarchy.stateFile option — no --impure, ever.
- All-Home-Manager theming: `nomarchy-theme-sync apply` writes the JSON
and runs `home-manager switch`; every theme change is one atomic,
rollbackable generation. Wallpaper (swww) is the sole runtime piece.
- Flat, downstream-first layout: modules/{nixos,home} with one
options.nix each, exported as nixosModules/homeModules + overlay +
flake template; system (nixos-rebuild) and desktop (home-manager
switch) rebuild paths are fully split.
Ships 21 themes imported from the previous iteration (palettes,
wallpapers, btop themes, six whole-swap Waybar identities), Stylix for
the GTK/Qt/cursor long tail, a live ISO target with offline theme
switching, and docs/TESTING.md with the QEMU verification workflow.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
42 lines
1.5 KiB
Nix
42 lines
1.5 KiB
Nix
# Ghostty — Nomarchy's default terminal, themed from theme-state.json.
|
|
# Colors, fonts and the full 16-color ANSI palette are baked from the
|
|
# JSON at eval time.
|
|
{ config, lib, ... }:
|
|
|
|
let
|
|
t = config.nomarchy.theme;
|
|
c = t.colors;
|
|
in
|
|
{
|
|
programs.ghostty = lib.mkIf config.nomarchy.ghostty.enable {
|
|
enable = true;
|
|
enableBashIntegration = true;
|
|
|
|
settings = {
|
|
# ── Typography (from theme-state.json) ────────────────────────
|
|
font-family = t.fonts.mono;
|
|
font-size = t.fonts.size;
|
|
|
|
# ── Colors (from theme-state.json) ────────────────────────────
|
|
background = c.base;
|
|
foreground = c.text;
|
|
cursor-color = c.accent;
|
|
selection-background = c.overlay;
|
|
selection-foreground = c.text;
|
|
split-divider-color = c.surface;
|
|
|
|
# "N=#rrggbb" entries; Ghostty accepts repeated `palette` keys,
|
|
# which the HM module renders from this list.
|
|
palette = lib.imap0 (i: color: "${toString i}=${color}") t.ansi;
|
|
|
|
# ── Chrome ────────────────────────────────────────────────────
|
|
background-opacity = t.ui.terminalOpacity;
|
|
window-padding-x = 12;
|
|
window-padding-y = 12;
|
|
window-decoration = false;
|
|
gtk-single-instance = true;
|
|
confirm-close-surface = false;
|
|
};
|
|
};
|
|
}
|