#!/bin/bash
# Arch R — Save System Config on Shutdown
# Backs up critical runtime config to /boot for persistence across rootfs rebuilds.
# Runs as ExecStop in a systemd service (triggered on shutdown).

BACKUP_DIR="/boot/archr-backup"
log() { logger -t archr-save-config "$1"; }

# Auto-detect ALSA volume control (BSP: DAC, Mainline: Master)
if amixer sget 'Master' &>/dev/null; then
    ALSA_VOL=Master
else
    ALSA_VOL=DAC
fi

case "${1:-backup}" in
    backup)
        mkdir -p "$BACKUP_DIR"

        # Save ALSA mixer state
        alsactl store -f "$BACKUP_DIR/asound.state" 2>/dev/null

        # Save brightness
        BRIGHTNESS=$(cat /sys/class/backlight/*/brightness 2>/dev/null | head -1)
        [ -n "$BRIGHTNESS" ] && echo "$BRIGHTNESS" > "$BACKUP_DIR/brightness"

        # Save volume
        VOL=$(amixer -c 0 sget "$ALSA_VOL" 2>/dev/null | grep -o '[0-9]*%' | head -1)
        [ -n "$VOL" ] && echo "$VOL" > "$BACKUP_DIR/volume"

        # Save WiFi connections
        if [ -d /etc/NetworkManager/system-connections ]; then
            cp -a /etc/NetworkManager/system-connections "$BACKUP_DIR/wifi" 2>/dev/null
        fi

        # Sync to disk
        sync

        log "Config saved to $BACKUP_DIR"
        ;;

    restore)
        # Restore ALSA state
        [ -f "$BACKUP_DIR/asound.state" ] && alsactl restore -f "$BACKUP_DIR/asound.state" 2>/dev/null

        # Restore brightness
        if [ -f "$BACKUP_DIR/brightness" ]; then
            for bl in /sys/class/backlight/*/brightness; do
                cat "$BACKUP_DIR/brightness" > "$bl" 2>/dev/null
            done
        fi

        # Restore volume
        if [ -f "$BACKUP_DIR/volume" ]; then
            amixer -c 0 sset "$ALSA_VOL" "$(cat "$BACKUP_DIR/volume")" 2>/dev/null
        fi

        # Restore WiFi
        if [ -d "$BACKUP_DIR/wifi" ]; then
            cp -a "$BACKUP_DIR/wifi"/* /etc/NetworkManager/system-connections/ 2>/dev/null
            chmod 600 /etc/NetworkManager/system-connections/* 2>/dev/null
        fi

        log "Config restored from $BACKUP_DIR"
        ;;

    *)
        echo "Usage: archr-save-config {backup|restore}"
        ;;
esac
