Add CE OS Alpine installer v0.0.1 — Tier 0/1/2 dev scaffold

Staged installer set for Alpine Linux x86-64 (tinkerpad/ThinkPad T480).
Covers Base (Tier 0), Minimal (Tier 1), and Basic (Tier 2) tiers with
full phased structure, per-package error capture, and re-runnable test suites.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
John A. Hoeven 2026-06-10 02:25:38 +02:00
commit a194c14077
32 changed files with 1748 additions and 0 deletions

30
lib/basic/01_comms.sh Normal file
View file

@ -0,0 +1,30 @@
#!/usr/bin/env bash
# Created by John A. Hoeven with the ethical assistance of Claude AI
# ---------------------------------------------------------------------------
# 01_comms.sh
# ~/projects/ceos/alpine-installer/lib/basic/01_comms.sh
# Version: v0.0.1 | Status: DEVELOPMENT
# Target: Alpine Linux x86-64 (tinkerpad / ThinkPad T480)
# ---------------------------------------------------------------------------
# Basic Tier subscript: communication additions — abook, task (taskwarrior).
# Defines install_basic_comms().
# ---------------------------------------------------------------------------
install_basic_comms() {
log_info "--- basic/01_comms: communication additions ---"
local -a PKGS=(abook task)
for pkg in "${PKGS[@]}"; do
install_pkg "${pkg}"
done
run_test "abook present" 'command -v abook >/dev/null 2>&1' warn
run_test "task present" 'command -v task >/dev/null 2>&1' warn
}
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
SCRIPT_NAME="basic_01_comms"
source "${SCRIPT_DIR}/lib/ce-common.sh" || { echo "ERROR: ce-common.sh not found"; exit 1; }
check_not_root
install_basic_comms
print_summary
fi

41
lib/basic/02_monitor.sh Normal file
View file

@ -0,0 +1,41 @@
#!/usr/bin/env bash
# Created by John A. Hoeven with the ethical assistance of Claude AI
# ---------------------------------------------------------------------------
# 02_monitor.sh
# ~/projects/ceos/alpine-installer/lib/basic/02_monitor.sh
# Version: v0.0.1 | Status: DEVELOPMENT
# Target: Alpine Linux x86-64 (tinkerpad / ThinkPad T480)
# ---------------------------------------------------------------------------
# Basic Tier subscript: system monitoring — nethogs, iproute2, lnav (@edge).
# lnav is an edge package; failure is logged and marked for manual follow-up.
# Defines install_basic_monitor().
# ---------------------------------------------------------------------------
install_basic_monitor() {
log_info "--- basic/02_monitor: system monitoring ---"
local -a PKGS=(nethogs iproute2)
for pkg in "${PKGS[@]}"; do
install_pkg "${pkg}"
done
run_test "ip present" 'command -v ip >/dev/null 2>&1' warn
# lnav — edge package, warn-on-fail
ensure_edge_repo
log_info "Installing lnav from @edge..."
if install_pkg_edge "lnav"; then
run_test "lnav present" 'command -v lnav >/dev/null 2>&1' warn
else
MANUAL_PKGS+=("lnav: edge install failed — requires manual verification")
fi
}
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
SCRIPT_NAME="basic_02_monitor"
source "${SCRIPT_DIR}/lib/ce-common.sh" || { echo "ERROR: ce-common.sh not found"; exit 1; }
check_not_root
install_basic_monitor
print_summary
fi

38
lib/basic/03_gui.sh Normal file
View file

@ -0,0 +1,38 @@
#!/usr/bin/env bash
# Created by John A. Hoeven with the ethical assistance of Claude AI
# ---------------------------------------------------------------------------
# 03_gui.sh
# ~/projects/ceos/alpine-installer/lib/basic/03_gui.sh
# Version: v0.0.1 | Status: DEVELOPMENT
# Target: Alpine Linux x86-64 (tinkerpad / ThinkPad T480)
# ---------------------------------------------------------------------------
# Basic Tier subscript: GUI layer — cagebreak, firefox, xwayland.
# Supported on x86-64. Boot config modification (/boot/cmdline.txt) is
# RPi-only and is explicitly skipped on x86-64 hardware.
# Defines install_basic_gui().
# ---------------------------------------------------------------------------
install_basic_gui() {
log_info "--- basic/03_gui: GUI layer (Wayland + Firefox) ---"
log_info "Arch: ${ARCH} — GUI supported on x86-64"
local -a PKGS=(cagebreak firefox xwayland)
for pkg in "${PKGS[@]}"; do
install_pkg "${pkg}"
done
run_test "cagebreak present" 'command -v cagebreak >/dev/null 2>&1' warn
run_test "firefox present" 'command -v firefox >/dev/null 2>&1' warn
# /boot/cmdline.txt and /boot/extlinux.conf modifications are RPi-only
log_info "NOTICE: /boot/cmdline.txt modification skipped — not applicable on x86-64 (ThinkPad)"
}
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
SCRIPT_NAME="basic_03_gui"
source "${SCRIPT_DIR}/lib/ce-common.sh" || { echo "ERROR: ce-common.sh not found"; exit 1; }
check_not_root
install_basic_gui
print_summary
fi

