#!/usr/bin/env bash # Created by John A. Hoeven with the ethical assistance of Claude AI # --------------------------------------------------------------------------- # bootstrap.sh # Served at: http://192.168.0.138/scripts/alpine-ceos-installer/bootstrap.sh # Version: v0.0.1 | Status: DEVELOPMENT # Target: Alpine Linux x86-64 (tinkerpad / ThinkPad T480) # --------------------------------------------------------------------------- # Run this on tinkerpad to download the full CE OS installer from workbench. # Usage: wget http://192.168.0.138/scripts/alpine-ceos-installer/bootstrap.sh # bash bootstrap.sh # # TODO — Forgejo: replace the wget block below with these three lines and delete the rest of this file: # doas apk add git # git clone -b dev https://git.jhoeven.net/ceos/ceos-alpine-installer.git # cd ceos-alpine-installer && bash ce-install.sh # --------------------------------------------------------------------------- BASE="http://192.168.0.138/scripts/alpine-ceos-installer" DEST="/tmp/ceos-installer-$(date +%Y%m%d%H%M%S)" echo "CE OS Alpine Installer — Bootstrap" echo "===================================" echo "Source: ${BASE}" echo "Dest: ${DEST}" echo "" if ! command -v bash > /dev/null 2>&1; then echo "Installing bash..." doas apk add bash || { echo "ERROR: could not install bash"; exit 1; } fi mkdir -p \ "${DEST}/lib/base" \ "${DEST}/lib/minimal" \ "${DEST}/lib/basic" \ "${DEST}/tests" fetch() { local path="${1}" if wget -q -O "${DEST}/${path}" "${BASE}/${path}"; then echo " OK ${path}" else echo " ERR ${path}" >&2 echo "Bootstrap failed: could not fetch ${path}" >&2 exit 1 fi } echo "Fetching orchestrators..." fetch "ce-install.sh" fetch "ce-base.sh" fetch "ce-minimal.sh" fetch "ce-basic.sh" echo "Fetching library..." fetch "lib/ce-common.sh" fetch "lib/base/01_core.sh" fetch "lib/base/02_doas.sh" echo "Fetching Tier 1 — Minimal..." for n in 01_shell 02_terminal 03_files 04_vcs 05_systools \ 06_comms 07_journal 08_web 09_network 10_record \ 11_wiki 12_access; do fetch "lib/minimal/${n}.sh" done echo "Fetching Tier 2 — Basic..." for n in 01_comms 02_monitor 03_gui 04_media 05_fonts 06_utils; do fetch "lib/basic/${n}.sh" done echo "Fetching tests..." for t in test_base test_minimal test_basic; do fetch "tests/${t}.sh" done find "${DEST}" -name "*.sh" -exec chmod +x {} \; echo "" echo "Bootstrap complete." echo "" echo "To install:" echo " cd ${DEST}" echo " bash ce-install.sh # full stack (Tier 0 + 1 + 2)" echo " bash ce-base.sh # Tier 0 only" echo " bash ce-minimal.sh # Tier 1 only (requires Tier 0)" echo " bash ce-basic.sh # Tier 2 only (requires Tier 1)" echo "" echo "To run tests after install:" echo " bash ${DEST}/tests/test_base.sh" echo " bash ${DEST}/tests/test_minimal.sh" echo " bash ${DEST}/tests/test_basic.sh"