90 lines
2.3 KiB
Bash
Executable File
90 lines
2.3 KiB
Bash
Executable File
#!/bin/sh
|
|
# Alpine mkimage profile for Archipelago Bitcoin Node OS
|
|
# Based on Alpine's standard profile
|
|
|
|
# Source the standard profile functions
|
|
. "$(dirname "$0")/mkimg.standard.sh"
|
|
|
|
# Additional packages for Archipelago
|
|
apks="$apks
|
|
systemd
|
|
systemd-openrc
|
|
podman
|
|
podman-compose
|
|
crun
|
|
fuse-overlayfs
|
|
slirp4netns
|
|
networkmanager
|
|
networkmanager-openrc
|
|
openssh
|
|
openssh-openrc
|
|
nginx
|
|
nginx-openrc
|
|
"
|
|
|
|
# Kernel flavor
|
|
kernel_flavors="lts"
|
|
|
|
# Bootloader
|
|
boot_addons="grub-efi"
|
|
|
|
# Initfs features
|
|
initfs_features="base squashfs ext4 usb pcmcia scsi mmc nvme virtio"
|
|
|
|
# Initfs modules
|
|
initfs_modules="loop squashfs"
|
|
|
|
# Post-install hook - called after base system is installed
|
|
profile_apkovl() {
|
|
local apkovl="$1"
|
|
local apkroot="$2"
|
|
|
|
# Copy overlay files
|
|
if [ -d "$(dirname "$0")/overlay" ]; then
|
|
echo "📦 Installing overlay files..."
|
|
cp -a "$(dirname "$0")/overlay/"* "$apkroot"/
|
|
fi
|
|
|
|
# Install Archipelago APK if available
|
|
local apk_file="$(dirname "$0")/../../apks/archipelago-backend-"*.apk"
|
|
if ls $apk_file 1> /dev/null 2>&1; then
|
|
echo "📦 Installing Archipelago backend APK..."
|
|
cp $apk_file "$apkroot"/tmp/archipelago-backend.apk
|
|
fi
|
|
|
|
# Create first boot script
|
|
mkdir -p "$apkroot"/etc/local.d
|
|
cat > "$apkroot"/etc/local.d/archipelago-install.start <<'INSTALL_EOF'
|
|
#!/bin/sh
|
|
# First boot installation script for Archipelago
|
|
|
|
# Install backend APK if available
|
|
if [ -f /tmp/archipelago-backend.apk ]; then
|
|
apk add --allow-untrusted /tmp/archipelago-backend.apk
|
|
rm /tmp/archipelago-backend.apk
|
|
fi
|
|
|
|
# Enable services
|
|
rc-update add archipelago default 2>/dev/null || true
|
|
systemctl enable archipelago 2>/dev/null || true
|
|
|
|
# Create archipelago user if needed
|
|
if ! id archipelago >/dev/null 2>&1; then
|
|
adduser -D -s /bin/bash archipelago
|
|
echo "archipelago ALL=(ALL) NOPASSWD: /usr/bin/podman" >> /etc/sudoers
|
|
fi
|
|
|
|
# Setup Podman for archipelago user
|
|
mkdir -p /home/archipelago/.config/containers
|
|
chown -R archipelago:archipelago /home/archipelago
|
|
|
|
# Create data directories
|
|
mkdir -p /var/lib/archipelago/{apps,secrets,logs,backups}
|
|
chown -R archipelago:archipelago /var/lib/archipelago
|
|
|
|
# Start services
|
|
rc-service archipelago start 2>/dev/null || systemctl start archipelago 2>/dev/null || true
|
|
INSTALL_EOF
|
|
chmod +x "$apkroot"/etc/local.d/archipelago-install.start
|
|
}
|