Skip to content

Machine Inventory

Machine Platform Tags Deploy Target Role
emily aarch64-darwin darwin, laptop, personal luxus@emily.local Development laptop
zoe x86_64-darwin darwin, laptop, minimal luxus@zoe.local Minimal Intel Mac laptop (darwin.intel → nixpkgs 26.05-darwin)
vanessa x86_64-linux nixos, server, homelab, gpu-nvidia root@vanessa.local Homelab server (Plasma 6 desktop + services/VMs)
lea x86_64-linux nixos, workstation, desktop, gpu-nvidia root@lea.local Remote workstation (kwin-noctalia + niri; no full Plasma; greetd+noctalia-greeter)
Service emily zoe vanessa lea Deployment Rule
user-luxus ✓ ✓ ✓ ✓ tags.all
root-password ✓ ✓ ✓ ✓ tags.all
sshd ✓ ✓ ✓ ✓ tags.all
desktop – – ✓ ✓ explicit machine; vanessa: Plasma only
base-packages ✓ ✓ ✓ ✓ tags.all
borgbackup (server) – – ✓ – explicit machine. Local-only store. Deprecated; remove after a restic restore test passes
borgbackup (client) – – ✓ ✓ tags.nixos. Local-only, deprecated. Remove after a restic restore test passes
tor – – ✓ – explicit machine
Service Machine Port Purpose Status
@luxus/ollama vanessa – LLM inference server Active
@luxus/cloudflared vanessa – Cloudflare tunnel proxy Active
@luxus/homebox vanessa 7745 Home inventory management Active
@luxus/grocy vanessa 9283 Kitchen/household ERP Active
@luxus/bambuddy vanessa 8000 Bambu Lab printer management (self-hosted) Active
@luxus/postgres vanessa 5432 PostgreSQL with pgvector Active
@luxus/hindsight-api vanessa 8888 Vector memory API Active
@luxus/hindsight-monitoring vanessa 3000 (Grafana) Observability stack Active
@luxus/obico-server vanessa 3333 Obico ML API for Bambuddy (GPU/CDI) Active
@luxus/microvm-host vanessa – MicroVM bridge/NAT host Active
@luxus/agent-browser vanessa 9222 Chromium + 9223 Lightpanda (vmbr0) Shared CDP engines for agents Active
@luxus/agent-vm:agent-jadorey vanessa – Agent MicroVM (pi) Active
@luxus/agent-vm:agent-pi-finalform vanessa – Agent MicroVM (pi, finalform project) Active
@luxus/agent-vm:agent-tina vanessa – Agent MicroVM (pi) Active
@luxus/podman vanessa – Container runtime (Docker compat) Active
@luxus/desktop lea, vanessa – lea: kwin-noctalia + niri (no full Plasma); vanessa: Plasma 6 Active
@luxus/samba lea 445/139 SMB homes; users.luxus.enable → smb-luxus-password Active
What lea vanessa Notes
borgbackup client server + client Local only. Deprecated. Stays until a restic restore test passes. See offsite backup.
modules/backup/restic-gdrive.nix ✓ ✓ Offsite restic, rclone:gdrive:backups/restic/<hostname>
services.btrbk.instances.home ✓ ✓ Daily local snapshots of /home. Not the restic source.

restic paths are the union of clan.core.state.<name>.folders. lea adds clan.core.state.home = /home/luxus (live tree, not the newest btrbk snapshot). vanessa backs up existing service state (postgres dump, homebox, grocy, bambuddy, obico, hindsight). The HAOS qcow2 at /var/lib/libvirt/images/haos.qcow2 is not under any of those folders. Home Assistant keeps its own backups. The restic module excludes that image if a state folder ever covers it.

Host module modules/nixos/previews-mock.nix. On vanessa, Caddy serves https://previews-app.com with an internal CA. /login* is the static redeem page. Other paths are Prism (docker.io/stoplight/prism:5.15.10) on 127.0.0.1:4010. vanessa resolves the name to itself.

lea resolves previews-app.com to vanessa (192.168.178.166 and its stable ULA). Both machines trust the committed Caddy root modules/nixos/previews-mock/caddy-root.crt.

The spec and login page are copies of ../previews. Recopy both and redeploy when they change. If Caddy’s data dir is wiped, recopy root.crt from /var/lib/caddy/.local/share/caddy/pki/authorities/local/root.crt too.

pkgs/healthmd installs healthmd and healthmd-mcp from the health-md apps/cli tip (main). It is on vanessa via environment.systemPackages. nix run .#update healthmd follows that branch.

Host module modules/hosts/vanessa/haos-vm.nix — libvirt domain haos, autostart.

Item Value
Guest HAOS 18.2 / Core 2026.8.3 (live upgrades via HA Settings → System)
Disk 100G qcow2 /var/lib/libvirt/images/haos.qcow2 (NOCOW dir; btrfs @root)
RAM / CPU 8G / 2 vCPU, host-passthrough
Net br0, MAC 52:54:00:0a:e6:71, LAN 192.168.178.186:8123
USB ZBT-2 303a:831a passthrough
Crash libvirt on_crash=restart (host poweroff still destroy via haos-shutdown)

If :8123 dies after a guest restart, check host / is not btrfs remount-ro before blaming HA. See troubleshooting.

