#!/usr/bin/env bash
# ==============================================================================
# Conduit Audio (www.conduit-audio.com) — Turnkey Server & Appliance Installer (v2.69.1)
# ==============================================================================
# Supports:
#   - Raspberry Pi OS Bookworm (64-bit aarch64 — RPi 4 & RPi 5)
#   - Debian 12 Bookworm / Ubuntu 24.04 LTS (x86_64 & aarch64)
# Usage:
#   curl -fsSL https://www.conduit-audio.com/install.sh | sudo bash
# ==============================================================================
set -euo pipefail

if [[ $EUID -ne 0 ]]; then
  echo "[ERROR] Please run install.sh as root (sudo)." >&2
  exit 1
fi

CONDUIT_USER="${CONDUIT_USER:-music}"
CONDUIT_HOME="/opt/conduit"
CONDUIT_DATA="/var/lib/conduit"
MUSIC_ROOT="/mnt/music"

echo "=================================================================="
echo "  Conduit Audio v2.69.1 — Turnkey Appliance Installer"
echo "=================================================================="

export DEBIAN_FRONTEND=noninteractive
apt-get update -qq
apt-get install -y --no-install-recommends \
  alsa-utils \
  avahi-daemon \
  bluetooth \
  bluez \
  ca-certificates \
  cifs-utils \
  curl \
  dosfstools \
  e2fsprogs \
  ffmpeg \
  jq \
  mpv \
  nfs-common \
  nginx \
  parted \
  rsync \
  snapserver \
  sqlite3 \
  sudo \
  util-linux

if ! id -u "$CONDUIT_USER" >/dev/null 2>&1; then
  useradd -r -m -d "$CONDUIT_HOME" -s /bin/bash -G audio,bluetooth,plugdev "$CONDUIT_USER"
else
  usermod -aG audio,bluetooth,plugdev "$CONDUIT_USER" || true
fi

mkdir -p "$CONDUIT_HOME/frontend/dist" "$CONDUIT_HOME/scripts" "$CONDUIT_DATA" "$MUSIC_ROOT"
chown -R "$CONDUIT_USER:$CONDUIT_USER" "$CONDUIT_HOME" "$CONDUIT_DATA" "$MUSIC_ROOT"

cat << EOF > /etc/sudoers.d/conduit-appliance
${CONDUIT_USER} ALL=(ALL) NOPASSWD: /bin/mount, /bin/umount, /usr/bin/hostnamectl, /usr/local/bin/conduit-storage-accelerate.sh, /bin/systemctl restart snapserver
EOF
chmod 0440 /etc/sudoers.d/conduit-appliance

cat << EOF > /etc/systemd/system/conduit-backend.service
[Unit]
Description=Conduit Audio Rust Server (v2.69.1)
After=network-online.target sound.target avahi-daemon.service snapserver.service
Wants=network-online.target

[Service]
Type=simple
User=${CONDUIT_USER}
Group=audio
WorkingDirectory=${CONDUIT_HOME}
Environment=RUST_LOG=info
Environment=MUSIC_DIR=${MUSIC_ROOT}
ExecStart=${CONDUIT_HOME}/conduit-backend
Restart=always
RestartSec=3
LimitNOFILE=65536
LimitMEMLOCK=infinity

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable avahi-daemon snapserver conduit-backend || true

echo "=================================================================="
echo "  Conduit Audio Appliance installation complete!"
echo "  Web UI & Setup Wizard: http://$(hostname).local:3000"
echo "=================================================================="
