OmniPackage documentation
Build and distribute signed RPM and DEB packages from your own repository.
OmniPackage is a CLI that drives the standard Linux packaging tools (rpmbuild, debuild, createrepo_c, dpkg-scanpackages, gpg, podman/docker) from a single config file, so one project repo can ship to many distros. Developers get one config and one release command; users get a generated install page with the usual four-line apt / dnf / zypper snippet. Updates flow through the distro's normal upgrade tools — no separate updater, no extra channel. See About for the longer motivation.
30-second example
omnipackage init .
echo "GPG_KEY=$(omnipackage gpg generate --name 'Your Name' --email you@example.com --format base64)" >> .env
# edit .omnipackage/config.yml — point repositories: at your bucket
omnipackage release .
Full walkthrough: Getting started.
Real-world projects
olegantonyan/mpz— Qt-based desktop music player. 31 build targets, Qt5/Qt6 split via YAML anchors, per-distro CMake flags, R2 with Cloudflare cache purges.omnipackage/omnipackage-rs— OmniPackage built with itself.before_build_scriptto install a current Rust toolchain on older distros, distro-packaged Rust on newer ones, dual GHCR caches for org and contributor-fork workflows.omnipackage/examples— minimal one-per-language templates (C, C++, CMake, Rust, Go, Python, Ruby, Crystal, Electron, Tauri).
See Examples for details.
Links
- omnipackage.org — project landing page
- GitHub — source, issues, releases
- Install OmniPackage — apt / dnf / zypper one-liners