Skip to content

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 right build_dependencies and, for Qt5, passes CMAKE_EXTRA_CLI: "-DUSE_QT5=ON".
  • runtime_dependencies for Qt5 multimedia plugins on Debian-family distros.
  • Two version_extractors: a shell extractor producing 2.99~next.<timestamp>.<sha> for the rolling channel, and a file extractor that pulls the stable version from CMakeLists.txt via regex.
  • Custom RPM spec (mpz.spec.liquid) and DEB templates folder (.omnipackage/deb).
  • Cloudflare R2 with cloudflare_zone_id / cloudflare_api_token for 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.sh on 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-packaged rust / 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 needs export CC=gcc-10 because the default compiler is too old for some dependencies.
  • Two image_caches pointing at the same GHCR registry under different namespaces (org vs. personal) — for builds from forks or contributor accounts.
  • cargotoml version extractor reading the version straight from Cargo.toml.
  • Matching GitHub Actions workflows in .github/workflows. The shape mirrors mpz; the differences (an extra bootstrap-binary job 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.