Files
Nomarchy/docs/REQUIREMENTS.md
Bernardo Magri a09399702d
All checks were successful
Check / eval (push) Successful in 3m44s
docs: REQUIREMENTS.md — OpenGL 4.3 floor, disk/RAM planning
Acer M5-481T fails Ghostty because Ivy Bridge HD 4000 tops out at
OpenGL 4.2 in Mesa; Ghostty needs 4.3 — a generation ceiling, not a
missing driver. Document that plus UEFI/x86_64, RAM, and storage floors
(Nix store generations + BTRFS snapper + hibernate swap≈RAM). Linked
from README, docs map, HARDWARE.md; #95 points here.
2026-07-15 09:40:17 +01:00

163 lines
6.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 (Ghostty, NixOS, the ISO). 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 default terminal is **Ghostty**, which requires **OpenGL 4.3** (desktop
profile). That is a **GPU generation** limit, not a “driver not installed”
problem:
| Generation (examples) | Typical max OpenGL (Mesa) | Default Ghostty |
|-----------------------|---------------------------|-----------------|
| Ivy Bridge / HD 4000 (e.g. **Acer Aspire M5-481T**, ~2012) | **4.2** | **Does not start** (`OpenGLOutdated`) |
| Haswell and newer Intel iGPU, most AMD GCN+, discrete GPUs of the last decade | ≥ 4.3 | OK |
| Dell XPS 9350 (Skylake) | ≥ 4.3 | OK (verified 2026-07) |
**Why 4.2 and not 4.3 on HD 4000?** The silicon and Mesas feature set for
that generation top out at OpenGL 4.2. No package upgrade on the distro can
turn Ivy Bridge into a 4.3 device. Ghostty is choosing a modern GL baseline
on purpose.
**Until a fallback ships** (BACKLOG **#95** — alternate terminal or probe when
GL < 4.3): machines below OpenGL 4.3 can still **install and run the
desktop**, but SUPER+Return / the default terminal entry will fail until the
user installs another terminal (e.g. kitty) or we ship an automatic fallback.
Other Wayland clients vary; Hyprland itself is usually fine on these GPUs.
The Ghostty floor is the one that bit real hardware first.
---
## 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 (user-facing, later doc links):** delete old generations, run GC,
tune snapper retention — see [RECOVERY.md](RECOVERY.md) and the System
Recovery menu. 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, OpenGL 4.2) | Ghostty floor (#95); install bake / old-HW QA |
| **Dell XPS 9350** (Skylake) | Install bake (#123); Ghostty OK |
| 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** | Ghostty fallback when OpenGL < 4.3 |
| 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 |