#!/usr/bin/env bash # Created by John A. Hoeven with the ethical assistance of Claude AI # --------------------------------------------------------------------------- # 12_access.sh # ~/projects/ceos/alpine-installer/lib/minimal/12_access.sh # Version: v0.0.1 | Status: DEVELOPMENT # Target: Alpine Linux x86-64 (tinkerpad / ThinkPad T480) # --------------------------------------------------------------------------- # Minimal Tier subscript: accessibility — espeak-ng, espeakup, speech-dispatcher. # espeak conflict trap: removes espeak before installing espeak-ng. # espeakup: repo-verified before install (package availability varies by release). # speech-dispatcher: @edge, warn-on-fail. # ly login manager: aarch64 CE repo only — SKIPPED on x86-64 with notice. # Defines install_minimal_access(). # --------------------------------------------------------------------------- install_minimal_access() { log_info "--- minimal/12_access: accessibility ---" # espeak conflict trap — must run before espeak-ng install if doas apk info -e espeak >> "${LOG_FILE}" 2>&1; then log_info "Removing conflicting 'espeak' package before installing espeak-ng..." doas apk del espeak >> "${LOG_FILE}" 2>&1 \ || log_warn "Could not remove espeak — espeak-ng may conflict" fi install_pkg "espeak-ng" run_test "espeak-ng present" 'command -v espeak-ng >/dev/null 2>&1' warn # espeakup — in edge/testing; also install espeakup-openrc for service management ensure_testing_repo install_pkg_testing "espeakup" install_pkg_testing "espeakup-openrc" # speech-dispatcher — edge package ensure_edge_repo install_pkg_edge "speech-dispatcher" # ly login manager — testing for x86_64 + aarch64; armhf needs CE repo source build if [[ "${ARCH}" == "armhf" ]]; then log_warn "ly: not in Alpine testing for armhf — requires CE repo source build" MANUAL_PKGS+=("ly: not in Alpine testing for armhf — CE repo source build required") else ensure_testing_repo install_pkg_testing "ly" if command -v ly >/dev/null 2>&1; then doas rc-update add ly default >> "${LOG_FILE}" 2>&1 \ || log_warn "ly: rc-update add failed — enable manually" doas sed -i 's|^tty2::respawn:|#tty2::respawn:|' /etc/inittab >> "${LOG_FILE}" 2>&1 \ || log_warn "ly: could not comment out tty2 getty in /etc/inittab — check manually" log_info "ly installed and enabled on default runlevel" fi fi } if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" SCRIPT_NAME="12_access" source "${SCRIPT_DIR}/lib/ce-common.sh" || { echo "ERROR: ce-common.sh not found"; exit 1; } check_not_root install_minimal_access print_summary fi