Three-way audit ahead of v1 (structure/necessity, docs-vs-code drift, mechanical checkers) came back clean: zero dead files, zero doc hard errors, all 92 options documented, all consistency checkers green, no untracked files. What it did surface, fixed here: - LICENSE was missing entirely — the one hard launch blocker. MIT (Bernardo's call), pointer at the README foot. - checks/ was the only top-level dir outside the documented layout rule; its two state-legacy-name fixtures moved to tools/fixtures/ (Bernardo chose move over documenting an exception), flake.nix refs + drift messages updated. - Doc staleness: two leftover "theme-state" leads (HARDWARE.md, REQUIREMENTS.md) now say state.json; VISION Theme C charge-limit row gets its ✓; VISION agent-slices datestamp bumped. - The idle.nix miniTransition duplication (same binary name, lossy subset of the real display-transition tool) is deliberately NOT refactored here — filed as PROPOSED #150 with the audit evidence. Wallpapers-in-repo (97 MB) is the known LATER artifact-split item, not re-filed. Verification: V0 — nix flake check --no-build green after the fixture move (state-legacy-name's eval asserts exercise the new paths); doc edits prose-reviewed. Audits by three Sonnet passes; triage on Fable. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
6.7 KiB
Minimum system requirements
What Nomarchy expects of a machine. This is a living floor, not a marketing sheet — numbers come from measured installs and known software floors (NixOS, the ISO, desktop GPU). When a real machine pushes a bound, update this file in the same change.
Related: HARDWARE.md (profiles/drivers), TESTING.md (ISO/VM), README § install.
Supported platform (hard)
| Requirement | Floor | Why |
|---|---|---|
| Architecture | x86_64 | Only target the flake builds today |
| Firmware | UEFI | Installer uses systemd-boot; BIOS/legacy is LATER |
| Install path | Whole disk (disko) | No dual-boot / partial-disk path yet |
Graphics (default desktop)
The sole terminal is Kitty (GPU-accelerated OpenGL, themed from state.json). It runs on older integrated GPUs that reject Ghostty’s OpenGL 4.3 floor — notably Intel HD 4000 / Ivy Bridge (Acer Aspire M5-481T reported OpenGL 4.2 and could not start Ghostty). That is why Nomarchy standardized on Kitty only: one terminal to theme, one set of classed windows (doctor / calendar), no dual-stack or GL probe at install.
| Generation (examples) | Notes |
|---|---|
| Ivy Bridge / HD 4000 (~2012) | Supported with Kitty (verified path on Acer M5-481T) |
| Haswell+ Intel, modern AMD, discrete GPUs | Supported |
| SoftGL / virtio-gpu VMs | Hyprland needs GL for the session; Kitty is best-effort under softGL |
Other Wayland clients vary; Hyprland itself is usually fine on these GPUs. A working GPU (or software GL for VMs) is still required for the desktop session — only the terminal no longer demands OpenGL 4.3.
CPU and memory
| Resource | Practical minimum | Comfortable |
|---|---|---|
| CPU | 64-bit x86_64, dual-core | Quad-core or better (rebuilds) |
| RAM | 8 GiB | 16 GiB+ |
NixOS + Home Manager rebuilds and browser/Electron apps are memory-hungry. Hibernation (default installer path) sizes a swapfile ≈ RAM, so low RAM also means less disk eaten by swap — but also less headroom when building.
Storage (the important one)
Nomarchy is a full NixOS desktop with:
- The Nix store — every generation keeps package closures; updates add new paths until you GC. Many packages appear once per generation when inputs move.
- Home Manager generations — desktop switches and
nomarchy-homeleave profiles behind until cleaned. - BTRFS + snapper —
@snapshotstimeline (hourly/daily) and pre-rebuild snaps. Excellent for recovery; they retain data and grow with how full the live filesystem is. - Optional hibernation swapfile — default size = RAM (e.g. 16 GiB RAM → 16 GiB swapfile on disk).
Closure size is not the same as disk use after hardlink optimisation and is not the ISO size (see ROADMAP § chromium / #121 measurements). Still, plan for growth, not for a single install footprint.
Measured / known artifacts (order of magnitude)
| Artifact | Size (approx.) | Source |
|---|---|---|
| Offline live ISO | ~8.1 GiB | Built image, 2026-07 (#103 era) |
| Template HM closure (nominal) | ~9.4 GiB | nix path-info style figures in ROADMAP |
| Desktop store weight (uncompressed, pre-dedupe order) | tens of GiB | ISO pin / offline pin analysis (#120) |
A fresh install on empty disk is smaller than a machine that has been updated and snapshotted for months.
Recommended free disk (whole-disk install)
These are planning floors for the target SSD/HDD the installer will wipe and use entirely — not “free space beside Windows.”
| Use | Capacity | Notes |
|---|---|---|
| Absolute minimum to finish install + first boot | ≥ 40 GiB | Tight; little room for GC delay or snapshots |
| Realistic daily driver | ≥ 64 GiB | Short GC/snap retention still required |
| Comfortable (updates + snapper + apps) | ≥ 128 GiB | Default recommendation |
| Power user / many generations / big apps | 256 GiB+ | Dev toolchains, Steam, local datasets |
Plus swap: if you keep hibernation (default), add ~RAM on top of the
table (installer creates /swap/swapfile sized to RAM unless you set 0).
Example: 16 GiB RAM laptop → plan ≥ 128 GiB disk, of which ~16 GiB is swapfile, leaving room for store + snapshots.
Why Nix “duplicates everything”
- Each system and home generation points at a closure of store
paths. Unchanged paths are shared (same
/nix/store/…hash); changed inputs pull new paths. After several updates you hold old + new untilnix-collect-garbage/ generation deletion. - Snapper snapshots the BTRFS subvolumes. A snapshot is cheap until you rewrite a lot of data; then it retains the old blocks. Timeline + rebuild snaps mean “I deleted that 2 GB download” may not free space until snaps expire.
- The live ISO is large because it pins an offline install closure; that is a download/USB cost, not permanent free space on the installed machine after install (the installed system has its own store).
Hygiene (automatic on Nomarchy): a weekly nomarchy-gen-prune removes
system and Home Manager generations that are older than 14 days and
beyond the three most recent past gens (current + ≥3 past always kept),
then reclaims the store. Details and manual commands:
RECOVERY.md §4.
Also tune snapper retention for BTRFS file history (System › Recovery ›
Files). This requirements page only states why the disk fills up.
What we explicitly do not require
| Non-requirement | Note |
|---|---|
| NVIDIA as first-class | Deferred past v1 (PROPOSED); community/docs only |
| Secure Boot enrolled out of the box | Not the current install path |
| Touch / tablet as primary input | Untested as a bar |
| < 8 GiB RAM as a supported target | May boot; rebuilds and browsers will thrash |
Machines that defined these bounds
| Machine | Role |
|---|---|
| Acer Aspire M5-481T (~2012, Intel HD 4000) | Old-HW QA; drove Kitty-only terminal (#95) |
| Dell XPS 9350 (Skylake) | Install bake (#123) |
| AMD dev box / Latitude / T14s | Ongoing V3 (HARDWARE-QUEUE) |
When you install on something older or smaller than the table, file what
broke in agent/BACKLOG.md and tighten this page.
Related work
| Item | Topic |
|---|---|
| BACKLOG #95 | Kitty as sole terminal (shipped) |
| BACKLOG #120 | Lighter netinstall ISO (download size ≠ installed size) |
| BACKLOG #123 | Installer HM pre-activate (first-boot polish) |
| BACKLOG #124 | Flake pin vs main/v1 lag after install |