every.channel/docs/RUNNER_IMAGES.md
2026-02-17 02:26:09 -08:00

63 lines
1.7 KiB
Markdown

# Runner Images (NixOS)
This repo exports reproducible NixOS runner configurations via flake outputs:
- `nixosConfigurations.ec-runner-aarch64`
- `nixosConfigurations.ec-runner-x86_64`
- `nixosConfigurations.ec-runner-aarch64-netboot`
- `nixosConfigurations.ec-runner-x86_64-netboot`
- `nixosConfigurations.ec-runner-x86_64-iso`
- `nixosConfigurations.ec-runner-aarch64-sdimage`
The runner OS exposes this repo's flake source inside the system at:
- `/etc/every-channel/flake`
This allows a runner to self-build and verify artifacts from the same flake definition.
## Read-Only Root + tmpfs Writes
The base runner profile enables an initrd overlay that:
- remounts the real `/` read-only, and
- provides a tmpfs-backed writable overlay upperdir.
For reliable upgrades and operation, mount persistent filesystems for:
- `/boot` (so new boot entries persist)
- `/nix` (so store contents persist across reboots)
- `/var` or selected `/var/lib/*` paths (for any state you care about)
## Build (OrbStack / Linux)
These commands should be run inside a Linux environment with Nix enabled (e.g. OrbStack VM).
Build netboot artifacts (iPXE/PXE):
```sh
nix build .#nixosConfigurations.ec-runner-aarch64-netboot.config.system.build.netboot
```
Build an installer ISO (x86_64):
```sh
nix build .#nixosConfigurations.ec-runner-x86_64-iso.config.system.build.isoImage
```
Build an aarch64 SD image:
```sh
nix build .#nixosConfigurations.ec-runner-aarch64-sdimage.config.system.build.sdImage
```
## Outputs
After building, artifacts will be in `./result` (a symlink into the Nix store).
Common netboot outputs include:
- `kernel`
- `initrd`
- `netboot.ipxe`
Exact filenames may vary across NixOS releases.