Tasks were wedging in kvm_async_pf_task_wait_schedule and surviving
SIGKILL — maestro-web, systemd activation generators and agent sessions,
a few a day, clearing only on reboot. The host pages this VM's memory out
and a "page ready" wakeup gets dropped, leaving the task in an
uninterruptible wait with no safe point to deliver a signal.
no-kvmapf trades that for a synchronous vCPU stall on host page-in.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Same shape as rev: a push to main bumps the input, commits the lock and
switches. The units it ships (pr-daemon, hourlog, week-review) restart without
disturbing anything interactive.
systemd's Environment= strips the quotes out of inline JSON, so the listener
died on startup parsing it. A store file has no such problem.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
rev came from a working checkout: the unit ran `node server/index.ts` in
~/tea/rev, so any edit there was live, and rev-deploy rebuilt a prod directory
that no longer exists. It is a flake input now, same as maestro, and
`services.rev` owns the unit.
Adds nix-autodeploy: one endpoint both repos post to. It verifies the webhook
HMAC, bumps that flake input, commits and pushes flake.lock, then switches. The
switch runs in a transient unit, since it restarts the listener itself. maestro
is bump-and-notify only — switching would restart the daemon that owns every
interactive shell here.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The aoe config was the last tracked file, and it drifts the same way
settings.json did. With no consumers left, the module, its repo-path option
and the tracked aoe-config.toml go too.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude Code rewrites ~/.claude/settings.json itself, so the nix copy drifted
within every session and `nh home switch` aborted on the diff. Drops the
mutableFiles entries and the two tracked JSON sources.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Both mutable-managed files had drifted from what the running apps
actually wrote; bringing the live content upstream unblocked the
home-manager switch that picks up the new maestro build.
GDM_BACKEND was a typo for GBM_BACKEND; nothing read it, since SDDM is
the display manager here.
Firefox/Zen decode in a separate RDD process whose sandbox denies
/dev/nvidia*, so nvidia-vaapi-driver never initialised there and all
playback fell back to software. Confirmed on the running session: the
GPU process held 26 nvidia fds, both RDD processes held zero.
Co-Authored-By: Claude <noreply@anthropic.com>
compinit security-checked and rebuilt the dump on every shell start, the
largest fixed cost before fzf-tab, atuin, zoxide, direnv and starship
load. Verified both branches yield the same 1980 completions.
Co-Authored-By: Claude <noreply@anthropic.com>
Off by default: it is only useful on an NVIDIA host, and no binary cache
serves it (cuda-maintainers was measured to change nothing), so enabling
it rebuilds Blender, OpenUSD, OpenSubdiv and OpenImageDenoise.
Co-Authored-By: Claude <noreply@anthropic.com>
mpv shipped as a bare package with no config, so every host decoded video
in software. hwdec is the only vendor-specific part, so it is an option:
auto-safe everywhere, overridden on NVIDIA hosts.
Co-Authored-By: Claude <noreply@anthropic.com>