Get started →

Nix, meet illumos.

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

packages: cached paths: cache: online updated:

Why solnix

Declarative · planned

One module, one machine

illumos already boots and runs production machines. solnix will let you describe one declaratively in Nix and rebuild it reproducibly. How it will work →

Atomic · planned

ZFS boot environments

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 →

Native · planned

SMF, not systemd

illumos already runs services under SMF and svc.startd. solnix will render SMF manifests from an smf.services.* module. How it will work →

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

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

Try it

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.

Try it →

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.

Community

MAILING LISTS

Read the lists

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.

CONTRIBUTE

Send a patch

Patches by email to hackers@ (a PR bridge is coming), or the issue tracker. See the contributing guide.

P2P

Be a mirror (opt-in)

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.

COMMUNITY PULSE
active users
See the full community pulse →

Architecture support

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

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)
systemdsystemctl, units, journalctlSMFsvcs, 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 / pacmanNixpkgs.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 →