omnix
NixOS reproducibility, with an ordinary /usr/bin.
Omarchy can't run on NixOS.
Omarchy is DHH's opinionated Hyprland desktop, and it's built for Arch. It installs
with a script, its 444 commands are bash scripts that start with #!/bin/bash, 36 of them call
pacman or yay, and the apps it ships are prebuilt binaries that expect their libraries in
/usr/lib.
NixOS has none of that. It keeps every package in its own hash-named directory in
/nix/store, so /bin/bash and /usr/lib don't exist, and there's no pacman.
Omarchy stops at its first command. Until now you had to choose between Omarchy's desktop and NixOS's
reproducible, rollback-safe system.
$ omarchy-theme-set tokyo-night bash: omarchy-theme-set: /bin/bash: bad interpreter: No such file or directory $ sudo pacman -Syu sudo: pacman: command not found $ ls /usr/lib ls: cannot access '/usr/lib': No such file or directory
We're porting Omarchy to NixOS, from its own source.
First we built Omnix, a NixOS base that adds the standard Linux layout:
/bin/bash, /usr/lib, and a loader for prebuilt binaries. Then we built
Autarchy, a flavor that installs Omarchy itself on top, pinned to an Omarchy release.
Hyprland runs Omarchy's own config unmodified. Omarchy's keybindings, themes, and scripts work as written, and the whole desktop rolls back with the rest of the system.
stable is v4.0.4, latest tracks its development branch$OMARCHY_PATH, where its config looks for them~/.config seeded once from Omarchy's templates, the way its installer does itnix flake update and a rebuild, with rollbackPrebuilt software just runs.
Omnix adds the standard Linux layout on top of NixOS: a loader at /lib64, a declared
set of common libraries in /usr/lib, a fresh ld.so.cache, and a /bin that
resolves #!/bin/bash. Manylinux wheels, rustup, vendor SDKs, Electron apps, and Playwright browsers
start without patching or wrappers.
$ ./some-vendor-tool --version some-vendor-tool 4.2.0 $ readlink /lib64/ld-linux-x86-64.so.2 /nix/store/…-nix-ld/libexec/nix-ld $ python3 -c 'import ctypes.util as u; print(u.find_library("z"))' libz.so.1 $ head -1 ./install.sh && ./install.sh #!/bin/bash installed.
Nothing compiles. Everything downloads.
The rule is add, never relocate. Omnix never patches or moves a nixpkgs package,
so every store path still matches the official binary cache at cache.nixos.org. Installs and
upgrades are downloads, not builds.
It needs no infrastructure of its own either: the installer ISO lives on GitHub Releases, and everything else comes straight from the NixOS cache.
Pick your desktop at install time.
The base stays small. Everything opinionated lives in a flavor, a complete system in its own repository. Autarchy ports Omarchy's keyboard-driven Hyprland desktop. Atrium is a polished, mouse-first KDE Plasma desktop with independent virtual desktops on every monitor.
The installer reads the flavor list live, so new styles show up without a new ISO.
Every change rolls back.
Your system is a flake that you own in /etc/nixos, and your flavor is
one input in it. Switch from Atrium to Autarchy by changing that input and rebuilding.
The FHS layer is generated from your configuration and versioned with it, so rolling back a generation rolls back the library layout too. The previous system is always one entry away in the boot menu.
Omnix ▸ Generation 14 Autarchy (stable) 2026-10-03 Generation 13 Atrium 2026-09-28 Generation 12 Atrium 2026-09-21 Generation 11 Minimal 2026-09-20 $ sudo nixos-rebuild switch --rollback switched to generation 13 (Atrium)
Five choices and one download.
The installer is a text menu. Nothing touches your disk until you confirm.
- Step 1
Boot the ISO
Write it to a USB stick and run
sudo omnix-install. Wired networks connect on their own; Wi-Fi opensnmtui. - Step 2
Pick a filesystem
Choose the disk, then a filesystem.
ext4btrfsxfs - Step 3
Encrypt?
Turn on LUKS full-disk encryption. Recommended for laptops.
yesno - Step 4
Choose a flavor
Then set your user, password, hostname, and timezone.
AutarchyAtriumMinimal - Step 5
Sync from the cache
Everything downloads prebuilt from cache.nixos.org. NVIDIA GPUs get their driver. Reboot.