Solnix — Nix, meet illumos

8 min read Original article ↗

Solnix is a distribution of illumos built with the Nix package manager and the NixOS module system: declarative machines, ZFS boot environments as generations, SMF instead of systemd. Atomic upgrades, instant rollback — the illumos analog of NixOS.

packages: … cached paths: … cache: online updated: …

Why Solnix

Declarative

One module, one machine

illumos already boots and runs production machines. Solnix lets you describe one declaratively in Nix and rebuild it with solnix-rebuild. How it works →

Atomic

ZFS boot environments

illumos already gives every machine atomic upgrade and instant rollback through beadm boot environments. Solnix maps each Nix generation onto one. How it works →

Native

SMF, not systemd

illumos already runs services under SMF and svc.startd. Solnix renders SMF manifests from an smf.services.* module. How it works →

Who Solnix is for

illumos operators

who want declarative, rollback-safe machines without hand-rolling SMF manifests and IPS packages.

Nix users

who need a target that isn't Linux or Darwin, and want the same module system on a ZFS-native kernel.

Anyone running ZFS in anger

who'd rather their OS upgrades were boot environments than a package transaction.

What Solnix is not: not Linux (different kernel, libc, and init); not NixOS (same Nix, different target OS); not Oracle Solaris (the open illumos branch, not Oracle's closed product).

News

Download images paused while we fix installation issues 2026-11-06
The downloadable Solnix images are temporarily unavailable while we work through some installation issues and rebuild them. The binary cache and package installs are unaffected. Project discussion is on Reddit. Read more →

COSMIC logs in and runs on a ThinkPad, with first steps on Bluetooth 2026-11-02
On a ThinkPad X1 Extreme Gen 5, Solnix now boots to a graphical COSMIC login and runs the full COSMIC 1.5 desktop, drawn on the Intel GPU. The touchpad, wifi, app launcher and 55 apps work, and Bluetooth's controller now answers. It runs on one laptop so far, and there is no graphical install image yet. Read more →

Rust builds from source on illumos — 1.98 and 1.99 in the cache 2026-10-27
The Rust compiler now builds from source as a real Solnix derivation, not a repackaged binary. rustc 1.98.0 and 1.99.0 are signed and served from the binary cache, each a genuine bootstrap hop from the one before. This is the toolchain the rest of the native userland is built with. Read more →

All news → · Atom · RSS

Architecture support

ArchPlatform tupleStatusCachePackagesPhase
x86_64 (amd64)x86_64-solarisPrimary targetlive…1
aarch64aarch64-solarisNative builder (EC2 Graviton) builds packages; boots on EC2 Nitro VMs. No Rust or Go target, so no desktoplive…3
SPARC v9 (sun4u)sparcv9-solarissun4u: reaches SMF under QEMU (not a clean boot); Nix builds on a sun4u host. No builder; sun4v not startedlive…4
RISC-Vriscv64-solarisillumos riscv64 boots under QEMU with a ZFS root and SMF, and Nix runs in the guest; Solnix's kernel boots to a login in your browser. No builder or cache yetnone yet…5

Binary cache — skip the recompilation tax

Point nix at the Solnix cache and pull prebuilt store paths for every supported architecture. Every path is signed with the cache.solnix.io-1 key and verified before use.

# /etc/nix/nix.conf
substituters = https://cache.solnix.io https://cache.nixos.org
trusted-public-keys = cache.solnix.io-1:8UNrVAOSOrI9PGHc8/pD2Yqp265ZeYb3OId+gv4+wm8=

Nix already trusts cache.nixos.org by default, so you only add the Solnix key above.

Does it work? Ask the cache directly — no config needed:

nix store info --store https://cache.solnix.io

Cache objects are also distributed over BitTorrent, so bandwidth scales with the community instead of one origin's egress bill. seeding — HTTP works today and always stays the fallback; browser peer-sharing is opt-in. How it works →

Coming from Linux?

Most of your instincts transfer — it's Unix, and if you know Nix the Nix half is unchanged. What's different is the substrate: a different kernel, init, filesystem, and container model. Here's the map; the full translation table goes deeper on each.

You know (Linux / NixOS)On Solnix (illumos)
systemd — systemctl, units, journalctlSMF — svcs, svcadm, svccfg; broken? svcs -x
Docker / LXC (cgroups + namespaces)Zones (native, kernel-shared) + LX zones to run Linux binaries
ext4 / xfs / btrfs + LVM / mdadmZFS all the way down — pool + volume manager + FS in one
strace / perf / ftrace / eBPFDTrace — one language, kernel + userland, safe in prod (+ truss)
apt / dnf / pacmanNix — pkgs.solnix.*, declarative machines
iptables / nftables, bridges, veth, tcipfilter (ipf) + Crossbow (dladm/ipadm/flowadm)
sudo, capabilitiespfexec — RBAC roles + fine-grained kernel privileges
gdb, dmesg hardware errorsMDB (mdb) + FMA (fmadm faulty, fmdump)
GNU ld / patchelf / ldd, glibcSolaris link-editor (RUNPATH) + elfdump; illumos libc, not glibc
NixOS generations (Linux kernel)Nix generations → ZFS boot environments (atomic upgrade, instant rollback)

The ones that change how you think: SMF isn't a restart loop — a failing service lands in maintenance until you svcadm clear it. Containers are zones (Linux ELF needs an LX zone, no VM). Your OS upgrades are ZFS — each generation is a bootable clone of root. Observability is DTrace, and it's better than what you left. The differences that actually bite →

Coming from a BSD?

illumos will feel closer to home than Linux does — it's a SysV-Unix cousin with a real, coherent base system, and you already share ZFS and the bhyve/loader lineage with FreeBSD. The reflexes that differ are init, isolation, and packaging.

You know (FreeBSD / OpenBSD / NetBSD)On Solnix (illumos)
rc.d / service / rcctlSMF — dependency-aware, self-restarting; svcs, svcadm
jails (FreeBSD) / vmmZones (the original OS container, 2005) + LX zones for Linux ABI
ZFS (FreeBSD)ZFS — same lineage; illumos is where OpenZFS work lands too. Familiar.
bhyve / FreeBSD loaderbhyve (ported from FreeBSD) + the same FreeBSD-derived loader on x86
pf (packet filter)ipfilter (ipf/ipnat) — the pre-pf IPF, still first-class here
pkg / ports / pkg_addNix — declarative + reproducible; the base system is Nix-described too
ktrace / dtrace (FreeBSD/NetBSD)DTrace — the original, deepest implementation (illumos is its home)
base system = one coherent treesame philosophy — illumos is a unified kernel+userland gate, not a distro of parts

What's genuinely new: SMF (a real service manager, not shell rc scripts), RBAC + process privileges instead of plain root, and Nix for the whole system instead of ports/pkg. If you like BSD for its coherence, illumos keeps that and adds atomic ZFS boot environments. The full map →

Coming from macOS?

Your terminal transfers — macOS is a certified Unix — and you already know DTrace (Instruments is built on it) and snapshotting storage (APFS). launchd → SMF is nearly one-to-one, and Homebrew → Nix is the big upgrade. Honest caveat: Solnix is mostly a server/dev OS today. A COSMIC desktop runs on one reference laptop, but there is no graphical install image yet.

You know (macOS / Darwin)On Solnix (illumos)
launchd (launchctl, .plist)SMF — dependency-aware supervisor + repository; svcs, svcadm
Homebrew / MacPortsNix — declarative, reproducible, whole-system (not per-package)
APFS + Disk Utility / Time MachineZFS — snapshots + send/recv, deeper than APFS; boot environments
dtrace / InstrumentsDTrace — the original; Instruments is built on it
Docker Desktop (a hidden Linux VM)Zones (native, no VM) + LX zones for Linux binaries
pf (pfctl) / sudoipfilter (ipf) + pfexec (RBAC + kernel privileges)

The honest part: macOS gives you a world-class desktop; Solnix is not there. The COSMIC desktop runs on one reference laptop (a ThinkPad X1 Extreme Gen 5) with a graphical login and wifi, but there is no graphical install image, so it is not a desktop you can install today, and screen lock, suspend and sound don't work yet. Great for a Unix server or a reproducible dev OS now; not a daily-driver laptop for most people. The full map →

Coming from Windows?

The longest trip — and we'll say so plainly. Solnix is a Unix server/developer OS: no registry, no .exe, no Explorer. A COSMIC desktop runs on one reference laptop, but you can't install it yet. If you've used WSL, PowerShell, or Hyper-V, you already have the footholds. The core new habit: the system is described in text and rebuilt atomically, not clicked and patched in place.

You know (Windows)On Solnix (illumos)
Services (services.msc, sc.exe)SMF — dependency-aware, auto-restart, queryable; svcs, svcadm
winget / Chocolatey / MSI + the RegistryNix — declarative text config; no central binary hive, no installer drift
NTFS / Storage Spaces / Shadow CopyZFS — pool + FS + checksums + snapshots; boot environments for rollback
WSL (Linux on Windows)LX zones (Linux binaries on the illumos kernel, no VM)
Hyper-VZones (native containers) + bhyve (full VMs)
Run as administrator / UACpfexec + RBAC roles + fine-grained kernel privileges
PowerShell / ETW / PerfmonPOSIX shells + DTrace (the tool ETW aspired to be)

The honest part: Windows is a desktop OS first. Solnix runs a COSMIC desktop on one reference laptop with a graphical login, but there is no graphical install image, so it is not a desktop you can install today. It has no .exe compatibility. Choose it to learn Unix properly, run servers, or build reproducibly — not as a Windows desktop replacement. The full map →