clawdie-iso/firstboot/rc.d/clawdie-firstboot
Sam & Claude 61b00accb4 feat: initial clawdie-iso skeleton
USB installer for Clawdie-AI. Combines FreeBSD base install,
desktop-installer GPU/DE setup, and Clawdie-AI deployment into
a single rc.firstboot wizard flow.

Skeleton includes:
- build.cfg: FreeBSD 15.0-RELEASE-p4, amd64, XFCE default
- build.sh: 7-step build outline (fetch → inject → repack), stubs
- installerconfig: bsdinstall post-install hook, copies firstboot/ to HDD
- firstboot/rc.d/clawdie-firstboot: runs once on first HDD boot
- firstboot/firstboot.sh: tiered bsddialog wizard (identity, desktop,
  pi profile, auto-generated secrets, AGENTS.md seeding, npm prefix setup)
- firstboot/gpu-detect.sh: pciconf PCI ID → kld/xorg driver mapping
- CLAWDIE-ISO.md: full design doc (copied from clawdie-ai)

VirtualBox excluded. pkg latest default. LLM keys deferred to pi first-run.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 20:04:21 +02:00

42 lines
971 B
Bash

#!/bin/sh
#
# PROVIDE: clawdie_firstboot
# REQUIRE: NETWORKING LOGIN
# BEFORE: clawdie
# KEYWORD: firstboot
#
# clawdie-firstboot — runs once on first HDD boot to complete Clawdie-AI setup.
# Self-disables on completion.
. /etc/rc.subr
name="clawdie_firstboot"
rcvar="${name}_enable"
start_cmd="${name}_start"
stop_cmd=":"
SHARE="/usr/local/share/clawdie-iso"
LOG="/var/log/clawdie-firstboot.log"
clawdie_firstboot_start()
{
echo "Starting Clawdie first-boot setup..."
# Run on ttyv0 so bsddialog has a real TTY for the wizard
/usr/bin/script -q -a "$LOG" \
/bin/sh "${SHARE}/firstboot/firstboot.sh"
RC=$?
if [ "$RC" -eq 0 ]; then
echo "Clawdie first-boot setup complete. Disabling service."
sysrc -x clawdie_firstboot_enable
rm -rf "$SHARE"
else
echo "Clawdie first-boot setup failed (exit $RC). Check $LOG"
fi
}
load_rc_config "$name"
: "${clawdie_firstboot_enable:=NO}"
run_rc_command "$1"