#!/bin/bash # rc.mpd - Music Player Daemon for Slackware # Only starts if /mnt/media is mounted (NFS share must be available) MPD=/usr/bin/mpd CONF=/home/green/.config/mpd/mpd.conf PIDFILE=/var/run/mpd/mpd.pid start() { if [ -f "$PIDFILE" ] && kill -0 "$(cat $PIDFILE)" 2>/dev/null; then echo "mpd is already running" return fi echo "Starting mpd..." mkdir -p /var/run/mpd chown green:users /var/run/mpd # Ensure user runtime dir exists (normally created by pam_systemd on login, # but we start before login so we create it manually) mkdir -p /run/user/1000 chown green:users /run/user/1000 chmod 700 /run/user/1000 # Wait for Tailscale to have connectivity to tower specifically echo "Waiting for Tailscale connectivity to tower..." for i in $(seq 1 30); do tailscale ping --c 1 100.73.64.64 &>/dev/null && break sleep 1 done # Now trigger autofs mount echo "Waiting for /mnt/media/Music..." for i in $(seq 1 15); do ls /mnt/media/Music &>/dev/null && break sleep 1 done if ! ls /mnt/media/Music &>/dev/null; then echo "WARNING: /mnt/media/Music not accessible after wait, starting MPD anyway" fi sudo -u green XDG_RUNTIME_DIR=/run/user/1000 $MPD $CONF echo "mpd started" } stop() { if [ -f "$PIDFILE" ] && kill -0 "$(cat $PIDFILE)" 2>/dev/null; then echo "Stopping mpd..." sudo -u green $MPD --kill $CONF else echo "mpd is not running" fi } status() { if [ -f "$PIDFILE" ] && kill -0 "$(cat $PIDFILE)" 2>/dev/null; then echo "mpd is running (pid $(cat $PIDFILE))" else echo "mpd is not running" fi } case "$1" in start) start ;; stop) stop ;; restart) stop; sleep 1; start ;; status) status ;; *) echo "Usage: $0 {start|stop|restart|status}" ;; esac