main

Systems Architecture

NixOS system configurations organized by hostname with shared modules in common/.

Channel Groups

Hosts use different nixpkgs channels. Changes to shared code (common/) must work across both channels.

Unstable (nixpkgs — nixos-unstable)

  • okinawa — x86_64-linux, laptop / LLM build server (ASUS G14)
  • kyushu — x86_64-linux, work laptop
  • aomi — x86_64-linux, server
  • sakhalin — x86_64-linux, home server

Stable (nixpkgs-25_11 — nixos-25.11)

  • rhea — aarch64-linux, media server (main)
  • aion — aarch64-linux, XMPP / podcast server
  • athena — aarch64-linux, Raspberry Pi 4
  • demeter — aarch64-linux, Raspberry Pi 4
  • aix — aarch64-linux, Raspberry Pi 4
  • kerkouane — x86_64-linux, VPS server
  • carthage — x86_64-linux, VPS server

Host File Layout

Each host has a directory in /systems/<hostname>/ containing:

  • boot.nix — bootloader, initrd, kernel modules
  • hardware.nix — hardware-specific settings, filesystem mounts
  • extra.nix (optional) — additional host-specific NixOS configuration
  • home.nix (optional) — host-specific home-manager configuration

Build Verification

  • Test current host: make build
  • Test a specific host: make host/<hostname>/build
  • Dry-build (eval only): make host/<hostname>/dry-build
  • Direct nix: nix build .#nixosConfigurations.<hostname>.config.system.build.toplevel