All checks were successful
Check / eval (push) Successful in 2m54s
Item 42, de-scoped by Bernardo to app-only — no account sync (the user configures that themselves locally). Clicking the Waybar date/clock now runs nomarchy-calendar → calcurse in a floating, centered ghostty window tagged --class=com.nomarchy.calendar (+ --gtk-single-instance=false for a fresh standalone window), matched by a float+size+center windowrule. The launcher self-gates on calcurse. Dropped the clock's format-alt date toggle (conflicts with on-click) and moved the long date into the tooltip. Parity: on-click added to all four whole-swap jsoncs. Ships calcurse + pwvucontrol uncommented in the downstream template (opt-out). Enforces ghostty always installed (ghostty.nix: enable = true unconditional; nomarchy.ghostty.enable now gates only the theming/config) so the --class launcher can rely on it. Verified: V0 green; four jsoncs valid JSON; V1 HM built — launcher ships, generated clock renders on-click=nomarchy-calendar (format-alt gone, date in tooltip), hyprland has the 3 calendar windowrules, ghostty in the HM profile. Click→float→calcurse month view is V3 (queued). Sync is deliberately the user's own config, not a distro feature. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
49 lines
2.0 KiB
Nix
49 lines
2.0 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
|
|
{
|
|
# Ghostty is ALWAYS installed — it's Nomarchy's default terminal and is
|
|
# load-bearing (SUPER+E file manager, the calendar launcher's classed
|
|
# window, etc.), so the distro enforces it. `nomarchy.ghostty.enable` now
|
|
# gates only whether Nomarchy's theming/config is applied — a user can
|
|
# keep ghostty but drop our config, they just can't remove ghostty itself.
|
|
programs.ghostty = {
|
|
enable = true;
|
|
enableBashIntegration = true;
|
|
|
|
settings = lib.mkIf config.nomarchy.ghostty.enable {
|
|
# ── 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 is theme-driven (normal priority — use the
|
|
# CLI); the rest are mkDefault so a plain home.nix value wins.
|
|
background-opacity = t.ui.terminalOpacity;
|
|
window-padding-x = lib.mkDefault 12;
|
|
window-padding-y = lib.mkDefault 12;
|
|
window-decoration = lib.mkDefault false;
|
|
gtk-single-instance = lib.mkDefault true;
|
|
confirm-close-surface = lib.mkDefault false;
|
|
};
|
|
};
|
|
}
|