Packaging
Build distributable Linux packages with one script:
scripts/package.sh all # .deb + .rpm + .AppImage → dist/
scripts/package.sh deb # just the .deb
scripts/package.sh rpm
scripts/package.sh appimage
It builds the release binary once and reuses it for every format,
installing cargo-deb / cargo-generate-rpm on demand and downloading
appimagetool to dist/tools/ on first AppImage build. Per-format
failures are isolated and summarized at the end. Output (gitignored)
lands in dist/.
Formats
.deb— built by cargo-deb from[package.metadata.deb]inCargo.toml..rpm— built by cargo-generate-rpm from[package.metadata.generate-rpm]. (ffmpegon Fedora is in RPM Fusion.)- AppImage — a hand-rolled AppDir + appimagetool. Bundles the GUI
binary’s shared-library closure only;
yt-dlp/ffmpeg/mpvstay host PATH deps, same as the package declarations. - Arch — use the repo’s
PKGBUILD(not this script); runmakepkgfrom a clean directory.
CI
The repo ships .forgejo/workflows/ definitions (test.yml,
release.yml), but Codeberg executes Woodpecker rather than Forgejo
Actions — so they don’t run there without a self-hosted runner. Until
then, build packages locally with scripts/package.sh and publish docs
with scripts/publish-docs.sh.
The repo’s docs/PACKAGING.md
has the per-distro install commands and the Windows/macOS status in full.