feat(tools): rig-install.sh + SETUP.md — clone the gig onto a new box
The install counterpart to rig-doctor.py: the doctor only ever reads, this converges. Idempotent by construction — detect, report, act only if something is actually missing, never fail the whole run for one optional piece. Covers every checked item in rig-doctor.py: system packages (printed, pacman+--yes is the only path this script ever executes itself), SuperCollider quarks at current HEAD (no lockfile — PLN rejected pinning), the mi-UGens extension, the private parvagues-synths repo + its link.sh, the two ~/.local/bin shims two systemd units silently crash-loop without (nothing in the repo created these before now — a top-5 fresh-box breakage), the systemd --user units from rig_units.py's one authored table, and the sample carry-on bundle (rsync, out of band from git on purpose). Root-owned installs (perf-audio+sudoers, parvagues-protect, the [midiviz-pin] KWin rule) are print-only, always — this script never runs sudo. A script that quietly escalates itself is one nobody can audit before a gig; `--print-root-steps` shows just those three commands and does nothing else. Every path is resolved at run time from the script's own location, $HOME, and $XDG_DATA_HOME — never baked in. This rig's oldest recurring bug is a binding resolved once and never re-resolved; an installer is exactly the kind of code tempted to commit that bug by writing down what it found on its own author's box. For the same reason it never repoints an existing systemd-unit or ~/.local/bin symlink that already resolves correctly, even to a DIFFERENT checkout than this one — only creates what's entirely missing, or repairs a dangling link. Tested twice on PLN's own performing laptop (already fully provisioned): both runs report "already ok" throughout and change no running state, except parvagues-synths/link.sh adopting 18 already-identical synthdefs as symlinks (its own designed no-op-equivalent). Also regenerates tools/parvagues-rig.target from rig_units.py's generator: it had drifted (still Wanted the now-manual lcxl3-driver, missing midiviz) since the unit table changed under it. SETUP.md is the human procedure: the fast path, what rig-install.sh does and doesn't do, the LCXL2/LCXL3 hardware-detected split, a troubleshooting section keyed off the doctor's real FAIL text, and an explicit "known not portable yet" — start_and_midi.scd and sample_watch.scd hardcode /home/pln, so a non-pln account gets a rig that boots clean with banks and preload silently missing (task #28). Named honestly rather than hidden from the next person who hits it.
Showing
SETUP.md
0 → 100644
tools/rig-install.sh
0 → 100644
Please
register
or
sign in
to comment