Files
Nomarchy/docs/REQUIREMENTS.md
Bernardo Magri a818c19a4e
All checks were successful
Check / eval (push) Successful in 4m21s
chore: v1-prep hygiene sweep — LICENSE (MIT), fixtures under tools/, doc staleness
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>
2026-07-17 16:20:39 +01:00

6.7 KiB
Raw Blame History

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 Ghosttys 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:

  1. The Nix store — every generation keeps package closures; updates add new paths until you GC. Many packages appear once per generation when inputs move.
  2. Home Manager generations — desktop switches and nomarchy-home leave profiles behind until cleaned.
  3. BTRFS + snapper@snapshots timeline (hourly/daily) and pre-rebuild snaps. Excellent for recovery; they retain data and grow with how full the live filesystem is.
  4. 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.

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 until nix-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.


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