main

Aomi — Fedora CSB + Nix

ThinkPad P1 Gen 3 running Red Hat CSB (Fedora), managed with Nix system-manager and home-manager.

Architecture

Fedora CSB (base OS, IT-managed)
  └── Nix (Determinate installer)
       ├── system-manager  → WireGuard, Syncthing, system services
       └── home-manager    → shell, editors, dev tools

Bootstrap

From another machine with SSH access to aomi:

ssh vdemeest@192.168.1.23 'bash -s' < imperative/aomi/bootstrap.sh

Or on aomi directly:

curl -sL https://git.sbr.pm/home/raw/branch/main/imperative/aomi/bootstrap.sh | bash

Rebuilding

cd ~/src/home

# System-manager (WireGuard, Syncthing)
nix build .#systemConfigs.aomi && sudo ./result/bin/activate

# Home-manager (dev tools, shell)
home-manager switch --flake .#vdemeest@aomi

WireGuard

The system-manager config writes /etc/wireguard/wg0.conf but uses a placeholder for the private key. After first activation:

# Option 1: Restore backed-up key
sudo cp /path/to/backup/private.key /etc/wireguard/
sudo chmod 600 /etc/wireguard/private.key

# Option 2: Generate a new keypair, then update globals.nix
wg genkey | sudo tee /etc/wireguard/private.key
sudo cat /etc/wireguard/private.key | wg pubkey
# → update globals.nix machines.aomi.net.vpn.pubkey
#   (current: Pmu/0CjRaClmz+v25OV3SLd/V6Il8YLLavbtu8cYSGY=, VPN IP 10.100.0.17)

sudo systemctl restart wireguard-wg0

Local OpenShift (CRC)

The bootstrap installs CRC (OpenShift Local) — a single-node OpenShift cluster running in a libvirt VM. The crc binary is downloaded to ~/bin. Requires a Red Hat pull secret (download from https://console.redhat.com/openshift/create/local and save to ~/.crc/pull-secret.json), then:

crc setup
crc start --pull-secret-file ~/.crc/pull-secret.json

CRC needs libvirt/NetworkManager (installed by the bootstrap) and the user in the libvirt group (added by the bootstrap; log out/in to apply).

For a lighter MicroShift-style cluster, use the CRC preset instead of a separate install (the @redhat-et/microshift Fedora COPR is abandoned; MicroShift is now RHEL-only):

crc config set preset microshift
crc setup && crc start --pull-secret-file ~/.crc/pull-secret.json

Syncthing

After activation, Syncthing runs as a system service under the vdemeest user. The device ID is already registered in globals.nix (S6UM56N-...). If the ID changes, update globals.nix and re-accept the device on other nodes.

# Get the current device ID
curl -s http://localhost:8384/rest/system/status | jq -r .myID