The Manual

Omarchy channels: stable, edge or your own checkout

Omarchy is developed on a branch called quattro, and its releases are cut from it. nixarchy lets you choose which Omarchy your desktop runs:

channel what you get who it is for
stable (the default) Omarchy’s latest release everyone
edge Omarchy’s development branch, quattro, after nixarchy has built and booted it trying what is coming before it is released
dev Omarchy built from your own git checkout working on Omarchy itself

This is a separate choice from which nixpkgs you build on (stable 26.05 or unstable; see Stable or unstable). Any pairing works: edge Omarchy on unstable nixpkgs, stable Omarchy on 26.05, and so on. Changing one never touches the other.

Switching

From the menu: Update ▸ Channel, then Stable, Edge or Dev. The one you are on is ticked.

Or from a terminal:

nixarchy channel omarchy              # which one this machine runs
nixarchy channel omarchy edge         # switch to edge
nixarchy channel omarchy dev ~/omarchy  # build from your checkout
nixarchy channel omarchy stable       # back to the release

It edits one line of /etc/nixos/flake.nix and keeps the old file as flake.nix.pre-channel. It asks before it writes. Then it re-locks and tells you to rebuild:

nh os switch

Nothing changes until that rebuild. If the re-lock fails (offline, say), the flake is put back as it was.

Edge: the next release, tested first

Edge is not the raw tip of quattro. It is a nixarchy branch, edge, that a nightly job moves forward, only after that day’s quattro:

  1. builds with every NixOS patch nixarchy carries;
  2. passes the same checks a release does: the menu, the command ledger, the option set, and three booted desktops.

When something upstream breaks on NixOS, edge simply stays where it is. A rolling issue labelled omarchy-edge says what broke. So edge can lag quattro by a few days, but it does not move to something that does not boot.

nixarchy version shows the date edge was cut, for example edge-20261015-246f33a (edge).

Edge’s new Omarchy features are ported (#1280): language switching, the fingerprint reader’s resume hook, and removing fingerprint authentication all work as on stable. The passwordless-sudo toggle is hidden, because NixOS declares sudo in the build (Security says how to set it). Each port lands on stable with the release that brings it.

Dev: your own checkout

For working on Omarchy itself:

git clone https://github.com/basecamp/omarchy ~/omarchy
nixarchy channel omarchy dev ~/omarchy
nh os switch

Going back

nixarchy channel omarchy stable && nh os switch

Or boot the previous generation from the boot menu, which needs no network and no rebuild.

On a NixOS machine with your own flake

If you added nixarchy to a NixOS configuration you already had, rather than installing from the ISO, the channel is still one line: the url of your nixarchy input.

your nixarchy.url what you run what nixarchy channel omarchy reports
github:olafkfreund/nixarchy/release stable releases stable
github:olafkfreund/nixarchy/v4.0.4-3 (a tag) that release, pinned custom
github:olafkfreund/nixarchy (no branch) main: every merge, ahead of releases stable
github:olafkfreund/nixarchy/edge edge edge

Switching with the command

nixarchy channel omarchy … works on your flake too. Point it at your flake with NIXARCHY_FLAKE if it is not in /etc/nixos:

NIXARCHY_FLAKE=~/nixos-config nixarchy channel omarchy edge

It edits your flake only when the input is written as a block, which may contain nested inputs.* = { … }; lines:

nixarchy = {
  url = "github:olafkfreund/nixarchy";
  inputs.nixpkgs.follows = "nixpkgs";
};

It rewrites only that url line, plus two lines for dev. Any other shape is refused and the file is left untouched. That includes the dotted form nixarchy.url = "…";, a fork, a pinned tag, or a local path. Edit it by hand then.

A bare URL follows main, not releases. The command reports it as stable, because it is neither edge nor dev, so nixarchy channel omarchy stable says there is nothing to do. On such a machine, stable means main.

Switching by hand

Edge: change the one line, then re-lock and rebuild.

nixarchy = {
  url = "github:olafkfreund/nixarchy/edge";   # …/release for stable; no branch for main
  inputs.nixpkgs.follows = "nixpkgs";
};
nix flake update nixarchy
sudo nixos-rebuild switch --flake .#<host>

Dev: add your checkout as a top-level input and point nixarchy at it. Name the branch you work on, since only committed work is built:

omarchy = {
  url = "git+file:///home/you/omarchy?ref=main";
  flake = false;
};
nixarchy = {
  url = "github:olafkfreund/nixarchy/edge";
  inputs.omarchy.follows = "omarchy";
  inputs.nixpkgs.follows = "nixpkgs";
};
nix flake update nixarchy omarchy
sudo nixos-rebuild switch --flake .#<host>

Trying edge on one machine first

The channel is a property of the flake, so a config repo serving several machines moves them all together. To try edge on one machine, give that host its own copy of the input (or build it from a branch of your config repo with the edge URL), and leave the others on stable.

Checking where you are

nixarchy doctor

reports both choices: which nixpkgs and which Omarchy. For dev it also names the checkout.