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>
Review sessions post findings on the PR instead of rev, entry paths
follow the checkout out of ~/tea/yolo, and the session's forge token is
named so reviewers stop reaching for the daemon's.
Picks up sandboxed PR review sessions. The two dokploy entries were
already gone from the live settings file, so the mutable-file check
aborted every switch until nix matched it.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Adds the maestro flake as an input and imports its Home Manager module.
yolo enables both user services; web binds 0.0.0.0:8081 because aoe-web
already holds 8080 on this host.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>