On this page
Developer & APILinux

Multi-Distro Porting Guide

Package translation matrices, dependencies, and build requirements for all major Linux distributions.

6 min readUpdated August 2026

Distribution Dependency Matrix#

SolarFlare compiles natively across Arch, Debian, Ubuntu, Fedora, and openSUSE. Package names for dependencies are translated below:

ComponentArch / CachyOSDebian / UbuntuFedora / NobaraopenSUSE
Compilerbase-devel (GCC 14+)build-essential (GCC 13+)gcc-c++gcc-c++
Build Systemcmake ninjacmake ninja-buildcmake ninja-buildcmake ninja
Audiolibpipewire libpulselibpipewire-0.3-dev libpulse-devpipewire-devel pulseaudio-libs-develpipewire-devel libpulse-devel
Video / DRMlibdrm libvalibdrm-dev libva-devlibdrm-devel libva-devellibdrm-devel libva-devel
Wayland Protocolswayland-protocols libportalwayland-protocols libportal-devwayland-protocols-devel libportal-develwayland-protocols-devel libportal-devel
Opus DSPopuslibopus-devopus-developus-devel
FFmpeg Codecsffmpegffmpegffmpeg-develffmpeg-devel
Vulkan SDKvulkan-headersvulkan-headers / vulkan-sdkvulkan-develvulkan-devel

Distribution-Specific Details#

Use the tabs for distro quirks. The matrix above lists package names.

Arch provides current GCC 14+ and kernel 6.x. scripts/cachyos-build.sh forwards to linux-install.sh. Confirm cap_sys_admin after install.

NixOS declarative block#

NixOS never uses apt/dnf. Enter the repo Nix shell (it installs into ~/.local with units under ~/.config/systemd/user), export ~/.local/bin onto PATH, and apply the host-side NixOS settings (uinput device, video group membership, firewall ports) with nixos-rebuild switch. The imperative redesign boot units are skipped on NixOS — express CPU governor, ethtool, and NVIDIA tuning declaratively instead.

bash
nix-build packaging/linux/nixos/shell.nix --out-link ~/.local/share/solarflare/build-environment
SOLARFLARE_NIX_SHELL=1 nix-shell packaging/linux/nixos/shell.nix --run "./scripts/linux-install.sh $@"
export PATH="$HOME/.local/bin:$PATH"
sudo nixos-rebuild switch

Bazzite two-pass install#

rpm-ostree layering cannot finish live: the first installer pass layers the toolchain and then stops with REBOOT REQUIRED. Reboot, then re-run with --skip-deps to compile against the layered packages.

bash
./scripts/linux-install.sh
sudo systemctl reboot
./scripts/linux-install.sh --skip-deps

CUDA, packaging & verification#

Vulkan encode needs vulkan-devel plus shaderc. CUDA builds add -DSUNSHINE_ENABLE_CUDA=ON with CMAKE_CUDA_COMPILER pointing at nvcc; keep CUDA_FAIL_ON_MISSING=ON so a silent CPU-only binary never ships by accident. Package with cpack (DEB/RPM), the AppImage AppDir flow, or flatpak build-bundle; Arch uses SUNSHINE_CONFIGURE_PKGBUILD. Verify every port the same way: getcap shows both capabilities, curl -k reports 401, and sunshine --version prints the Fork: SolarFlare line.