nevaforget 9fa14f412b Wire stasis into the desktop and add its user service
Upstream ships a systemd unit in the Arch package but not in the source
tarball, so it is declared in the module.
2026-08-07 16:21:14 +02:00
2026-08-07 12:35:33 +02:00
2026-08-07 16:19:16 +02:00
2026-08-07 16:19:16 +02:00

moonix

Moonarch on NixOS — packages and NixOS modules that reproduce the Moonarch desktop from the same sources as the Arch packages.

Arch stays the primary target. This repo is the parallel NixOS path: it consumes moonarch/defaults/ unchanged and builds the Rust projects with Nix instead of makepkg.

Layout

flake.nix            Inputs (project repos pinned to tags) and outputs
pkgs/                Build recipes — counterparts to the PKGBUILDs
  moonlock.nix
  moongreet.nix
  moonset.nix
  stasis.nix
  sweet-cursors.nix
modules/
  desktop.nix        /etc deployment, package set, theme
  greetd.nix         greetd + moongreet
  services.nix       systemd system and user services
hosts/
  moonarch-vm/       QEMU test VM

Usage

Build a single package:

nix build .#moonlock

Build the whole system without activating it:

nix build .#nixosConfigurations.moonarch-vm.config.system.build.toplevel

Activate:

sudo nixos-rebuild switch --flake .#moonarch-vm

Version bumps

The project repos are pinned to release tags. After tagging a new version:

# adjust the tag in flake.nix, then
nix flake update moonlock

Configuration sources

moonarch/defaults/ is the single source of truth for both distributions. Files are deployed as-is wherever possible. Three exceptions exist, each because the file contains an FHS path that does not exist under Nix:

File Reason
moongreet.toml wallpaper path, generated with the store path
waypaper/config.ini wallpaper path, generated and seeded into $HOME
fontconfig defaults /etc/fonts/conf.d is owned by the NixOS module

Two files from defaults/xdg/ are deliberately not deployed:

  • walker/ — walker is not part of this setup, the Quickshell launcher replaced it
  • kanshi/config — a 0-byte placeholder, unused on Arch as well; kanshi rejects it and restarts in a loop

Test VM

hosts/moonarch-vm targets a QEMU guest. The launcher script lives outside this repo at ~/VMs/moonix-vm.sh.

The guest needs a 3D capable virtio GPU: niri's TTY backend fails every buffer import with Error::DeviceMissing otherwise, and software rendering is not a workaround. On the current host that path has twice triggered an amdgpu hard recovery, killing the QEMU process — shut the VM down when not testing.

Not covered

  • Clipboard history and the walker -d menus in moonarch-sink-switcher, moonarch-vpn and moonarch-cpugov — walker was dropped without a replacement yet
  • Bare metal installation (disk layout, encryption, bootloader)
S
Description
No description provided
Readme
360 KiB
Languages
Nix 100%