feat(themes): wallpapers split — 94 MB of runtime-only images leave the flake source
All checks were successful
Check / eval (push) Successful in 4m1s
All checks were successful
Check / eval (push) Successful in 4m1s
The split line is consumption time: palette JSONs, previews and per-theme overrides are read at Nix eval and stay in-repo (~3 MB); wallpapers are runtime-only (swww via nomarchy-state-sync, never read at eval) and move to the pinned nomarchy-wallpapers non-flake input (git.bemagri.xyz/bernardo/Nomarchy-Wallpapers @ 803b48d, all 24 slugs). New overlay drv nomarchy-default-themes merges the two: repo themes copied, <slug>/backgrounds symlinked from the input, build FAILS if any theme JSON lacks non-empty backgrounds — the drift guard for the two-repo dance. nomarchy-state-sync's wrapper now points straight at the merged store path (no in-package copy): the package drops from ~94 MB to 32.6 KiB and the wallpapers source appears exactly once in any system closure, ISO included — offline promise intact. Downstream custom wallpapers still win ($NOMARCHY_PATH/themes is checked first), and an explicit state.json wallpaper path still works. checks re-pointed at the merged tree (theme-wholeswap, state-sync-validate, auto-theme); theme-contrast and airplane stay on ./themes (JSON/text only). import-palettes.py + README updated; ROADMAP § Faster switches marked shipped; LATER now carries only the pre-built-variants follow-on. Also files #151 (v1 launch plan, [human]) with measured history numbers: the 107 MiB pack is 94 MB wallpaper blobs; all 848 text commits pack to ~15-20 MiB — recommendation recorded to filter-repo at the GitHub move, not fresh-start. Verification: V2 — nix flake check --no-build green; theme-wholeswap, state-sync-validate, auto-theme VM check, downstream-template-home all green; wallpapers store path exactly once in the state-sync closure; `list` works from a scratch state dir. V3 queued: live wallpaper render + bg-next + custom-override precedence after next pull (HARDWARE-QUEUE). Lock gained exactly the one input node. Implementation by a Sonnet subagent; design and review on Fable. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -193,7 +193,7 @@ Design/decision records and a running log of shipped work (items marked
|
||||
rendered + captured); real-hardware capture was chosen for fidelity +
|
||||
simplicity, with the VM route as a documented fallback if hand-capturing all
|
||||
themes gets tedious.)
|
||||
- **Faster switches:** move `backgrounds/` out of the flake source. Diagnosis
|
||||
- ✓ **Faster switches:** move `backgrounds/` out of the flake source. Diagnosis
|
||||
(confirmed): `themes/` is 86 MB and `backgrounds/` is **all** of it — the
|
||||
palette JSONs + per-theme overrides are only ~208 KB, and the wallpapers are
|
||||
**never read at Nix eval** (only the Python `swww` path uses them). But
|
||||
@@ -213,6 +213,17 @@ Design/decision records and a running log of shipped work (items marked
|
||||
Follow-on if `home-manager switch` itself is still the bottleneck after the
|
||||
copy is gone: **pre-built theme variants** (build each theme's generation
|
||||
ahead of time so a switch just activates a cached one).
|
||||
**Shipped (2026-07-17):** Option 1, exactly as decided. New `nomarchy-wallpapers`
|
||||
flake input (`flake = false`, its own repo, `<slug>/backgrounds/*`); a new
|
||||
overlay derivation `nomarchy-default-themes` copies this repo's `./themes`
|
||||
(now ~3 MB — JSONs, previews, btop/waybar/rofi overrides) and symlinks in
|
||||
`backgrounds/` per slug from the input, failing the build if a theme JSON
|
||||
has no matching non-empty backgrounds (drift guard, belt to
|
||||
`check-theme-wholeswap.py`'s same assertion). `nomarchy-state-sync`'s
|
||||
`themesDir` now points straight at that merged store path (no more
|
||||
in-package `cp -r`) — its own closure dropped from ~94 MB to a few hundred
|
||||
KB. `themes/*/backgrounds/` removed from this repo's working tree going
|
||||
forward (existing git history still carries the old blobs — not rewritten).
|
||||
- Greeter (tuigreet/SDDM) theming from the same JSON (Plymouth ships since
|
||||
v1: `nomarchy.system.plymouth.*`, background tinted from the state file)
|
||||
- Installer round 2: multi-disk BTRFS RAID, impermanence, BIOS/legacy
|
||||
|
||||
Reference in New Issue
Block a user