#!/usr/bin/env bash # Enable Sunshine as a systemd --user service and turn on lingering so it # runs at boot without a graphical login. enable_sunshine_service() { if ! systemctl --user list-unit-files sunshine.service >/dev/null 2>&1; then err "sunshine.service not found in user systemd units. Did the package install correctly?" return 1 fi if ! loginctl show-user "$USER" -p Linger --value 2>/dev/null | grep -qx yes; then info "Enabling user lingering (loginctl enable-linger $USER)" as_root loginctl enable-linger "$USER" else ok "User lingering already enabled" fi info "Enabling sunshine.service (user)" systemctl --user enable sunshine.service >/dev/null # Clear any prior start-limit state from a failed run so this attempt isn't # immediately rejected with "Start request repeated too quickly." systemctl --user reset-failed sunshine.service 2>/dev/null || true info "Starting sunshine.service (user)" # Restart so a re-run picks up new config / new caps. Tolerate first-launch races. systemctl --user restart sunshine.service || systemctl --user start sunshine.service || { err "Failed to start sunshine.service. Check: journalctl --user -u sunshine" return 1 } sleep 1 if systemctl --user is-active --quiet sunshine.service; then ok "sunshine.service is active" else warn "sunshine.service did not stay active. Inspect: journalctl --user -u sunshine -n 50" fi }