SmartestHome/hosts/thin-client/live-build/config/hooks/normal/0500-spotify-connect.hook.c...

40 lines
1.7 KiB
Bash
Executable File

#!/bin/sh
# Headless Spotify Connect receiver (project-plan Phase 11.6).
#
# Neither spotifyd nor librespot is in Debian bookworm main, so this hook tries apt
# first (in case a backport/third-party repo has been added) and otherwise stops at a
# documented placeholder. No release URL is hardcoded on purpose: pinning a version
# here would silently 404 the moment upstream moves a tag, which is worse than an
# explicit "do this by hand" message.
set -eu
INSTALLED=""
for pkg in spotifyd librespot; do
if apt-get install -y --no-install-recommends "$pkg" 2>/dev/null; then
INSTALLED="$pkg"
break
fi
done
if [ -z "$INSTALLED" ]; then
echo "0500-spotify-connect: neither spotifyd nor librespot is available from the"
echo " configured apt sources. Spotify Connect will NOT work on this image."
echo " To add it, pick one and re-run the build with the step filled in here:"
echo " a) fetch a release binary from https://github.com/Spotifyd/spotifyd/releases"
echo " (check the current tag yourself) into /usr/local/bin/spotifyd, or"
echo " b) cargo-build librespot in a build hook, or"
echo " c) add a third-party apt repo that carries it."
echo " Then drop a spotifyd.service unit in and enable it. Spotify Premium is required."
exit 0
fi
echo "0500-spotify-connect: installed ${INSTALLED} from apt."
# Runs as the kiosk user so its MPRIS interface lands on the same session bus that
# playerctl (and therefore thinclient-agent's media_player entity) reads.
if [ "$INSTALLED" = "spotifyd" ]; then
systemctl enable spotifyd 2>/dev/null || \
echo "0500-spotify-connect: no packaged spotifyd unit; enable it by hand after configuring /etc/spotifyd.conf."
fi