Cross-compiled on a Mac, installed with apt
Most packages are built on a Mac in Docker against the Procursus toolchain, patched reproducibly, and shipped as Debian packages to a Sileo repo.
Standing on Procursus
The rootless bootstrap on these devices is Procursus, which is itself a macOS-hosted cross-compile system that already ships a full X11 stack prebuilt for iphoneos-arm64. The approach is to stand on that rather than rebuild it: use the toolchain, and spend the effort on the parts Procursus does not provide, starting with the native display server.
Patches are managed with quilt, so every change to upstream source is tracked and the build stays reproducible. The pipeline runs in Docker, so it behaves the same on any machine.
The harder cross-compiles
- mozjs 115
- SpiderMonkey cross-compiled from Linux to iOS, with its JIT running on the A10. This is what lets gjs, and therefore GNOME Shell, run.
- bun
- Bun, the JavaScript runtime, cross-compiled to iOS. Its JIT and
bun:ffirun even though iOS refuses an executable heap, by relocating generated code throughmmap. opencode runs a full agent turn on the device. - Introspection
- The GNOME Shell boot typelibs were generated on the device with the native Procursus toolchain, then packaged as
xios-gnome-typelibs. - ICU
- Built native-then-cross so its data compiler runs on the host, which unblocks Evolution Data Server and tracker full-text search downstream.
- ANGLE
- Google's ANGLE built from source with the Metal backend, packaged as the
angledeb. - Qt6 and KF6
- A six-module Qt6 ladder plus a KDE Frameworks 6 subset, KWin, Plasma Desktop/Mobile, and the first KDE app batch.
The repo
Packages are published to a self-contained apt repo, the same kind every jailbreak uses.
There is no single xios package. You install one of xios-gnome, xios-kde, xios-native, or xios-x11, and each pulls in the shared xios-core base. From there the in-app session picker lets you switch between running desktops.