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:
commit
a194c14077
32 changed files with 1748 additions and 0 deletions
30
lib/basic/01_comms.sh
Normal file
30
lib/basic/01_comms.sh
Normal 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
41
lib/basic/02_monitor.sh
Normal 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
38
lib/basic/03_gui.sh
Normal 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
34
lib/basic/04_media.sh
Normal 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
40
lib/basic/05_fonts.sh
Normal 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
36
lib/basic/06_utils.sh
Normal 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue