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.
It's early. The first bootable image just landed — an unstable-edition
x86_64 ISO + raw disk image (v2026.08.07), preview-grade. What works today: a signed
binary cache for x86_64-solaris, aarch64-solaris, and
sparcv9-solaris, full-text
package search, and a handbook that's further along than the code.
Desktop is coming. The COSMIC desktop now runs on solnix — the graphical stack works on illumos: Rust, Wayland, GTK4, and GPU acceleration via Mesa RADV + Vulkan. A graphical install ISO is coming soon.
or search packages · follow along · architecture support
illumos already boots and runs production machines. solnix will let you describe one declaratively in Nix and rebuild it reproducibly. How it will work →
illumos already gives every machine atomic upgrade and instant rollback through
beadm boot environments. solnix will map each Nix generation onto one.
How it will work →
illumos already runs services under SMF and svc.startd. solnix will render
SMF manifests from an smf.services.* module. How it will work →
who want declarative, rollback-safe machines without hand-rolling SMF manifests and IPS packages.
who need a target that isn't Linux or Darwin, and want the same module system on a ZFS-native kernel.
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).
The COSMIC desktop runs on solnix — the graphical stack works on illumos 2026-08-18
System76's COSMIC desktop now runs on solnix, proving the full graphical stack works on illumos: Rust, Wayland, GTK4, and GPU acceleration via Mesa RADV + Vulkan. Read more →
First bootable image: v2026.08.07 (unstable preview) 2026-08-07
solnix now has a bootable x86_64 ISO and a raw disk image — an early, unstable-edition preview for testing in a VM. Read more →
aarch64 and sparcv9 cross-build artifacts in the cache 2026-07-28
The binary cache now carries cross-built store paths for non-primary architectures alongside x86_64. Read more →
All news → · Atom · RSS
No install needed — boot a real solnix
riscv64 kernel in your browser. OpenSBI → kernel → init →
a live $ shell running the actual coreutils, in a WebAssembly
RISC-V emulator. Type ls, cat /etc/release, echo hi.
Heads up: it boots the kernel's full
self-test log first, and WASM is slower than native — the $ prompt
appears after a minute or two. That's the emulator working, not hung.
announce@ and hackers@ have public archives you can
read now at lists.solnix.io (web, NNTP,
and git). Subscribing by email opens once inbound mail is up — see
community.
Patches by email to hackers@ (a PR bridge is coming), or the
issue tracker.
See the contributing guide.
If you turn it on, your browser can share the site's static files with other visitors over WebRTC while the tab is open — origin load drops as the community grows. Off by default; peers see your IP. How it works.
| Arch | Platform tuple | Status | Cache | Packages | Phase |
|---|---|---|---|---|---|
| x86_64 (amd64) | x86_64-solaris | Primary target | live | … | 1 |
| aarch64 | aarch64-solaris | Out-of-tree illumos port exists; integrating | live | … | 3 |
| SPARC v9 (sun4v) | sparcv9-solaris | Bit-rotting in-gate; reviving with fork patches | live | … | 4 |
| RISC-V | riscv64-solaris | Kernel boots to a shell (try it in your browser); no builder/cache yet | planned | … | 5 |
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 →
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, journalctl | SMF — svcs, svcadm, svccfg; broken? svcs -x |
| Docker / LXC (cgroups + namespaces) | Zones (native, kernel-shared) + LX zones to run Linux binaries |
| ext4 / xfs / btrfs + LVM / mdadm | ZFS all the way down — pool + volume manager + FS in one |
strace / perf / ftrace / eBPF | DTrace — one language, kernel + userland, safe in prod (+ truss) |
apt / dnf / pacman | Nix — pkgs.solnix.*, declarative machines |
iptables / nftables, bridges, veth, tc | ipfilter (ipf) + Crossbow (dladm/ipadm/flowadm) |
| sudo, capabilities | pfexec — RBAC roles + fine-grained kernel privileges |
gdb, dmesg hardware errors | MDB (mdb) + FMA (fmadm faulty, fmdump) |
GNU ld / patchelf / ldd, glibc | Solaris 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 →
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 / rcctl | SMF — dependency-aware, self-restarting; svcs, svcadm |
jails (FreeBSD) / vmm | Zones (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 loader | bhyve (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_add | Nix — 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 tree | same 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 →