All checks were successful
Check / eval (push) Successful in 3m32s
BACKLOG #121. nixpkgs' chromium wrapper with enableWideVine = true (what the template ships, for DRM) runs the `-wv` copy but links its share/* from the PLAIN unwrapped build. A symlink is a store reference, so a second 687 MiB chromium rode along for a directory of .desktop files nothing executes. overlays.default now points those symlinks at the copy we already run; the template needs no change, since lib.nix, the repo pkgs and nixosModules all apply the overlay. Checked first, because it decided whether the item was possible at all: whether the `-wv` copy references the plain build. It is `cp -a` of it, so it plausibly would have — and then no wrapper change could have dropped the duplicate. It does not. Also verified rather than assumed: `.override { enableWideVine = true; }` composes with the overlay's overrideAttrs (the order usually matters), so the template's existing line picks the fix up untouched; the wrapper still execs the -wv build with WidevineCdm present; and share/{applications,icons,man} match stock with the .desktop byte-identical. I claimed this was "687 MiB off every install". It is not, and measuring the artifact instead of the closure is what corrected it: nominal closure -687 MiB (9.38 -> 8.71 GiB) ISO image -8 KiB of 8.078 GiB installed disk ~-19 MiB cache-install download -195 MiB Two dedupes that closure arithmetic cannot see. mksquashfs detects duplicate files, so the ISO had already stored the near-identical blocks once. And auto-optimise-store (on by default here) hardlinks identical files: the two paths share inodes — verified by stat, and du counts 639 MiB for the pair against ~620 for one. The only thing that cannot dedupe is the wire, where the extra path is its own 195 MiB NAR. So this is a DOWNLOAD fix — precisely what #120's netinstall cares about — and close to a no-op for the offline ISO that is the default today. Whether that justifies coupling an overlay to nixpkgs wrapper internals is Bernardo's call; it is guarded and no-ops if upstream moves, but it is his to weigh. Worth an upstream patch regardless: the wrapper should take its desktop entry from the variant it wraps. The guard is the load-bearing part, because the failure mode is a SILENT no-op that no build complains about: checks.chromium-single-closure asserts exactly one full unwrapped chromium in the template closure, and was proved to fail by neutering the overlay — it reports "found 2", names both paths, and warns off the tempting "fix" of dropping enableWideVine, which silently removes DRM. The rule this establishes, now recorded in ROADMAP and on #120 (whose entire size table is closure arithmetic): closure size is not disk size and is not image size. Measure the artifact. V2: flake check, chromium-single-closure, live-baseline-apps, template-sot, option-docs, state-bridges all pass. Three ISOs built from one tree for the numbers above. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Docs map
Where human and agent documentation lives. Do not invent a third tree for the same facts.
| Path | Audience | Role |
|---|---|---|
| ../README.md | Everyone | What Nomarchy is, install, options tables |
| VISION.md | Maintainers + agents | Product north star toward v1.0 and beyond — themes, not a task queue |
| ROADMAP.md | Maintainers + agents | Design/decision records + shipped log (historical ✓) |
| HARDWARE.md | Users + agents | Firmware, profiles, drivers, unsupported machines |
| TESTING.md | Maintainers + agents | Verification ladder, honesty rule, ISO/VM recipes |
| RECOVERY.md | Users | Broken theme/desktop/boot → undo |
| OVERRIDES.md | Users | Downstream Nix overrides |
| MIGRATION.md | Users | Existing NixOS → Nomarchy without reinstall |
| OMARCHY.md | Users | Coming from Omarchy — bindings/theme/install/config map |
Related (not under docs/)
| Path | Role |
|---|---|
| ../AGENTS.md | Agent entry point, any vendor/harness (CLAUDE.md symlinks to it) |
| ../agent/README.md | Agent instructions + executable loop state: BACKLOG, LOOP, VERIFICATION, … |
| ../.claude/ | Claude Code adapter only: permissions + subagent defs |
How work flows
VISION (what we want the product to feel like)
│
▼ human triages slices into…
BACKLOG (what's next, ordered — agents execute only this)
│
▼ lasting design notes after ship →
ROADMAP ✓ entries
Agents do not implement directly from VISION or ROADMAP. They take
the top actionable item in agent/BACKLOG.md (see agent/LOOP.md).
They may append PROPOSED pitches that reference VISION § … or
ROADMAP § ….