# 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 Mesa’s 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. **Install-time fallback (shipped):** when `nomarchy-install` can probe OpenGL (via `glxinfo` on the live session) and the version is **< 4.3**, it writes `settings.terminal = "kitty"` into the machine’s `theme-state.json`. Kitty is enabled and **themed from the same JSON** as Ghostty (palette, mono font, opacity). SUPER+Return then launches Kitty. Ghostty stays installed (doctor / calendar classed windows still call it — those helpers may still fail on old GL until a later follow-up). If the probe fails (no display / headless VM), Ghostty remains the default — do not guess. Existing installs can set the same by hand: ```json "settings": { "terminal": "kitty" } ``` then `nomarchy-home` (or `home-manager switch`). Other Wayland clients vary; Hyprland itself is usually fine on these GPUs. --- ## 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 |