Files
Nomarchy/docs/REQUIREMENTS.md
Bernardo Magri 545e40f4d9
Some checks failed
Check / eval (push) Has been cancelled
feat(terminal): Kitty only — drop Ghostty (#95)
Ghostty's OpenGL 4.3 floor broke the Acer (HD 4000 / 4.2). Dual-terminal
support (default Ghostty + install-time Kitty fallback) was more complexity
than it was worth.

- Remove ghostty.nix / nomarchy.ghostty.enable
- Kitty always installed and themed from theme-state
- Default nomarchy.terminal = kitty; SUPER+Return, doctor, calendar,
  what-changed use kitty --class=com.nomarchy.*
- Drop install-time glxinfo probe and mesa-demos on the installer
- Docs/REQUIREMENTS no longer list OpenGL 4.3 as a terminal floor

Verified: V0 flake check; option-docs; installer-safety; template HM has
kitty, no ghostty; menu/calendar emit classed kitty launches.
2026-07-15 09:51:27 +01:00

157 lines
6.5 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 (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
theme-state). 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.
### 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) | 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 |