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>
54 lines
1.6 KiB
Nix
54 lines
1.6 KiB
Nix
{ lib
|
|
, stdenvNoCC
|
|
, python3
|
|
, makeWrapper
|
|
, awww
|
|
, libnotify
|
|
, git
|
|
# Shipped theme presets, baked into the package as a fallback so
|
|
# `list`/`apply` work even when $NOMARCHY_PATH has no themes/ dir.
|
|
# Already a store artifact (nomarchy-default-themes merges the repo's
|
|
# ./themes with backgrounds/ symlinked from nomarchy-wallpapers) — the
|
|
# wrapper points straight at it, no copy, so it stays in the closure
|
|
# without duplicating it into $out.
|
|
, themesDir ? null
|
|
}:
|
|
|
|
stdenvNoCC.mkDerivation {
|
|
pname = "nomarchy-state-sync";
|
|
version = "0.5.0";
|
|
|
|
src = ./.;
|
|
|
|
nativeBuildInputs = [ makeWrapper ];
|
|
buildInputs = [ python3 ];
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
|
|
install -Dm755 nomarchy-state-sync.py $out/bin/nomarchy-state-sync
|
|
patchShebangs $out/bin/nomarchy-state-sync
|
|
|
|
# Stdlib-only Python. home-manager is deliberately NOT wrapped in —
|
|
# the rebuild must use the user's own home-manager from their PATH.
|
|
wrapProgram $out/bin/nomarchy-state-sync \
|
|
--prefix PATH : ${lib.makeBinPath [ awww libnotify git ]} \
|
|
${lib.optionalString (themesDir != null)
|
|
"--set NOMARCHY_DEFAULT_THEMES ${themesDir}"}
|
|
|
|
# #107: old CLI name kept as a symlink so muscle memory and scripts
|
|
# survive a pull (drop after the next stable release notes say so).
|
|
# After wrapProgram so it points at the wrapper, not the raw script.
|
|
ln -s nomarchy-state-sync $out/bin/nomarchy-theme-sync
|
|
|
|
runHook postInstall
|
|
'';
|
|
|
|
meta = {
|
|
description = "Nomarchy state writer + Home Manager rebuild dispatcher";
|
|
license = lib.licenses.mit;
|
|
mainProgram = "nomarchy-state-sync";
|
|
platforms = lib.platforms.linux;
|
|
};
|
|
}
|