After a couple of days with no response I managed to make it work
Native Installation of Sunshine on Fedora Silverblue (Bluefin) with setcap
Support
This guide will walk you through installing Sunshine natively (outside of Flatpak or Toolbox) on Fedora Silverblue or Bluefin, and enabling advanced features like virtual displays by setting Linux capabilities.
Step 1: Remove Old or Conflicting Versions
To avoid conflicts, remove any older versions of Sunshine (Flatpak, AppImage, Toolbox, etc.).
Remove Flatpak (if installed)
flatpak uninstall --delete-data com.lizardbyte.sunshine
flatpak uninstall com.lizardbyte.sunshine
Delete AppImage (if used)
rm ~/Downloads/sunshine*.AppImage
Exit Toolbox (if you’re in one)
exit
Step 2: Install Sunshine via Copr RPM on the Host System
Since sunshine
is not available in Fedora’s default repos, install it from the Copr repository.
Example for Fedora 40:
sudo dnf copr enable lizardbyte/beta
sudo rpm-ostree install Sunshine
### 🔁 Reboot to apply:
systemctl reboot
Step 3: Verify the Correct Binary Is Installed
After rebooting, confirm the correct version of Sunshine is installed and accessible:
which sunshine
readlink -f $(which sunshine)
sunshine --version
Expected output:
/usr/bin/sunshine
Step 4: Grant Required Linux Capability
Grant cap_sys_admin
so Sunshine can create virtual displays and manage low-level features:
sudo setcap cap_sys_admin+p /usr/bin/sunshine
Confirm it was set:
getcap /usr/bin/sunshine
Expected output:
/usr/bin/sunshine = cap_sys_admin+p
Step 5: Run Sunshine
You can now launch Sunshine:
sunshine
Or optionally configure it as a systemd service for background operation.
Run Sunshine as a User Systemd Service (Wayland + Audio)
Running Sunshine as a user systemd service allows it to launch automatically with your session and access your Wayland display and audio (PipeWire).
1. Create a Systemd User Service File
Run:
systemctl --user edit sunshine.service
Paste the following into the editor:
[Unit]
Description=Sunshine Game Streaming Server
After=graphical-session.target pipewire.service
Requires=graphical-session.target
[Service]
ExecStart=/usr/bin/sunshine
Restart=on-failure
Environment=PATH=/usr/bin:/usr/local/bin
Environment=XDG_RUNTIME_DIR=%t
Environment=WAYLAND_DISPLAY=wayland-0
Environment=DISPLAY=:0
Environment=PULSE_SERVER=unix:%t/pulse/native
[Install]
WantedBy=default.target
Save and exit the editor.
2. Enable and Start the Service
Enable the service to start at login:
systemctl --user enable sunshine.service
Start it immediately:
systemctl --user start sunshine.service
3. Check the Service Status
systemctl --user status sunshine.service
You should see active (running)
if everything is working correctly.
Notes
%t
expands to your runtime directory (e.g. /run/user/1000
), giving access to your Wayland session and PipeWire audio.
PULSE_SERVER
ensures Sunshine can connect to PipeWire’s PulseAudio server.
- Works seamlessly in Silverblue and Bluefin with PipeWire-based systems.