clawdie-iso/doc/NVIDIA-UNIVERSAL-HANDOFF.md

3.5 KiB

NVIDIA universal lane — Codex build + hardware validation handoff

From: Claude (Linux) · To: Codex ISO Builder (FreeBSD 15 host) Goal: one ISO that boots on any NVIDIA machine — detect the GPU pre-SDDM, install the matching branch from an on-image repo, kldload it, then SDDM/XFCE.

Authored on Linux (sh -n clean; detector + branch/pkg map unit-tested). The package/boot behavior must be built and proven on FreeBSD + real NVIDIA hardware — it cannot be validated from Linux.

What landed (behind NVIDIA_UNIVERSAL, default NO — normal builds unaffected)

  • build.cfg: NVIDIA_UNIVERSAL flag.
  • build.sh:
    • install_nvidia_universal_repo()pkg fetch -d the three families (nvidia-driver-390/470/580 + settings) into /usr/local/share/clawdie/nvidia-repo, pkg repo it, write /usr/local/etc/pkg/repos/clawdie-nvidia.conf (file:// , enabled).
    • In universal mode: no branch baked into the root; rc.conf clawdie_live_gpu_mode="nvidia-auto".
  • live/operator-session/clawdie-live-gpu (nvidia-auto mode): detect device id → branch {390,470,590} → pkg install -r clawdie-nvidia nvidia-driver-<n> nvidia-settings → kldload via existing select/load. Best-effort: any failure falls through to the integrated/scfb path — never worse than today.

Must verify on the FreeBSD build host

  1. pkg fetch -o / pkg repo layout — confirm pkg fetch -y -o DIR -d ... places archives where pkg repo DIR expects them; adjust if pkg repo needs DIR/All. Confirm the dependency closure is complete (offline boot install must not reach the network).
  2. Boot install commandpkg install -y -r clawdie-nvidia nvidia-driver-470 nvidia-settings resolves purely from the file:// repo with no network.
  3. Writable root at boot — the USB-root install must allow pkg install before SDDM (it does on a real on-USB FreeBSD; confirm).
  4. Kernel ABI — the staged kmod packages must match the image's kernel.
  5. Image size — three branches + deps add several hundred MB; confirm headroom against IMAGE_SIZE.
  6. Exactly one branch installed at boot (no mixing).

Build commands

# colibri artifacts first (do NOT cargo clean after)
cd /home/clawdie/ai/colibri && git fetch origin && git reset --hard origin/main
cargo build --workspace --release

# universal image (set COLIBRI_REPO explicitly if building from a tmp worktree)
cd /home/clawdie/ai/clawdie-iso && git fetch origin && git reset --hard origin/main
sudo env NVIDIA_UNIVERSAL=YES \
  FEATURE_CLAWDIE=YES CLAWDIE_ENABLE=NO COLIBRI_DAEMON_ENABLE=NO \
  CLAWDIE_AI_REPO=/home/clawdie/ai/clawdie-ai \
  COLIBRI_REPO=/home/clawdie/ai/colibri \
  CLAWDIE_ARTIFACT_DIR=/home/clawdie/ai/colibri/target/release \
  ./build.sh --skip-memstick-fetch --live-default-password

Hardware acceptance

  1. Boot on the NVIDIA target.
  2. cat /var/log/clawdie-live-gpu.log — expect: detected device id, chosen branch + pkg, "installed nvidia-driver-", selected/loaded modules.
  3. kldstat | grep nvidia and SDDM → XFCE comes up accelerated.
  4. If install/load failed, the log shows the fallback and the desktop still comes up on integrated/scfb (no hard failure).

Deletion criteria

Delete this handoff once a NVIDIA_UNIVERSAL=YES image has, on real NVIDIA hardware, auto-installed the correct branch and reached XFCE — with the result recorded below.

Results

(Codex: build host, GPU model + device id, branch chosen, pkg install outcome, image size delta, SDDM/XFCE result.)