Host module modules/hosts/lea/omarchy-vm.nix — persistent libvirt domain omarchy, not autostart. Disk survives stop/reboot.

Item Value
Guest Omarchy 4.0.1 ISO (Arch, not NixOS)
Disk 100G qcow2 /var/lib/libvirt/images/omarchy.qcow2 (sparse)
RAM / CPU 16G / 8 vCPU, host-passthrough
Display Spice + virtio-gpu for the viewer. Raphael iGPU (1002:13c0 + HDMI audio 1002:1640) VFIO to the guest once BIOS iGPU Multi-Monitor is on. Host 4090 stays on lea.
Net macvtap on eno2 (LAN DHCP) + libvirt NAT. Guest reaches host at 192.168.122.1.
Start virt-manager → omarchy (ISO already fetched). New libvirtd group needs a re-login or sg libvirtd virt-manager.

Hostnames and backends are not listed here (public-repo hygiene). They live in the encrypted clan var cloudflare-tunnel-ingress on vanessa:

Terminal window
clan vars set vanessa cloudflare-tunnel-ingress

YAML list of - hostname: / service: pairs; catch-all 404 is appended by the unit.

Canonical composition (including punktfunk, kwin-tiling, niri, _steam.nix, Darwin extras) is in configuration-matrix. Subset below.

Module emily zoe vanessa lea
modules/nixos/common.nix – – ✓ ✓
modules/darwin/common.nix ✓ ✓ – –
modules/nixos/eternal-terminal.nix – – ✓ ✓
modules/darwin/eternal-terminal.nix – ✓ – –
modules/darwin/eternal-terminal-client.nix ✓ – – –
modules/nixos/nvidia.nix – – ✓ ✓
modules/nixos/avahi-mdns.nix – – ✓ ✓
modules/nixos/desktop-kernel-params.nix – – ✓ ✓
modules/darwin/sudo-touchid.nix ✓ ✓ – –
modules/darwin/defaults.nix ✓ ✓ – –
modules/darwin/homebrew.nix ✓ ✓ – –
modules/shared/hjem.nix ✓ ✓ ✓ ✓
modules/hosts/lea/omarchy-vm.nix – – – ✓
lib/vars-generators.nix ✓ ✓ ✓ ✓
Layer Profiles Notes
Hjem (mkHjemUser) hjem/profiles/{base,development,terminal}.nix, shell, apps CLI, dev tools, secrets
Hjem (@luxus/desktop) hjem/profiles/{kwin-noctalia,niri}.nix, hjem/desktop/shell.nix Compositor configs + Noctalia shell + Omarchy screensaver (no full Plasma). kwin-noctalia extras: configuration-matrix.
Elgato Control modules/hosts/lea/default.nix (udev VID 0fd9 matching noctalia-elgato-control nixosModules.default, hidapi, ELGATO_HIDAPI); hjem/desktop/lea-noctalia-systemd.nix (noctalia.service hidapi drop-in) Plugin stays in luxus/noctalia-elgato-control. Enable: noctalia msg plugins source add elgato git https://github.com/luxus/noctalia-elgato-control then noctalia msg plugins enable luxus/elgato-control.
AirPods pkgs/librepods-daemon + hjem/apps/librepods.nix (librepods --headless on graphical-session). Host: DeviceID spoof + AVRCP dummy. Iced tray pkgs/librepods (PR #655 mic) does not feed the bar. Plugin harveywuk/airpods. Enable: noctalia msg plugins source add harveywuk git https://github.com/harveywuk/airpods then noctalia msg plugins enable harveywuk/airpods. Add the AirPods widget in Settings → Bar. Panel: noctalia msg panel-toggle harveywuk/airpods:panel. Cycle ANC: noctalia msg plugin harveywuk/airpods:service all cycle-noise. Daemon contract: $XDG_STATE_HOME/librepods/status.json (removed on quit); librepods-ctl verbs status, noise:*, ca:on/ca:off, onebud:on/onebud:off, adaptive:N, ear:off/ear:one/ear:both.

Post-Hjem / post-kmonad state (resolves #86 children, #85, #110, #111): no home-manager input, kmonad removed (XKB only), greetd+noctalia-greeter, consolidated QML/Union env (no per-app QT_BASIC overrides in easyeffects). See services/desktop/default.nix and lib/kde-settings-qml.nix.

graph LR
ext["external iface (br0)"] --- host["microvm-host<br/>bridge vmbr0 · 10.200.0.1/24"]
host --- cdp["agent-browser<br/>Chrome :9222 · Lightpanda :9223"]
host --- jadorey["agent-jadorey<br/>jadorey · 10.200.0.4 (pi)"]
host --- piff["agent-pi-finalform<br/>pi-finalform · 10.200.0.6 (pi)"]
host --- tina["agent-tina<br/>tina · 10.200.0.7 (pi)"]
Instance Hostname IP Agent Type Project Root (host = guest)
agent-jadorey jadorey 10.200.0.4 pi /home/luxus/projects/jadorey
agent-pi-finalform pi-finalform 10.200.0.6 pi /home/luxus/projects/finalform
agent-tina tina 10.200.0.7 pi /home/luxus/projects/tina