quarry — main
Clone: git clone https://src.thepeoples.io/quarry/.git
Contents
README.md
# Quarry
Quarry defines **bootc** desktop and server images for publication on
`oci.thepeoples.io` through the platform signing workflow. Product names:
- **Quarry** — default non-gaming Plasma desktop (`desktop/quarry`)
- **Quarry Gaming Edition** — Steam/Gamescope on that desktop (`desktop/quarry-gaming`; handheld/HTPC/NVIDIA profiles planned)
- **Quarry Server Edition** — headless bootc (`desktop/quarry-server-*`)
- **Quarry Core Edition** — shared trunk per base family (`desktop/quarry-core-*`)
Quarry OS editions use bootc; a general package-managed host support track
is outside scope. Hypervisor is a separate planned bootc edition. Application
container bases are deferred to existing alternatives; any future Quarry
offering needs a separate product decision. Current cores are bootable OS
build bases. Pi 5 media remains deferred to LibreELEC. See
[`docs/design.md`](docs/design.md) for the boundaries and validation gates.
Server service combinations should use opt-in features on a qualified image
rather than a separate image for each combination. Server images implement
queryable, reversible rootless container hosting through `quarry feature`;
K3s remains planned. See [`docs/server-features.md`](docs/server-features.md)
for commands, ownership, compatibility limits and qualification evidence.
**Architecture:** default desktop = authentic Fedora bootc →
`quarry-core-fedora` → desktop overlay. **Gaming Edition is based on that
desktop** (`FROM` Quarry / same stage chain) and adds a gaming
stack *inspired by* Bazzite — **no ublue/Bazzite OCI image as `FROM`.**
## What it is
- Non-gaming Plasma on Fedora bootc (`Containerfile.desktop-fedora`) with
Quarry branding baked (hostname `quarry`, Breeze Dark, Kickoff icon).
- **Quarry Gaming Edition** layered on that desktop (`Containerfile.gaming-fedora` + `build_files/gaming-fedora/`),
with Game Mode (Steam + Gamescope), GameMode, MangoHUD, multilib graphics,
Wine/Protontricks and Plasma desktop mode.
- Desktop and server definitions for Fedora, Debian and openSUSE. Debian
remains experimental and blocked on its upstream package inventory;
openSUSE has strict build/maintenance validation. See
[`docs/base-maintenance.md`](docs/base-maintenance.md).
- A written desktop policy an agent can extend when the next KDE app is
replaced.
- Gitea Actions on label `desktop-quarry` (`quarry-builder-01`).
## What it is not
- An image `FROM ghcr.io/ublue-os/bazzite` (or any ublue OCI).
- A git fork of `ublue-os/bazzite`. Do not clone that repo to work here.
- A rebase of any running machine.
- Aurora, Kalpa, Bluefin, or a GNOME variant.
- Homebrew. CLI tools use Mise.
- Docker Engine on the base image. Podman is native.
- A mascot project.
## Desktop defaults
| Topic | Quarry |
| --- | --- |
| App store | Plasma Discover (Flatpak); not Bazaar |
| Terminal | **Konsole** default; optional Ghostty source Flatpak is private/held |
| CLI tools | **Mise** (never Homebrew on the base) |
| Containers | **Podman** only; Docker CLI is opt-in |
| Fonts | **Adwaita Sans** / **Adwaita Mono** |
| Theme | Breeze Dark; Kickoff icon = Quarry mark |
| Hostname | `quarry` |
Full policy: [`docs/desktop-policy.md`](docs/desktop-policy.md).
## Catalog
**Product page (primary):** [thepeoples.io/projects/quarry](https://thepeoples.io/projects/quarry/) — install, features, flavors, verify.
**Source (secondary):** [src.thepeoples.io/quarry](https://src.thepeoples.io/quarry/) (after snapshot publish).
Gaming's public target is `oci.thepeoples.io/desktop/quarry-gaming:stable`;
the default desktop target is `oci.thepeoples.io/desktop/quarry`.
CI builds candidates with `git-<sha7>` tags. Publication requires an explicit
manual Fedora gate. Qualified openSUSE core/desktop/server candidates use the existing
manual platform publisher; Debian publication stays blocked. Native openSUSE
desktop qualification is recorded in [the receipt](docs/opensuse-desktop-qa.json);
each installer ISO has a separate complete edition matrix.
These targets do not establish that a particular commit has built or published.
See [`docs/consume.md`](docs/consume.md) for verification and the public key.
Current candidate digests, VM evidence and remaining release gates are recorded
in [`docs/release-qualification.md`](docs/release-qualification.md).
Shape A releases: git tag `20260910` → [src.thepeoples.io/projects/desktop-quarry/releases/20260910/](https://src.thepeoples.io/projects/desktop-quarry/releases/20260910/) (binds the tagged commit to the live `:stable` digest).
## Docs
- [`docs/design.md`](docs/design.md) — goals, non-goals, base image, build/publish, installer spike
- [`docs/roadmap.md`](docs/roadmap.md) — planned future work (aarch64/Apple Silicon, 2008 MacBook Pro)
- [`docs/ci-runners.md`](docs/ci-runners.md) — LAN host runner (`quarry-builder-01`, unit `act-runner-desktop-quarry.service`)
- [`docs/consume.md`](docs/consume.md) — pull from public OCI; `bootc switch` only on a throwaway VM
- [Strict cosign consumer repair](docs/strict-cosign-1126.md) — transparency-log failures stop update/install/QA paths; old publications still need repair
- [`docs/verifier-watch-1124.md`](docs/verifier-watch-1124.md) — independent owned-verifier release/advisory monitoring and pending main activation; no artifact qualification
- [`docs/release-qualification.md`](docs/release-qualification.md) — current candidate publication and edition qualification gates
- [`docs/consume-gate.md`](docs/consume-gate.md) — historical VM 141 record + current VM roles
- [`docs/consume-media.md`](docs/consume-media.md) — Media Edition **deferred**; use LibreELEC on Pi 5; paper kept as stack-ownership research
- [`docs/installer.md`](docs/installer.md) — live network installer, supported scope and release gates
- [`docs/cloud-images.md`](docs/cloud-images.md) — native Fedora/openSUSE server QCOW2, NoCloud provisioning and independent qualification
- [`docs/iso-strategy.md`](docs/iso-strategy.md) — direct deployment, mirror trust and future media work
- [`docs/iso-spike.md`](docs/iso-spike.md) — historical September installer experiment
- [`docs/variant-model.md`](docs/variant-model.md) — lines / bases / profiles / DE taxonomy
- [`docs/core-bases.md`](docs/core-bases.md) — shared `quarry-core-*` trunks + layer DAG
- [`docs/flavors.md`](docs/flavors.md) — server/desktop × base matrix
- [`docs/desktop-environment-variants.md`](docs/desktop-environment-variants.md) — desktop environment policy across the three bases
- [`docs/desktop-policy.md`](docs/desktop-policy.md) — Bazaar/Discover/Konsole/Ghostty and the KDE-app replacement pattern
- [`docs/tooling.md`](docs/tooling.md) — Mise, Flatpak/AppImage/Distrobox, Podman, service install paths for Tailscale/Sunshine
- [`docs/ca-distrust.md`](docs/ca-distrust.md) — maintained cross-base CA blocklist, browser enforcement, tests, and known gaps
- [`docs/brand.md`](docs/brand.md) — name, artwork direction, no mascot
- [`AGENTS.md`](AGENTS.md) — short rules for future agents
## Build
Local, on a machine with Podman (not by rebasing the builder):
```bash
# Fedora core → desktop/server → gaming, in dependency order:
EXPORT_OCI=0 EDITION_BASE=fedora bash scripts/image-build-editions.sh
# Or build the layers individually:
just build-core-fedora
just build-desktop
just build
# Fedora server also needs the core tag:
just build-server
```
CI: [`.gitea/workflows/image-build.yml`](.gitea/workflows/image-build.yml)
builds Fedora core → desktop/server → gaming on `desktop-quarry`. Push and
weekly builds validate; manual `publish=true` stages OCI layouts and dispatches
platform `publish-oci-registry` to `oci.thepeoples.io` with OpenBao cosign.
[Experimental CI](.gitea/workflows/image-build-experimental.yml) covers Debian
and openSUSE core/desktop/server independently without automatic publication.
The qualified native openSUSE core/desktop/server exports have been manually published;
see [`docs/opensuse-ostree-qa.json`](docs/opensuse-ostree-qa.json).
Debian reports its known maintenance blocker as a failing gate. A successful CI push is required before calling a new
image built, signed, or ready to consume. See
[`docs/ci-runners.md`](docs/ci-runners.md) and
[`docs/consume.md`](docs/consume.md).
Live network installer: [`docs/installer.md`](docs/installer.md). `just iso-validate` validates the scripts; a manual Gitea ISO build produces retained media. Publication requires qualification of the exact ISO for every offered edition.
## Layout
```
Containerfile.core-{fedora,debian,opensuse} # shared trunks
Containerfile.desktop-{fedora,debian,opensuse} # desktops FROM matching cores
Containerfile.gaming-fedora # gaming FROM desktop
Containerfile.server-{fedora,debian,opensuse} # server FROM matching core
Containerfile.installer-fedora # live network installer
Containerfile.gaming-fedora-{deck,nvidia} # paper profile stubs
build_files/<edition>-<base>/ # matching build scripts
artwork/ # brand source (icon, wallpaper, plymouth)
system_files/ # overlay files; assets alone do not prove defaults
recipes/recipe.yml # desktop policy map; not compiled by CI
.gitea/workflows/ # Gitea Actions
docs/ # policy and dated evidence
```
Containerfiles use `Containerfile.<edition>-<base>`, with an optional
`-<profile>` suffix. Build directories follow the same edition/base order.
`debian` is written in full; `opensuse` follows the edition. Always pass
`-f` when building directly. Published OCI names remain the product names
listed above; local build names may include the base family.
## Product screenshots
Weekly DE gallery for apex product pages: [`docs/screenshot-gallery.md`](docs/screenshot-gallery.md).
Owned verifier [private artifact packaging](docs/owned-verifier-bundle-1128.md)
joins retained binaries, full findings and dated notes before signing/publication.