feat(packaging): Fedora/Bazzite packaging — COPR RPM, bootc image, gamescope-default config
Roadmap #3 (install on other devices). Bazzite already ships gamescope + PipeWire + the NVIDIA stack, so the host slots in with minimal new deps (ffmpeg-libs from RPM Fusion + opus + libei). - packaging/rpm/punktfunk.spec — builds punktfunk-host from source (cargo), installs the binary + udev rule + systemd user unit + headless helpers; Requires/Recommends mapped from the Ubuntu bootstrap deps to Fedora. - packaging/bootc/Containerfile — layer punktfunk into a bazzite-nvidia bootc image for atomic, image-based installs. - packaging/bazzite/host.env — gamescope-default appliance config (spawned per session). - packaging/copr/ + packaging/README.md — COPR build-from-SCM settings + install docs (rpm-ostree and bootc paths), and why not Flatpak. - LICENSE-MIT + LICENSE-APACHE — materialize the declared `MIT OR Apache-2.0` (was unfiled); the RPM ships them. Not buildable on the Ubuntu dev box (no rpm tooling) — the COPR/Fedora build is operator-run; all spec-referenced files verified present and the cargo build is green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
# bootc / OCI image layer that bakes punktfunk into a Bazzite-based atomic image.
|
||||
#
|
||||
# Bazzite is already a bootc image (Fedora Atomic + gamescope + PipeWire + the NVIDIA
|
||||
# stack), so we layer punktfunk on top: enable RPM Fusion (for the NVENC ffmpeg) and our
|
||||
# COPR, install the package, and pre-enable the udev rule. Build + push this image, then
|
||||
# `bootc switch` (or rebase) a Bazzite host onto it for an image-based, atomic install —
|
||||
# no per-host `rpm-ostree install` drift.
|
||||
#
|
||||
# podman build -t ghcr.io/<you>/bazzite-punktfunk -f packaging/bootc/Containerfile .
|
||||
# podman push ghcr.io/<you>/bazzite-punktfunk
|
||||
# # on the target Bazzite host:
|
||||
# sudo bootc switch ghcr.io/<you>/bazzite-punktfunk # then reboot
|
||||
#
|
||||
# Pick the base tag that matches your hardware (NVIDIA shown). See ublue-os/bazzite tags.
|
||||
ARG BASE_IMAGE=ghcr.io/ublue-os/bazzite-nvidia:stable
|
||||
FROM ${BASE_IMAGE}
|
||||
|
||||
# COPR project that hosts the punktfunk RPM (see packaging/copr/README). Override at build.
|
||||
ARG PUNKTFUNK_COPR=enricobuehler/punktfunk
|
||||
|
||||
# RPM Fusion nonfree provides the NVENC-capable ffmpeg-libs punktfunk records/encodes with.
|
||||
# (Bazzite usually has RPM Fusion enabled already; this is belt-and-suspenders.)
|
||||
RUN dnf5 -y install \
|
||||
https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm \
|
||||
https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm \
|
||||
|| true
|
||||
|
||||
# Enable our COPR and install punktfunk.
|
||||
RUN dnf5 -y copr enable ${PUNKTFUNK_COPR} && \
|
||||
dnf5 -y install punktfunk && \
|
||||
dnf5 -y copr disable ${PUNKTFUNK_COPR} && \
|
||||
dnf5 clean all
|
||||
|
||||
# The udev rule + systemd *user* unit ship in the RPM; nothing else to enable at image
|
||||
# build time (the host runs per-user in the graphical session, enabled with
|
||||
# `systemctl --user enable --now punktfunk-host` after first boot).
|
||||
|
||||
# bootc image hygiene: the container build must leave a clean ostree commit.
|
||||
RUN ostree container commit
|
||||
Reference in New Issue
Block a user