#!/usr/bin/env bash

##
# installs systemd files to keep NOSE running on your NOSEputer

set -euo pipefail

SERVICE_NAME="nose-pluto"
SERVICE_FILE="$(dirname "$0")/${SERVICE_NAME}.service"
SYSTEMD_PATH="/etc/systemd/system/${SERVICE_NAME}.service"
BUN_SYMLINK="/usr/local/bin/bun"
BUN_REAL="$HOME/.bun/bin/bun"

echo ">> Updating system libraries"
sudo apt-get update
sudo apt-get install -y libcap2-bin
sudo apt-get install -y avahi-utils

echo ">> Ensuring bun is available in /usr/local/bin"
if [ ! -x "$BUN_SYMLINK" ]; then
  if [ -x "$BUN_REAL" ]; then
    sudo ln -sf "$BUN_REAL" "$BUN_SYMLINK"
    echo "Symlinked $BUN_REAL -> $BUN_SYMLINK"
  else
    echo ">> Installing bun at $BUN_REAL"
    sudo apt install unzip
    curl -fsSL https://bun.com/install | bash
    sudo ln -sf "$BUN_REAL" "$BUN_SYMLINK"
    echo "Symlinked $BUN_REAL -> $BUN_SYMLINK"
  fi
else
  echo "bun already available at $BUN_SYMLINK"
fi

echo ">> Setting CAP_NET_BIND_SERVICE on $BUN_REAL"
sudo setcap 'cap_net_bind_service=+ep' "$BUN_REAL"
/usr/sbin/getcap "$BUN_REAL" || true

echo ">> Installing systemd unit to $SYSTEMD_PATH"
sudo cp "$SERVICE_FILE" "$SYSTEMD_PATH"
sudo chown root:root "$SYSTEMD_PATH"
sudo chmod 644 "$SYSTEMD_PATH"

echo ">> Reloading systemd daemon"
sudo systemctl daemon-reload

echo ">> Enabling $SERVICE_NAME to start at boot"
sudo systemctl enable "$SERVICE_NAME"

echo ">> Starting (or restarting) $SERVICE_NAME"
sudo systemctl restart "$SERVICE_NAME"

echo ">> Enabling kiosk mode"
mkdir -p ~/.config/labwc
cat > ~/.config/labwc/autostart <<'EOF'
chromium-browser --noerrdialogs --disable-infobars --kiosk http://localhost
EOF

echo ">> Done! Rebooting!"
systemctl status "$SERVICE_NAME" --no-pager -l
sudo nohup reboot >/dev/null 2>&1 &
exit 0