feat: nomarchy-install — guided live-ISO installer (disko + mkFlake)
Ported from the previous iteration's installer (3bdfc35), adapted to the
mkFlake world. gum TUI: disk pick, optional LUKS2, user/hostname/timezone,
DMI → nixos-hardware autodetection (hardware-db.sh). disko partitions
GPT + 1 GiB ESP + BTRFS subvolumes; the generated machine flake lands at
~user/.nomarchy (one mkFlake call, /etc/nixos symlinks to it) and
nixos-install makes it bootable (UEFI/systemd-boot, v1 single disk).
Offline by construction: the target flake.lock is composed from the rev
the ISO was built from (compose-lock.py), `nix flake archive` seeds the
target store, and the ISO pre-builds the template system + desktop.
First boot lands themed: the HM generation is pre-activated in chroot.
mkFlake grows two things for this: hardwareProfile now also takes a list
(autodetection emits several common-* modules), and installed systems get
the standalone home-manager CLI from the pinned input. Unattended mode
(NOMARCHY_UNATTENDED=1 + env) documented in docs/TESTING.md §4.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
21
README.md
21
README.md
@@ -58,7 +58,9 @@ Flat on purpose. Two module trees, one options file each, no hidden layers.
|
||||
├── hosts/
|
||||
│ ├── default/ # reference machine (thin: boot, user, hostname)
|
||||
│ └── live.nix # bootable live ISO (try the distro, no install)
|
||||
├── pkgs/nomarchy-theme-sync/ # state writer + rebuild dispatcher (Python)
|
||||
├── pkgs/
|
||||
│ ├── nomarchy-theme-sync/ # state writer + rebuild dispatcher (Python)
|
||||
│ └── nomarchy-install/ # live-ISO installer (gum + disko + mkFlake)
|
||||
├── templates/downstream/ # `nix flake init -t` starter for users
|
||||
├── docs/TESTING.md # how to verify changes (incl. AI-agent rules)
|
||||
└── tools/ # maintainer-only
|
||||
@@ -86,6 +88,17 @@ the locked inputs into the ISO store — so theme switching (including the
|
||||
`home-manager switch` it triggers) works **offline**, exactly like on an
|
||||
installed system. Verification checklist: [docs/TESTING.md](docs/TESTING.md).
|
||||
|
||||
Like what you see? **`nomarchy-install`** (in a terminal) walks you through
|
||||
installing to disk: pick a disk, optional LUKS2 full-disk encryption, user +
|
||||
hostname + timezone, hardware autodetection (DMI → nixos-hardware profile),
|
||||
then disko partitions (GPT + ESP + BTRFS subvolumes) and `nixos-install`
|
||||
runs — **without a network** when the ISO was built from a clean tree (the
|
||||
target's `flake.lock` is composed from the rev the ISO carries). The
|
||||
installed machine gets the standard downstream layout: the flake at
|
||||
`~/.nomarchy` (`/etc/nixos` symlinks to it), one `mkFlake` call, your
|
||||
`system.nix`/`home.nix`. First boot lands in the fully themed desktop —
|
||||
the installer pre-activates the Home Manager generation. UEFI only for now.
|
||||
|
||||
## 3. Using Nomarchy on your machine (downstream)
|
||||
|
||||
Nomarchy is consumed as a flake input — you never fork or edit this repo:
|
||||
@@ -112,7 +125,7 @@ outputs = { nomarchy, ... }:
|
||||
|---|---|---|
|
||||
| `src` | — (required) | Your flake directory (`./.`) |
|
||||
| `username` | — (required) | Login name; flows into `system.nix` and names the HM config |
|
||||
| `hardwareProfile` | `null` | A [nixos-hardware](https://github.com/NixOS/nixos-hardware) module name (pinned + tested by Nomarchy; unknown names fail with suggestions) |
|
||||
| `hardwareProfile` | `null` | One [nixos-hardware](https://github.com/NixOS/nixos-hardware) module name, or a list of them (pinned + tested by Nomarchy; unknown names fail with suggestions) |
|
||||
| `system` | `"x86_64-linux"` | Platform |
|
||||
|
||||
(Power users can skip `mkFlake` and wire `nixosModules.nomarchy` /
|
||||
@@ -216,6 +229,6 @@ workspaces · `Print` region screenshot.
|
||||
re-copy on every state write is the main eval tax), then pre-built theme
|
||||
variants if still needed
|
||||
- Plymouth + SDDM/greeter theming from the same JSON
|
||||
- Interactive installer on the live ISO (disko BTRFS+LUKS, DMI →
|
||||
`hardwareProfile` autodetection feeding `mkFlake`) — port from old_distro
|
||||
- Installer round 2: multi-disk BTRFS RAID, impermanence, BIOS/legacy
|
||||
boot (v1 `nomarchy-install` is single-disk UEFI — see `pkgs/nomarchy-install`)
|
||||
- `hyprlock`/`hypridle`, swayosd, launch-or-focus UX scripts
|
||||
|
||||
Reference in New Issue
Block a user