Machine Inventory
Machines
Section titled “Machines”| 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 Deployment Matrix
Section titled “Service Deployment Matrix”Clan Core Services (from clan-core)
Section titled “Clan Core Services (from clan-core)”| 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 |
Custom Services (from @luxus/*)
Section titled “Custom Services (from @luxus/*)”| 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 |
Backups
Section titled “Backups”| 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.
Previews mock (vanessa, lea)
Section titled “Previews mock (vanessa, lea)”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.
Health.md CLI (vanessa)
Section titled “Health.md CLI (vanessa)”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.
Home Assistant OS VM (vanessa)
Section titled “Home Assistant OS VM (vanessa)”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.
Omarchy test VM (lea)
Section titled “Omarchy test VM (lea)”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. |
Cloudflare Tunnel Ingress (vanessa)
Section titled “Cloudflare Tunnel Ingress (vanessa)”Hostnames and backends are not listed here (public-repo hygiene). They live in
the encrypted clan var cloudflare-tunnel-ingress on vanessa:
clan vars set vanessa cloudflare-tunnel-ingressYAML list of - hostname: / service: pairs; catch-all 404 is appended by the unit.
NixOS Module Usage
Section titled “NixOS Module Usage”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 |
✓ | ✓ | ✓ | ✓ |
Hjem on lea
Section titled “Hjem on lea”| 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.
MicroVM Inventory (on vanessa)
Section titled “MicroVM Inventory (on vanessa)”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 |