Examples
Minimal single-purpose projects live in the examples repo, one per language/build-system combination: c_makefile, crystal, electron, go, python, ruby, rust, tauri, c_with_secrets. Each ships a ready-to-use .omnipackage/config.yml (RPM, DEB, and pacman targets) and a README.
Real-world projects
Larger configs that exercise more of OmniPackage — many distros, per-distro overrides, GitHub Actions, signing, S3:
mpz
olegantonyan/mpz — a Qt desktop music player (C++/CMake). The .omnipackage/config.yml demonstrates:
- 35 build targets across openSUSE, Debian, Ubuntu, Fedora, AlmaLinux, RockyLinux, Mageia, Arch, and Manjaro.
- Per-distro Qt version split via YAML anchors (
*debian_qt5/*debian_qt6,*readhat_qt5/*readhat_qt6). Each anchor sets the rightbuild_dependenciesand, for Qt5, passesCMAKE_EXTRA_CLI: "-DUSE_QT5=ON". runtime_dependenciesfor Qt5 multimedia plugins on Debian-family distros.- Two
version_extractors: a shell extractor producing2.99~next.<timestamp>.<sha>for the rolling channel, and afileextractor that pulls the stable version fromCMakeLists.txtvia regex. - Custom RPM spec (
mpz.spec.liquid), DEB templates directory (.omnipackage/deb), and pacmanPKGBUILD(.omnipackage/PKGBUILD.liquid) — Arch/Manjaro build against Qt6 via a shared*pacmananchor. - Cloudflare R2 with
cloudflare_zone_id/cloudflare_api_tokenfor cache purges after each publish. - Matching GitHub Actions workflows in
.github/workflows— the reference setup the CI/CD guide walks through.
omnipackage-rs
omnipackage/omnipackage-rs — OmniPackage built with itself. The .omnipackage/config.yml addresses a different problem: shipping a Rust binary on distros whose packaged toolchain is too old.
before_build_script: .omnipackage/install_rust.shon older distros (Debian 11/12, Ubuntu 20.04, openSUSE Leap, AlmaLinux, RockyLinux) installs a current toolchain via rustup before the build. Newer distros (Fedora 41+, openSUSE Tumbleweed, Arch, Manjaro) skip the script and use distro-packagedrust/cargo.- Cross-format
runtime_dependencies— DEB pipe-OR["podman | docker", "gpg"]and RPM rich deps["(podman or docker)", "gpg"]. pacmandependscan't express alternatives, so it hard-depends["gnupg", "podman"](docker viaoptdepends). Same intent, different syntax. - Per-distro
ENV_EXPORTS— Ubuntu 20.04 needsexport CC=gcc-10because the default compiler is too old for some dependencies. - Two
image_cachespointing at the same GHCR registry under different namespaces (org vs. personal) — for builds from forks or contributor accounts. cargotomlversion extractor reads the version directly fromCargo.toml.- Matching GitHub Actions workflows in
.github/workflows. The shape mirrors mpz; the difference — an extrabootstrap-binaryjob that builds the binary from source — is specific to OmniPackage building itself.
Either project is a reasonable starting point: copy mpz for many-distro setups with YAML anchors, copy omnipackage-rs for bootstrapping a toolchain inside the build container.