Author SHA1 Message Date
sneak 62f1f5900d make build-bin: binary uses the system loader on Linux (closes #240)
check / check (push) Successful in 3m11s
nix's bun loads through a glibc in the nix store, and bun build --compile
copied that loader into ~/bin/quak, so nix-collect-garbage could break the
cron backup. On Linux x86-64 the build now passes
--target=bun-linux-x64-baseline, which makes bun use its downloaded release
build with the system loader. Other Linux architectures are refused, since
the fix is untested there; macOS is unchanged.

Model: opus-5-5
2026-11-11 20:33:28 +00:00
clawbot 30fc349b37 TODO.md: open work only (closes #235)
check / check (push) Successful in 2m49s
Removes the Completed Steps section: dated accounts of finished work,
review and merge history, and notes on past decisions. Git keeps the
history. Status, Next Step and Future Steps are unchanged.

The Workflow step "move Next Step to the top of Completed Steps" now
reads "delete Next Step from `TODO.md`", the standard wording. The
`README.md` TODO section no longer calls `TODO.md` the work log; it
says the file holds the next step and the steps planned.

Model: opus-5-5
2026-11-11 14:59:31 +01:00
2 changed files with 19 additions and 3 deletions

No files matched your search

+13 -1
View File
@@ -28,8 +28,20 @@ build:
# Bundles the built dist/, so the binary reports the version script/build
# stamped.
#
# On Linux, nix's bun loads through a C library in the nix store, and a binary
# bun compiles from itself keeps that loader. nix-collect-garbage can delete
# that C library, and the binary then no longer starts.
# A --target other than the host's makes bun use its downloaded release build,
# which loads through the system's C library. That is tested only on x86-64,
# with the baseline build, so other Linux machines are refused.
build-bin: build
nix-shell -p bun --run "bun build dist/bin/quak.js --compile --outfile bin/quak"
case "$$(uname -s)-$$(uname -m)" in \
Linux-x86_64) target=--target=bun-linux-x64-baseline ;; \
Linux-*) echo "make build-bin: on Linux only x86-64 is supported" >&2; exit 1 ;; \
*) target= ;; \
esac; \
nix-shell -p bun --run "bun build dist/bin/quak.js --compile $$target --outfile bin/quak"
install: build-bin
mkdir -p ~/bin
+6 -2
View File
@@ -138,7 +138,10 @@ requests. The "Library reference" below covers both.
one binary and copies it to `~/bin/quak`. Besides what Getting Started needs,
`make install` needs `make` and [nix](https://nixos.org/download). It uses bun,
a JavaScript runtime, to bundle the built `dist/` into one executable. It runs
bun through `nix-shell -p bun`.
bun through `nix-shell -p bun`. On Linux it works on x86-64 only. There, the
binary is built from bun's own release build rather than nix's bun, so it does
not need the nix store. The first build downloads that release build into
`~/.bun`.
Log in once with `~/bin/quak`, as the user the cron job will run as:
@@ -1910,7 +1913,8 @@ These apply to people and to coding agents alike.
`bin/clip-keyword-vectors` installs, by SHA-256 hash;
- Node and yarn, when `script/bootstrap` installs them, by version.
- Not pinned:
- bun, which `make build-bin` takes from `nix-shell -p bun`;
- bun, which `make build-bin` takes from `nix-shell -p bun`, and on Linux
the release build of the same bun version that it downloads;
- `make` and `git`, which `script/bootstrap` installs from the system
package manager when they are missing, as every `Dockerfile` stage does;
- `bash` and `curl`, which `script/bootstrap` installs the same way when it