23bb814bac
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>
40 lines
1.9 KiB
Docker
40 lines
1.9 KiB
Docker
# 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
|