All checks were successful
Check / eval (push) Successful in 4m21s
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>
161 lines
6.7 KiB
Markdown
161 lines
6.7 KiB
Markdown
# 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](HARDWARE.md) (profiles/drivers),
|
||
[TESTING.md](TESTING.md) (ISO/VM), [README](../README.md) § 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:
|
||
|
||
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.
|
||
|
||
### 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 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](RECOVERY.md#4-how-generations-are-kept-and-cleaned-up).
|
||
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 |
|