Examples
Minimal single-purpose projects live in the examples repo, one per language/build-system combo: c_makefile, crystal, electron, go, python, ruby, rust, tauri, c_with_secrets. Each ships a ready-to-use .omnipackage/config.yml and a README.
Real-world projects
Larger configs that exercise more of OmniPackage end-to-end — many distros, per-distro overrides, GitHub Actions, signing, S3:
mpz
olegantonyan/mpz — a Qt-based desktop music player (C++/CMake). The .omnipackage/config.yml demonstrates:
- 31 build targets across openSUSE, Debian, Ubuntu, Fedora, AlmaLinux, RockyLinux, Mageia.
- 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) and DEB templates folder (.omnipackage/deb). - 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 solves a different problem: shipping a Rust binary on distros whose packaged Rust 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) 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"]. 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 reading the version straight fromCargo.toml.- Matching GitHub Actions workflows in
.github/workflows. The shape mirrors mpz; the differences (an extrabootstrap-binaryjob that builds the binary from source) are specific to OmniPackage building itself.
Either project is a fair starting point — copy mpz for many-distro setups with YAML anchors, copy omnipackage-rs for bootstrapping a toolchain inside the build container.