Skip to content

Package repository · Provenance

Egg

The v0.1 build controller at the generation handover. A running Saphira that began to build the next Saphira, and the nest in which Hatchling took shape.

Saphira Linux dragon mascot

The forge

Before there was an Egg, there was a Dragon. Before there was a Dragon, there was a forge. That forge was Arch Linux, the workshop in which Saphira was wrought into existence. The full build, from the Arch host through the SDK and the Stage 0 to Stage 4 bootstrap, is told on the forge page.

The dragon came first

Which came first, the dragon or the Egg? In Saphira's case, the dragon did.

Saphira v0.1 already existed, born from the original staged bootstrap. Egg came afterwards: a running Saphira v0.1 system given a new job, to build the native package universe from which the next generation of Saphira could hatch. For dragons lay eggs, not the other way round. This is the dragon's egg, laid deliberately by a living system to tend its own next generation. Egg is not where Saphira began. It is where Saphira began building Saphira. The Egg incubated the Hatchling, and the Hatchling in turn hatched into Hatched, the first Saphira D running systemd on musl. That whole continuing circle comes from the Egg.

What is Egg?

Egg is a real running Saphira v0.1 musl libc system from the original Stage 3 / Stage 4 bootstrap, now acting as the build controller at the generation handover. It is deliberately transitional, small, and steady. It holds the warmth while the next form takes shape.

Egg runs at egg.saphira.vm2.uk and remains the authoritative v0.1 build controller. It is never sacrificed to package testing. The work of proving packages happens in Hatchling, a separate disposable system. Egg stays clean and trusted, Hatchling takes the knocks.

Historical bootstrap files may exist on Egg without APK ownership. They describe how the first Saphira system was created. They are not silently inherited by later systems. Only explicitly approved foundational bootstrap inputs may cross the generation boundary. Everything else must become a proper Saphira package. This keeps the lineage honest and the nest tidy.

A strict publication boundary

Builds on Egg stay unprivileged by design: the builder plans, builds in a disposable clean root and leaves unsigned transactions behind. It never touches the running system and never escalates to root.

Publication is separate and deliberate. The signing tool is the only privileged step in the chain: it validates each complete transaction, verifies every APK, rebuilds the repository index itself rather than trusting one it was handed, and refuses filename conflicts instead of overwriting them. Everything else on Egg stays outside that boundary.

The result of a build is therefore trustable twice over: once because the recipe built cleanly in isolation, and again because publication checked the work independently before anything reached a stream Hatchling or any other system would consume.

Building packages natively

Packages are built from the native recipes with:

buildpkg PACKAGE

For example:

    buildpkg nginx
    buildpkg php85
    buildpkg systemd

A requested package is built from its native recipe. Normal package builds are rootless and take place in an isolated, disposable clean build root under /build/PACKAGE.buildpkg. The running Egg system is not modified by a normal package build. This is the point of Egg: the transition from bootstrap residue to proper package ownership, inside the dragon that already lives.

Why Egg exists

The objective is simple, and it is the reason Egg was given its job. The circle needs a place to turn:

Saphira v0.1  (the first Dragon)
     |
     |  Egg  (the nest, a running Saphira)
     v
native package recipes
     |
     v
Hatchling  (proved, then discarded)
     |
     v
Hatched  (first Saphira D on systemd and musl)
     |
     v
Saphira builds Saphira

The Egg hatches. That is the whole point.

Non-usr-merged, by design

Saphira remains deliberately non usr merged. The supported library layout is /lib and /usr/lib. /lib64 and /usr/lib64 are rejected from package payloads. Saphira follows its own filesystem and packaging policy rather than silently inheriting another distribution's assumptions. The same layout carries through Egg, Hatchling and Hatched.

It is so Simple it Hurts

Saphira is a small musl libc Linux distribution built around local ownership, simple infrastructure and explicit engineering decisions. The dragon story is not decoration. It is the provenance made memorable: forge to dragon, dragon to egg, egg to hatchling, hatchling to dragon again.

Follow the rest of the circle: Hatchling, back to Saphira, or the package repository.