#!/bin/bash
set -e

# -----------------------------
# Config
# -----------------------------
BASE_URL="https://apt.oxmc.me/vesperos"
KEY_URL="https://apt.oxmc.me/public.gpg"
KEYRING="/usr/share/keyrings/oxmc-apt.gpg"
OUTPUT_MAIN="/etc/apt/sources.list.d/vesperos.list"
OUTPUT_SEC="/etc/apt/sources.list.d/vesperos-security.list"
DEFAULT_DISTRO="trixie"

# -----------------------------
# Detect distro codename
# -----------------------------
if [ -f /etc/os-release ]; then
    . /etc/os-release
    if [[ "$VERSION_CODENAME" == "trixie" || "$VERSION_CODENAME" == "bookworm" ]]; then
        DISTRO="$VERSION_CODENAME"
    else
        echo "Unsupported codename '$VERSION_CODENAME'. Defaulting to '$DEFAULT_DISTRO'."
        DISTRO=$DEFAULT_DISTRO
    fi
else
    DISTRO=$DEFAULT_DISTRO
fi

# -----------------------------
# Detect architecture & platform
# -----------------------------
ARCH=$(dpkg --print-architecture 2>/dev/null || uname -m)
MODEL=$(tr -d '\0' < /proc/device-tree/model 2>/dev/null || echo "Unknown")
RPi=false
COMPONENTS="main"

if [[ "$MODEL" != "Unknown" ]]; then
    # Raspberry Pi path
    RPi=true
    COMPONENTS="main rpi"
    case "$MODEL" in
        *"Raspberry Pi 3"*)             COMPONENTS="$COMPONENTS rpi3" ;;
        *"Raspberry Pi 4"*)             COMPONENTS="$COMPONENTS rpi4" ;;
        *"Raspberry Pi 5"*)             COMPONENTS="$COMPONENTS rpi5" ;;
        *"Compute Module 4"*|\
        *"Compute Module 5"*)           COMPONENTS="$COMPONENTS rpi-compute-modern" ;;
        *)                              echo "Unknown Pi model. Using common 'rpi' repo only." ;;
    esac
else
    # Generic/PC path — append arch-specific component if we have one
    case "$ARCH" in
        amd64|x86_64)   COMPONENTS="$COMPONENTS amd64" ;;
        arm64|aarch64)  COMPONENTS="$COMPONENTS arm64" ;;
        armhf)          COMPONENTS="$COMPONENTS armhf" ;;
        i386)           COMPONENTS="$COMPONENTS i386" ;;
        *)              echo "Unknown architecture '$ARCH'. Using 'main' only." ;;
    esac
fi

echo "Detected model : $MODEL"
echo "Architecture   : $ARCH"
echo "Components     : $COMPONENTS"
echo "Distro         : $DISTRO"

# -----------------------------
# Add GPG key
# -----------------------------
echo "Adding GPG key..."
sudo mkdir -m 0755 -p "$(dirname "$KEYRING")"
wget -qO- "$KEY_URL" | gpg --dearmor | sudo tee "$KEYRING" > /dev/null
sudo chmod 644 "$KEYRING"

# -----------------------------
# Generate main sources.list
# -----------------------------
echo "Generating $OUTPUT_MAIN..."
echo "deb [arch=$ARCH signed-by=$KEYRING] $BASE_URL $DISTRO $COMPONENTS" | sudo tee "$OUTPUT_MAIN" > /dev/null

# -----------------------------
# Generate security sources.list
# -----------------------------
SEC_COMPONENTS="$COMPONENTS system"
echo "Generating $OUTPUT_SEC..."
echo "deb [arch=$ARCH signed-by=$KEYRING] $BASE_URL ${DISTRO}-security $SEC_COMPONENTS" | sudo tee "$OUTPUT_SEC" > /dev/null

# -----------------------------
# Update apt
# -----------------------------
echo "Updating APT..."
sudo apt update

echo "Done. Added VesperOS repositories for $DISTRO ($ARCH) with components: $COMPONENTS"
