feat(template): ship Chromium by default; record product decisions
All checks were successful
Check / eval (push) Successful in 2m49s

- home.packages: chromium active; mime → chromium-browser.desktop
- Decisions: markdown docs stay in-repo; PPD default confirmed
- Formatter + zram still open (explained in session, not closed)

V0: flake check --no-build green.
This commit is contained in:
2026-07-10 14:37:52 +01:00
parent b37a50c779
commit ac3b75b018
5 changed files with 32 additions and 55 deletions

View File

@@ -115,51 +115,30 @@ _(Identity taste retunes + hand `btop.theme` for white/vantablack/lumon/
### v1.0 pointer ### v1.0 pointer
See **VISION**. Open PROPOSED: NVIDIA wrappers deferred past v1; IR See **VISION**. Open PROPOSED: NVIDIA wrappers deferred past v1; IR
portal (b)/(c) hardware. portal (b)/(c) hardware. Browser default = Chromium; power = PPD.
## Decisions `[human]` ## Decisions `[human]`
Open calls only Bernardo can make; agents add options/evidence but never Open calls only Bernardo can make; agents add options/evidence but never
decide. decide. **Resolved** entries stay for history; agents treat them as closed.
### Resolved (2026-07-10)
- **Docs site vs Markdown-in-repo** — **markdown in-repo for now**
(`docs/`, README). A rendered docs site is FUTURE if wanted.
- **Default browser** — **ship Chromium** in
`templates/downstream/home.nix`; mime → `chromium-browser.desktop`.
Opt out: delete the line / override mime.
- **Default power backend** — **keep PPD** (`nomarchy.system.power.backend`
default). TLP remains the one-line opt-in. Rationale: stability + live
profile API for menu/Waybar; Omarchys TLP experiment reverted.
### Still open
- **Formatter adoption:** repo deliberately has none; `nixfmt-rfc-style` - **Formatter adoption:** repo deliberately has none; `nixfmt-rfc-style`
would flatten the aligned hand-formatting of ~33 files. Adopt or would flatten the aligned hand-formatting of ~33 files. Adopt or
declare never? declare never? (See reply in session: Nix-source style only, not runtime.)
- **Docs site vs Markdown-in-repo** (from the docs-review item). - **zram swap:** faster under pressure, but interacts with the
hibernation-swapfile story (resume device/priority). Adopt,
- **zram swap:** faster under pressure and pairs with NOW#3, but it adopt-with-hibernation-guard, or skip?
interacts with the hibernation-swapfile story (resume device/priority
ordering) — adopt, adopt-with-hibernation-guard, or skip?
- **Default browser:** the template comments Firefox out. The shipped
mime defaults (item 8, done) point `text/html`/http(s) at
`firefox.desktop` as *inert* entries — they activate the moment
Firefox is installed and are skipped otherwise, so the remaining call
is only: ship a browser active in the suite, or stay
browserless-by-default?
- **Default power backend — PPD vs TLP:** (raised by Bernardo 2026-07-08:
would TLP be more power-efficient, and should it be the default?)
TLP does get more *idle* battery life, but only from device-level knobs
PPD deliberately omits — PCIe ASPM, disk/NVMe link PM, USB autosuspend,
runtime PM — which are the same knobs behind NVMe/USB flakiness that
pillar 1 (rock-stable, never fight your machine) guards against.
**Evidence (2026-07-08):** no credible hard-watt benchmarks exist — TLP's
own maintainer declines to quote any ("measure on your hardware") and says
PPD's power-saver gives *similar* savings under load; TLP's edge is
idle-only (linrunner.de/tlp/faq/ppd.html — PPD covers a *subset* of TLP,
"no settings to reduce consumption when the CPU is idle"). Our sibling
distro **Omarchy** ran this exact experiment — a "replace Power Profiles
with TLP for battery" guide — and the author **reverted to PPD** ("more
headaches and weird issues"); Omarchy shipped PPD auto-switching instead
(basecamp/omarchy#3907). PPD 3.4.0 now does AC/battery auto-switching,
closing part of TLP's UX gap. **Cost of TLP-default:** TLP has no live
D-Bus profile API, so the `powermgmt` menu + Waybar profile indicator +
low-battery auto power-saver (all `powerprofilesctl`) would need a rework —
it's not a one-line backend swap. **Agent rec (evidence, not a decision):
keep PPD default;** chase battery via targeted low-risk tweaks (PCIe ASPM
policy, battery-side EPP, the charge *start* threshold, PPD auto-switching)
and keep TLP the documented one-line opt-in it already is
(`nomarchy.system.power.backend = "tlp"`). Options: (i) status quo +
targeted tweaks [rec]; (ii) TLP default (reworks the profile UX);
(iii) nothing.

View File

@@ -143,12 +143,10 @@ that run; leftover open items still need a pass.*
snapshot flow, "boot an older generation (how)" fires an snapshot flow, "boot an older generation (how)" fires an
instruction notification. instruction notification.
- [ ] **Open-a-file smoke (viewers + mime defaults, item 8)** — after - [ ] **Open-a-file smoke (viewers + mime defaults, item 8)** — after
`home-update`: from yazi/Thunar, open a PDF (→ zathura, themed to `nomarchy-home`: from yazi/Thunar, open a PDF (→ zathura, themed to
the palette), an image (→ imv, NOT GIMP), a video (→ mpv); the palette), an image (→ imv, NOT GIMP), a video (→ mpv);
`xdg-open .` on a directory → Thunar. With no browser installed, `xdg-open .` on a directory → Thunar; a link → **Chromium**
clicking a link must still fall through to *something sane* (the (`chromium-browser.desktop` — template default as of 2026-07-10).
firefox.desktop entries are inert); if you've uncommented a
browser, links go there.
- [ ] **Update awareness** — with `nomarchy.updates.enable`, let the timer - [ ] **Update awareness** — with `nomarchy.updates.enable`, let the timer
fire (or start the unit): indicator appears only when inputs are fire (or start the unit): indicator appears only when inputs are
behind, notification only on count growth, click opens the upgrade behind, notification only on count growth, click opens the upgrade

View File

@@ -287,7 +287,8 @@ Design/decision records and a running log of shipped work (items marked
`libreoffice-fresh`, `vscode`, `gimp`, `inkscape` — ships *active* in the `libreoffice-fresh`, `vscode`, `gimp`, `inkscape` — ships *active* in the
downstream `templates/downstream/home.nix` `home.packages`, with the heavier downstream `templates/downstream/home.nix` `home.packages`, with the heavier
opt-ins (`texliveFull` — multi-GB; `texliveMedium` is lighter — plus opt-ins (`texliveFull` — multi-GB; `texliveMedium` is lighter — plus
browser/email) commented just below. **Decision: no `nomarchy.apps.*` option browser/email) commented just below **Chromium is active by default**
(2026-07-10); other browsers stay commented. **Decision: no `nomarchy.apps.*` option
surface.** Unlike `nomarchy.services.*` (real config behind each toggle — surface.** Unlike `nomarchy.services.*` (real config behind each toggle —
systemd units, subuid ranges, the Flathub oneshot), a bare package install systemd units, subuid ranges, the Flathub oneshot), a bare package install
has nothing behind the toggle: `mkIf x { environment.systemPackages = [p]; }` has nothing behind the toggle: `mkIf x { environment.systemPackages = [p]; }`

View File

@@ -50,13 +50,12 @@ lib.mkIf config.nomarchy.mime.enable {
# The system-side Thunar (nomarchy.system.fileManager). # The system-side Thunar (nomarchy.system.fileManager).
"inode/directory" = "thunar.desktop"; "inode/directory" = "thunar.desktop";
# The template ships no browser by default (open Decision) — these # Template ships chromium (chromium-browser.desktop). Entry is
# are inert until one is installed; firefox is the template's first # skipped by GIO if the package is deleted; install another browser
# suggestion. A different browser registers its own handler and # and/or override these keys to retarget.
# wins once these entries stay dead. "text/html" = "chromium-browser.desktop";
"text/html" = "firefox.desktop"; "x-scheme-handler/http" = "chromium-browser.desktop";
"x-scheme-handler/http" = "firefox.desktop"; "x-scheme-handler/https" = "chromium-browser.desktop";
"x-scheme-handler/https" = "firefox.desktop";
}; };
}; };
} }

View File

@@ -81,6 +81,7 @@
home.packages = with pkgs; [ home.packages = with pkgs; [
libreoffice-fresh # office suite (documents, sheets, slides) libreoffice-fresh # office suite (documents, sheets, slides)
vscode # code editor (unfree; allowUnfree is on) vscode # code editor (unfree; allowUnfree is on)
chromium # web browser (mime defaults → chromium-browser.desktop)
gimp # raster image editor gimp # raster image editor
inkscape # vector graphics inkscape # vector graphics
mpv # media player mpv # media player
@@ -88,9 +89,8 @@
# pwvucontrol + calcurse ship with the Waybar module (volume right-click / clock) # pwvucontrol + calcurse ship with the Waybar module (volume right-click / clock)
# ── More apps — uncomment to add ───────────────────────────────── # ── More apps — uncomment to add ─────────────────────────────────
# Web browsers # Web browsers (chromium ships above — swap/delete freely)
# firefox # firefox
# chromium
# ungoogled-chromium # ungoogled-chromium
# brave # (unfree) # brave # (unfree)
# google-chrome # (unfree) # google-chrome # (unfree)