34
lib/basic/04_media.sh Normal file
View file

@ -0,0 +1,34 @@
#!/usr/bin/env bash
# Created by John A. Hoeven with the ethical assistance of Claude AI
# ---------------------------------------------------------------------------
# 04_media.sh
# ~/projects/ceos/alpine-installer/lib/basic/04_media.sh
# Version: v0.0.1 | Status: DEVELOPMENT
# Target: Alpine Linux x86-64 (tinkerpad / ThinkPad T480)
# ---------------------------------------------------------------------------
# Basic Tier subscript: media — cmus, mpv, ffmpeg, imagemagick, fbida-fbi.
# Note: package is 'fbida-fbi' (not 'fbida').
# Defines install_basic_media().
# ---------------------------------------------------------------------------
install_basic_media() {
log_info "--- basic/04_media: media tools ---"
local -a PKGS=(cmus mpv ffmpeg imagemagick fbida-fbi)
for pkg in "${PKGS[@]}"; do
install_pkg "${pkg}"
done
run_test "cmus present" 'command -v cmus >/dev/null 2>&1' warn
run_test "mpv present" 'command -v mpv >/dev/null 2>&1' warn
run_test "ffmpeg present" 'command -v ffmpeg >/dev/null 2>&1' warn
run_test "convert present" 'command -v convert >/dev/null 2>&1' warn
run_test "fbi present" 'command -v fbi >/dev/null 2>&1' warn
}
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
SCRIPT_NAME="basic_04_media"
source "${SCRIPT_DIR}/lib/ce-common.sh" || { echo "ERROR: ce-common.sh not found"; exit 1; }
check_not_root
install_basic_media
print_summary
fi

40
lib/basic/05_fonts.sh Normal file
View file

@ -0,0 +1,40 @@
#!/usr/bin/env bash
# Created by John A. Hoeven with the ethical assistance of Claude AI
# ---------------------------------------------------------------------------
# 05_fonts.sh
# ~/projects/ceos/alpine-installer/lib/basic/05_fonts.sh
# Version: v0.0.1 | Status: DEVELOPMENT
# Target: Alpine Linux x86-64 (tinkerpad / ThinkPad T480)
# ---------------------------------------------------------------------------
# Basic Tier subscript: fonts and display — figlet, nerd-fonts (@edge).
# nerd-fonts package name confirmed via pkgs.alpinelinux.org (edge/community).
# Installs with @edge tag; gracefully skips on failure.
# Defines install_basic_fonts().
# ---------------------------------------------------------------------------
install_basic_fonts() {
log_info "--- basic/05_fonts: fonts and display ---"
install_pkg "figlet"
run_test "figlet present" 'command -v figlet >/dev/null 2>&1' warn
# nerd-fonts — edge/community; package name verified as 'nerd-fonts'
ensure_edge_repo
log_info "Installing nerd-fonts from @edge/community..."
if install_pkg_edge "nerd-fonts"; then
log_info "nerd-fonts installed"
else
log_warn "nerd-fonts@edge not available — skipping gracefully"
MANUAL_PKGS+=("nerd-fonts: edge install failed — check pkgs.alpinelinux.org/packages?name=nerd-fonts&branch=edge")
fi
}
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
SCRIPT_NAME="basic_05_fonts"
source "${SCRIPT_DIR}/lib/ce-common.sh" || { echo "ERROR: ce-common.sh not found"; exit 1; }
check_not_root
install_basic_fonts
print_summary
fi

36
lib/basic/06_utils.sh Normal file
View file

@ -0,0 +1,36 @@
#!/usr/bin/env bash
# Created by John A. Hoeven with the ethical assistance of Claude AI
# ---------------------------------------------------------------------------
# 06_utils.sh
# ~/projects/ceos/alpine-installer/lib/basic/06_utils.sh
# Version: v0.0.1 | Status: DEVELOPMENT
# Target: Alpine Linux x86-64 (tinkerpad / ThinkPad T480)
# ---------------------------------------------------------------------------
# Basic Tier subscript: additional utilities —
# tealdeer, restic, jq, bc, zip, unzip, xz.
# Note: package name is 'tealdeer' (not 'tldr').
# Defines install_basic_utils().
# ---------------------------------------------------------------------------
install_basic_utils() {
log_info "--- basic/06_utils: additional utilities ---"
local -a PKGS=(tealdeer restic jq bc zip unzip xz)
for pkg in "${PKGS[@]}"; do
install_pkg "${pkg}"
done
run_test "tldr present" 'command -v tldr >/dev/null 2>&1' warn
run_test "restic present" 'command -v restic >/dev/null 2>&1' warn
run_test "jq present" 'command -v jq >/dev/null 2>&1' warn
run_test "bc present" 'command -v bc >/dev/null 2>&1' warn
run_test "zip present" 'command -v zip >/dev/null 2>&1' warn
run_test "xz present" 'command -v xz >/dev/null 2>&1' warn
}
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
SCRIPT_NAME="basic_06_utils"
source "${SCRIPT_DIR}/lib/ce-common.sh" || { echo "ERROR: ce-common.sh not found"; exit 1; }
check_not_root
install_basic_utils
print_summary
fi