Multi-Distro Porting Guide
Package translation matrices, dependencies, and build requirements for all major Linux distributions.
Distribution Dependency Matrix#
SolarFlare compiles natively across Arch, Debian, Ubuntu, Fedora, and openSUSE. Package names for dependencies are translated below:
| Component | Arch / CachyOS | Debian / Ubuntu | Fedora / Nobara | openSUSE |
|---|---|---|---|---|
| Compiler | base-devel (GCC 14+) | build-essential (GCC 13+) | gcc-c++ | gcc-c++ |
| Build System | cmake ninja | cmake ninja-build | cmake ninja-build | cmake ninja |
| Audio | libpipewire libpulse | libpipewire-0.3-dev libpulse-dev | pipewire-devel pulseaudio-libs-devel | pipewire-devel libpulse-devel |
| Video / DRM | libdrm libva | libdrm-dev libva-dev | libdrm-devel libva-devel | libdrm-devel libva-devel |
| Wayland Protocols | wayland-protocols libportal | wayland-protocols libportal-dev | wayland-protocols-devel libportal-devel | wayland-protocols-devel libportal-devel |
| Opus DSP | opus | libopus-dev | opus-devel | opus-devel |
| FFmpeg Codecs | ffmpeg | ffmpeg | ffmpeg-devel | ffmpeg-devel |
| Vulkan SDK | vulkan-headers | vulkan-headers / vulkan-sdk | vulkan-devel | vulkan-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.
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 switchBazzite 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.
./scripts/linux-install.sh
sudo systemctl reboot
./scripts/linux-install.sh --skip-depsCUDA, 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.