Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

CPU architecture support

The solnix OS is a supported distribution of illumos aimed at four CPU targets — x86_64, aarch64, RISC-V, and SPARC — across both server and desktop use, and optimized for virtualized hosting on the major cloud platforms (AWS/EC2, Microsoft Azure, Google Cloud, and the rest). That is the design target; this page states current support honestly — the table reflects reality, not aspiration. Only x86_64 is a working primary target; the others are at various stages of bring-up, and desktop is a future core-team goal. This page gives the status of each CPU target, what “bring-up” means for it, and how cross-compilation fits in.

The four targets

ArchPlatform tupleStatusCachePhase
x86_64 (amd64)x86_64-solarisPrimary targetlive1
aarch64aarch64-solarisOut-of-tree illumos port exists; integrate itlive3
SPARC v9 (sun4v)sparcv9-solarisBit-rotting in-gate; revive with fork patcheslive4
RISC-Vriscv64-solarisKernel boots to a shell (try it in your browser); no builder/cache yetplanned5

amd64 first, always. No phase starts before the previous phase’s gate is green. This is the same honesty stance the binary cache takes: platforms without a builder yet appear as “no objects yet,” never as coverage that does not exist.

What each status means

x86_64 (amd64) — primary

The reference platform. illumos-gate builds natively on amd64, the seed toolchain is extracted here, and this is where the Nix-native stdenv comes up first. Everything in the roadmap is validated on amd64 before any other arch starts. If a solnix feature works anywhere, it works here first.

aarch64 — integrate the existing port

There is an out-of-tree illumos aarch64 effort. The work is not “port illumos to ARM from scratch” but “integrate that port and bring a Nix-native stdenv up on it.” The cache line is live because it can serve Linux cross-build artifacts today (see cross-compilation below); illumos-native aarch64 objects light up when an aarch64 builder is running.

SPARC v9 (sun4v) — revive

SPARC support exists in illumos-gate but has bit-rotted from disuse. Bringing it back means fork patches to get the gate building again for sun4v, then the usual seed-and-bootstrap path. This is later in the roadmap (Phase 4) precisely because it is revival work, not integration.

RISC-V — planned

No illumos RISC-V port exists yet in a usable state; this is the furthest-out target (Phase 5). Listed so the intent is clear, marked planned so no one mistakes it for working.

Cross-compilation notes

There are two distinct build directions and they matter for how the cache is populated per arch:

  • Linux → target (cross). nixpkgs can cross-compile many packages from a Linux builder to a Solaris target tuple. This is what lets the cache line read live for arches whose native builder is not yet running: the cross-built artifacts are real, signed, and installable. It does not cover the load-bearing base or anything that needs a native illumos build — the gate does not cross-build from Linux (see How solnix is built).
  • Native (illumos host). The seed toolchain and the load-bearing pkgs.solnix.* world must be built natively on an illumos host of that arch. This is the gated part: an arch is only fully supported once a native builder for it exists.

So “Cache: live” for a non-primary arch means “cross-build artifacts are available”; full native coverage arrives with a native builder, and the cache never advertises coverage it does not have.

Further reading

  • How solnix is built — how the platform tuple, seed toolchain, and native stdenv fit together.
  • The binary cache — per-arch coverage and how artifacts are distributed.
  • Contributing — every arch needs a builder; this is the most direct way to help.