d51f2d62b6
Add a top-level README mapping the boxes and a full docs/ tree: topic pages (architecture, networking, deployment), per-site box pages for colony and home with containers nested under their hosts, remote and mobile boxes, the installer, and the home switch fabric reference (folded in from home-switches.md, with AGENTS.md and code comments retargeted to its new home). Box pages carry marked assignment tables that CI regenerates from nixos.allAssignments. AGENTS.md points at the new docs and keeps its terse agent version of the mechanics, referring to the topic pages for depth.
2.1 KiB
2.1 KiB
installer
The custom NixOS installer image used to bootstrap new boxes.
- Source:
nixos/installer.nix - Host: — (a build target, not a deployed box)
Role
- Defines
nixos.systems.installer, a minimal server system rendered as a bootable ISO viaconfig.my.buildAs.iso(my.asISO); the same base can also be built as a kexec or netboot tree. - Build it with the devshell commands:
build-iso installer(orbuild-kexec installer/build-netboot installer). Theupdate-installercommand force-tagsinstallerto trigger a release rebuild in CI.
Image contents
- Broad hardware support (
my.build.allHardwarepulls in the nixpkgs all-hardware profile); EFI- and USB-bootable, zstd-compressed squashfs. Volume IDjackos-<release>-<arch>, menu label "/dev/player0 Installer", image base namejackos-installer. - Root SSH with the deploy key authorized (
PermitRootLogin prohibit-password); a randominstaller-<hex>hostname is set at boot. INSTALL_ROOT=/mntin the session environment, plus ashow-hw-configalias wrappingnixos-generate-config --show-hardware-config --root $INSTALL_ROOT.- NixOS documentation enabled,
wpa_supplicantavailable but not started, aggressive GC (GC_INITIAL_HEAP_SIZE=1M) andvm.overcommit_memory=1for low-memory targets, LVM thin and NFS support. - No regular user (
my.user.enable = false), no tmpfs-root management, no NAT, and not a deploy target (my.deploy.enable = false).
Installing a box
The devshell's installer commands (devshell/install.nix) drive
an install over SSH against a booted installer reachable at $INSTALLER:
installer-shell— get a shell on the installer.do-install <system>— builds the system's toplevel,nix copys the closure to the installer's$INSTALL_ROOTremote store, sets the system profile, touches/etc/NIXOS, and runsswitch-to-configuration bootwithNIXOS_INSTALL_BOOTLOADER=1(skip the bootloader with--no-bootloader, skip substitution with--no-substitute).