This repository builds a UMU-owned Steam Runtime 3 (sniper) derivative without downloading Valve's prebuilt runtime image or runtime tarball.
Instead, it follows the same broad public pipeline Valve documents for Steam Runtime 3:
- fetch SteamRT metadata and source package references,
- optionally fetch and patch source packages,
- optionally rebuild selected packages,
- assemble a base runtime from the SteamRT apt repositories plus any locally rebuilt packages,
- export that filesystem into a
FROM scratchOCI image, - optionally run a second Dockerfile-based overlay stage that matches the old
umu-sdkcustomization model, - attach artifacts to a tagged GitHub release.
Valve says the official container runtimes and SDKs are built with flatdeb-steam, not with the scripts in steam-runtime, and that all software making up the Steam Runtime is available in source and binary form in repo.steampowered.com/steamrt. The public sniper snapshot also publishes manifest.dpkg, source-required.txt, Sources.gz, build IDs, and the sysroot Dockerfile. This project uses those public inputs and never downloads SteamLinuxRuntime_sniper.tar.xz or Platform-...-runtime.tar.gz.
- A source-visible pipeline.
- A patch point before package rebuilds.
- A package-assembled base image rather than a downloaded runtime image.
- Previous
umu-sdkcustomization preserved as an optional final overlay stage.
This is the closest public equivalent to Valve's pipeline that can be run in GitHub Actions with public artifacts. It is not a byte-for-byte clone of Valve's internal build farm, and it does not call Valve's private or undocumented infrastructure. The assembly step here uses the published SteamRT apt repository and the published package manifest to reconstruct the runtime package set.
config/sniper.env— snapshot pinning and repo settings.scripts/fetch-metadata.sh— downloads build metadata, manifests, source lists, andSources.gz.scripts/fetch-sources.sh— mirrors the source packages listed insource-required.txt.scripts/unpack-sources.sh— expands.dscsource packages for inspection and patching.patches/<source-package>/*.patch— optional patches, applied in lexical order.scripts/rebuild-patched-packages.sh— rebuilds only the source packages you patched, into a local apt repo.scripts/assemble-base.sh— assembles the base runtime image from packages, exports it, and emits aFROM scratchOCI image.docker/overlay.Dockerfile— optional old-style “take base image and layer our changes on top” stage.overlays/rootfs/— optional file overlay copied into the exported rootfs before the final image is built.scripts/hooks/post-extract.sh— optional shell customization hook after rootfs export.
Push a tag such as:
git tag -a v0.1.0 -m "v0.1.0"
git push origin v0.1.0The workflow will create release artifacts including:
- source metadata bundle,
- mirrored source package bundle,
- assembled base rootfs tarball,
- OCI archive for the base runtime image,
- OCI archive for the final overlaid runtime image,
SHA256SUMS.
Drop patch files in:
patches/bash/*.patch
patches/libdecor-0/*.patch
patches/steam-runtime-tools/*.patch
Only patched source packages are rebuilt locally. Everything else is installed from the pinned SteamRT apt repository, which keeps the pipeline practical for CI while still letting you inspect and modify sources where needed.