Some checks failed
Check / eval (push) Has been cancelled
Ghostty's OpenGL 4.3 floor broke the Acer (HD 4000 / 4.2). Dual-terminal support (default Ghostty + install-time Kitty fallback) was more complexity than it was worth. - Remove ghostty.nix / nomarchy.ghostty.enable - Kitty always installed and themed from theme-state - Default nomarchy.terminal = kitty; SUPER+Return, doctor, calendar, what-changed use kitty --class=com.nomarchy.* - Drop install-time glxinfo probe and mesa-demos on the installer - Docs/REQUIREMENTS no longer list OpenGL 4.3 as a terminal floor Verified: V0 flake check; option-docs; installer-safety; template HM has kitty, no ghostty; menu/calendar emit classed kitty launches.
61 lines
3.3 KiB
Markdown
61 lines
3.3 KiB
Markdown
# Goals — what "done" looks like for Nomarchy
|
||
|
||
The north star every loop iteration serves. When two options conflict,
|
||
the earlier pillar wins. Product *themes* toward a **v1.0** ship (day-2
|
||
confidence, default identity, release bar) live in
|
||
[`docs/VISION.md`](../docs/VISION.md) — still subordinate to these pillars.
|
||
|
||
## The four pillars (in priority order)
|
||
|
||
1. **Rock-stable.** A workstation you never fight. Everything is a NixOS/HM
|
||
generation — atomic, rollbackable, never partial. `nix flake check` is
|
||
green at every commit on `main`. Regressions are caught by the VM-test
|
||
suite (`checks.*`), not by users. `v1` only ever advances after human
|
||
on-hardware QA.
|
||
2. **Reproducible, with zero hidden state.** The downstream flake checkout
|
||
*is* the machine. All user-settable config is menu-writable into the
|
||
git-tracked state file (`theme-state.json` `settings.*`) — never
|
||
`~/.local/state`, never `~/.config` side files. Re-cloning your flake
|
||
reproduces the machine, settings and all.
|
||
3. **Effortless to configure.** The user never has to learn Nix. Every
|
||
common knob is reachable from `nomarchy-menu` (SUPER+M); the menu is an
|
||
ergonomic writer for the flake. Where a toggle can take effect without a
|
||
rebuild, it must (`--no-switch` + flip the running service).
|
||
4. **Beautiful.** One JSON themes the entire desktop coherently — Hyprland,
|
||
Waybar, Kitty, btop, rofi, GTK/Qt, boot splash, greeter. Every new
|
||
surface follows the palette. Informative, self-gating Waybar modules
|
||
(they hide when irrelevant). No unthemed corner survives contact with
|
||
the theme switcher.
|
||
|
||
## Quality bars (non-negotiable)
|
||
|
||
- **The honesty rule** (docs/TESTING.md): for anything visual, "the Nix
|
||
evaluates" is not "it renders". Verify at the highest tier you can reach
|
||
(see LOOP.md's verification ladder) and *state the tier you reached*.
|
||
Never claim a check you didn't run.
|
||
- **Parity rule:** any module added to the generated Waybar config must
|
||
also be added to the summer-day/night `waybar.jsonc` whole-swaps.
|
||
- **Menu placement:** new menu entries go in the right category submenu
|
||
(Tools › / System ›), with a direct `SUPER+CTRL+<mnemonic>` bind and
|
||
self-gating where applicable. The root picker stays six entries.
|
||
- **Opt-in features** ship a commented example in
|
||
`templates/downstream/{home,system}.nix`.
|
||
- **Option surface discipline:** a toggle exists only when there is real
|
||
config behind it. Bare package installs go in the template's
|
||
`home.packages` (opt-out = delete the line), never a `nomarchy.apps.*`.
|
||
|
||
## Non-goals (do not drift into these)
|
||
|
||
- **No binary cache.** Compile-from-source is a deliberate values call;
|
||
automation targets the config/lock channel, not artifact distribution.
|
||
- **No second theming pipeline.** The dispatcher owns menu structure; the
|
||
renderer (rofi) stays swappable. No GTK4 launcher.
|
||
- **No nixpkgs major bump on `main`.** Lock updates stay within the pinned
|
||
release branch; a release jump is a deliberate `v2`, hand-edited by the
|
||
maintainer (the last attempt was discarded over a Hyprland OOM — see
|
||
agent/MEMORY.md).
|
||
- **No repo-wide reformat.** The `.nix` files use deliberate aligned
|
||
hand-formatting; adopting a formatter is an open maintainer decision
|
||
(BACKLOG.md § Decisions), not a cleanup.
|
||
- **No multi-DE.** Hyprland is the desktop.
|