The Windows install expressed GameStream as `serve --gamestream` in host.env's PUNKTFUNK_HOST_CMD. A CLI flag pins the setting, so the web console showed GameStream locked and could not turn it off. `service install --gamestream=on|off` now writes the GameStream setting to host-settings.json. A host command of `serve --gamestream`, or none (which ran that), becomes `serve` with GameStream stored on, so no upgrade turns it off. The store is written before host.env. A custom command stays, with a notice when it still passes the flag. A fresh host.env names `serve` explicitly. Refs #867
packaging
How each shipped artifact is built and published. Installing Punktfunk is
the docs site's job — it generates every install
command from the canonical data/platforms.json, so a fourth copy
here would be the one that
drifts. These files are the maintainer's half: what CI runs, how each package is signed, and the
traps in each ecosystem.
| Directory | Ships | Built by |
|---|---|---|
debian/ |
punktfunk-host + client .deb (apt registry) |
deb.yml |
rpm/ |
the RPM (Gitea RPM registry) | rpm.yml |
copr/ |
COPR build-from-SCM settings | COPR |
arch/ |
pacman binary repo, PKGBUILD, the SteamOS sysext | arch.yml |
bazzite/ |
the systemd-sysext image and host.env for an appliance |
rpm.yml |
bootc/ |
Containerfile to bake the host into an atomic image |
— |
flatpak/ |
the client Flatpak and its hosted repo | flatpak.yml |
nix/ |
the flake's packages and the services.punktfunk module |
nix.yml |
windows/ |
the host installer, pf-vdisplay and the gamepad drivers |
windows-host.yml, windows-drivers.yml |
winget/ |
winget manifests and the REST source | windows-host.yml |
gamescope/ |
punktfunk-gamescope, patched for 10-bit HDR PipeWire capture |
deb.yml |
linux/, kde/ |
desktop entries, udev rules, firewall profiles, host.env presets |
the distro packages |
The Windows client packages from clients/windows/packaging/,
not here.
Why the host is not a Flatpak
The host needs the zero-copy encode path, /dev/uinput, the PipeWire graph and the compositor's
privileged protocols. A sandbox fights all four. The client is a different case and is a
Flatpak — it needs only the GPU render node, Wayland, PipeWire audio, the network and hidraw, all
expressible as finish-args, and SteamOS's read-only /usr leaves no other option on a Deck.