archy/image-recipe/alpine-profile/mkimg.archipelago.sh

90 lines
2.9 KiB
Bash
Raw Normal View History

2026-01-24 22:59:20 +00:00
#!/bin/sh
# Alpine mkimage profile for Archipelago Bitcoin Node OS
profile_archipelago() {
profile_standard
# 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"
}
2026-01-24 22:59:20 +00:00
# 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
{
echo '#!/bin/sh'
echo '# First boot installation script for Archipelago'
echo ''
echo '# Install backend APK if available'
echo 'if [ -f /tmp/archipelago-backend.apk ]; then'
echo ' apk add --allow-untrusted /tmp/archipelago-backend.apk'
echo ' rm /tmp/archipelago-backend.apk'
echo 'fi'
echo ''
echo '# Enable services'
echo 'rc-update add archipelago default 2>/dev/null || true'
echo 'systemctl enable archipelago 2>/dev/null || true'
echo ''
echo '# Create archipelago user if needed'
echo 'if ! id archipelago >/dev/null 2>&1; then'
echo ' adduser -D -s /bin/bash archipelago'
echo ' echo "archipelago ALL=(ALL) NOPASSWD: /usr/bin/podman" >>/etc/sudoers'
echo 'fi'
echo ''
echo '# Setup Podman for archipelago user'
echo 'mkdir -p /home/archipelago/.config/containers'
echo 'chown -R archipelago:archipelago /home/archipelago'
echo ''
echo '# Create data directories'
echo 'mkdir -p /var/lib/archipelago/apps /var/lib/archipelago/secrets /var/lib/archipelago/logs /var/lib/archipelago/backups'
echo 'chown -R archipelago:archipelago /var/lib/archipelago'
echo ''
echo '# Start services'
echo 'rc-service archipelago start 2>/dev/null || systemctl start archipelago 2>/dev/null || true'
} > "$apkroot"/etc/local.d/archipelago-install.start
2026-01-24 22:59:20 +00:00
chmod +x "$apkroot"/etc/local.d/archipelago-install.start
}