diff --git a/skills/system-architect/SKILL.md b/skills/system-architect/SKILL.md deleted file mode 120000 index 02cb4bf..0000000 --- a/skills/system-architect/SKILL.md +++ /dev/null @@ -1 +0,0 @@ -/nix/store/01n03vb5bwpkhmlbyd03596h8bnzbasj-home-manager-files/.agents/skills/system-architect/SKILL.md \ No newline at end of file diff --git a/skills/system-architect/SKILL.md b/skills/system-architect/SKILL.md new file mode 100644 index 0000000..fcdb0f5 --- /dev/null +++ b/skills/system-architect/SKILL.md @@ -0,0 +1,192 @@ +--- +name: system-architect +description: Sam's NixOS multi-machine infrastructure. Use for any task involving system config, cross-machine deployment, Docker, audio (Snapcast), MQTT (Mosquitto), NixOS flakes, Ubuntu, Sys Config, Nvim, Home Assistant. +compatibility: NixOS 25.11+, Home Manager, flakes +metadata: + machines: + - name: sam-4screen-desktop + ip: 192.168.20.27 + type: Desktop + os: "NixOS, Niri" + role: Main dev machine. Sync to sam-ubuntu1. + tech: Mainly terminal dev work with Nvim, Opencode, Pi dev code. + hardware: + cpu: + model: "Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz" + cores: 8 + threads: 8 + ram: + total_gb: 62.7 + gpu: + - i915 + - nvidia + disks: + - device: /dev/nvme0n1p2 + size: 869G + mountpoint: / + - device: efivarfs + size: 256K + mountpoint: /sys/firmware/efi/efivars + - device: /dev/nvme0n1p1 + size: 1022M + mountpoint: /boot + - name: nixos-desktop + type: Desktop + ip: 192.168.20.13 + os: "NixOS, Niri" + role: NixOS with Niri. Second dev. Web facing. Network scripts. + tech: Docker (Mosquitto, N8N, Pi Hole back up with nebulasync from sam-ubuntu1 pihole, pocketbase, speech_piper, voice_bridge), websites at /var/www/, snapcast, gstreamer, librespot, mopidy + hardware: + cpu: + model: "AMD Ryzen 5 5600 6-Core Processor" + cores: 12 + threads: 12 + ram: + total_gb: 15.5 + gpu: + disks: + - device: /dev/sdb2 + size: 907G + mountpoint: / + - device: efivarfs + size: 128K + mountpoint: /sys/firmware/efi/efivars + - device: /dev/sdb1 + size: 1022M + mountpoint: /boot + - device: /dev/sdd1 + size: 2.7T + mountpoint: /mnt/ubuntu_storage_3TB + - device: /dev/sda2 + size: 1.9T + mountpoint: /mnt/data + - device: /dev/sdc2 + size: 932G + mountpoint: /mnt/storage + - name: sam-ubuntu1 + type: virtual machine + ip: 192.168.20.35 + os: Ubuntu + role: Ubuntu in Virtual Machine on Proxmox. Docker Machine for home network. + tech: Mainly Docker + hardware: + cpu: + model: "Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz" + cores: 2 + threads: 2 + ram: + total_gb: 14.2 + gpu: + disks: + - device: /dev/sda2 + size: 442G + mountpoint: / + - device: "//192.168.20.23/usb_3tb" + size: 2.7T + mountpoint: /mnt/nfs_usb_3tb + - name: home-assistant + type: virtual machine + ip: 192.168.20.30 + os: Home Assistant OS + role: Runs Home Assistant in a virtual machine on Proxmox Hypervisor + tech: Home Assistant OS + - name: file-server + type: virtual machine + ip: 192.168.20.23 + os: + role: File server on Proxmox Hypervisor + tech: File Server + - name: proxmox-backup + type: virtual machine + ip: 192.168.20.48 + os: Proxmox Backup Server + role: Runs standard proxmox backup server + tech: Proxmox + - name: proxmox + type: hypervisor + ip: 192.168.20.28 + os: Proxmox VE + role: Hypervisor hosting all VMs (sam-ubuntu1 .35, file-server .23, home-assistant .30, proxmox-backup .48) + tech: Web UI https://192.168.20.28:8006, SSH root@192.168.20.28 + - name: skinnyspeakers + type: raspberry pi + ip: 192.168.20.24 + os: Raspbian 12 (bookworm) + role: Speaker/audio client, likely Snapcast speaker. Identified 2026-08-29 (was previously unknown .24) + tech: SSH sam@192.168.20.24 + - name: sam-thinkpad + type: Laptop + ip: 192.168.20.51 + os: "NixOS, Niri" + role: Portable dev laptop. Third pi machine. On-the-go + at home. + tech: pi, Neovim, Home Manager. ThinkPad L14 Gen 2 AMD. + hardware: + cpu: + model: "AMD Ryzen 5 PRO 5650U with Radeon Graphics" + cores: 6 + threads: 12 + ram: + total_gb: 14 + gpu: + disks: + - device: /dev/nvme0n1 + size: 238G + mountpoint: / + network: + - sam-4screen-desktop has ssh keys to sam-ubuntu1 and nixos-desktop + - "Gitea: Docker on .35 (gitea-server-1 + gitea-db-1) — web .35:3001, SSH .35:2222. pi-config repo: ssh://git@gitea.lab.audasmedia.com.au:2222/sam/pi-config.git" + - "pi: Nix-managed pi-coding-agent 0.82.1 on all three (uniform); pi-tool-display global; pi-lsp-extension per-project" + - "Each machine has its own ~/.agents clone of pi-config — a push from .27 does NOT auto-update .13/.51" + - "DNS: Pi Hole on sam-ubuntu1 in docker" + - "Reverse Proxy: Caddy on sam-ubuntu1 in docker" + - "pihole main: sam-ubuntu1" + - "pihole redundancy: nixos-desktop" + - "Router Main: 192.168.20.1" + - "Router Second: 192.168.20.254" + - "Proxmox VE host: 192.168.20.28 (web UI :8006); PBS: 192.168.20.48 (:8007)" + - "External IP: 144.6.86.11 (NOT 173.231.229.92 — that's InMotion's server)" + - "Website: Audasmedia.com.au redirects to local *.lab.audasmedia.com.au" +--- + +# System Architect + +Sam's NixOS multi-machine infrastructure reference. + +## Machines + +| Machine | IP | Type | OS | Role | +|---------|-----|------|-----|------| +| sam-4screen-desktop | 192.168.20.27 | Desktop | NixOS + Niri | Main dev machine | +| nixos-desktop | 192.168.20.13 | Desktop | NixOS + Niri | Second dev, web facing, Docker services | +| sam-thinkpad | 192.168.20.51 | Laptop | NixOS + Niri | Portable dev laptop | +| sam-ubuntu1 | 192.168.20.35 | VM | Ubuntu | Docker host for home network services | +| home-assistant | 192.168.20.30 | VM | HA OS | Home automation | +| file-server | 192.168.20.23 | VM | - | File server | +| proxmox-backup | 192.168.20.48 | VM | PBS | Proxmox backup server | +| proxmox | 192.168.20.28 | Host | Proxmox VE | Hypervisor — hosts all VMs (.23/.30/.35/.48), web UI :8006 | +| skinnyspeakers | 192.168.20.24 | Pi | Raspbian 12 | Speaker/audio client (Snapcast?) — identified 2026-08-29 | + +## Network + +- DNS: Pi Hole on sam-ubuntu1 (Docker), redundancy on nixos-desktop +- Reverse Proxy: Caddy on sam-ubuntu1 +- Proxmox VE host: 192.168.20.28 (web UI :8006); PBS: 192.168.20.48 (:8007) +- Router: 192.168.20.1 (main), 192.168.20.254 (secondary) +- External IP: 144.6.86.11 (NOT 173.231.229.92 — that's InMotion's server) +- Website: audasmedia.com.au → *.lab.audasmedia.com.au + +## Web Deploy Sync (.27 → .13) + +- **Manual lsyncd** (not a service): config `~/.config/lsyncd/lsyncd.conf.lua` on .27 → rsync+ssh to `.13` `/var/www/` (`delete = true`). +- Sites: `sprinklers` (zola/sprinkler/public), `sam-developer` + `sam-devops` (home_network/web_sites/*/dist) — see config for the full list. +- Permissions (.13): web folders use NixOS `users` group — new folders need `sudo chown -R sam:users /var/www/`. +- Secrets: `~/.config/environment.d/10-secrets.conf` (env keys, kept out of the git-tracked Nix store). + +Full hardware specs are in the frontmatter metadata. + +## Pi Agent (uniform across machines) + +- **Binary**: nixpkgs `pi-coding-agent` 0.82.1 in `home.packages` on .27/.13/.51 (Nix-managed; npx wrapper + npm-global install removed 2026-08-05). Updates = nixpkgs flake bump + rebuild. +- **Assets**: `~/.agents` (git → Gitea `pi-config` on .35). Each machine has its OWN clone — update each machine's repo individually (`git -C ~/.agents pull`). +- **Global settings**: `~/.pi/agent/settings.json` — home.nix-managed on .27/.51; plain file on .13 (`chmod 600`, keys inline, outside any git repo). Same content: Gitea source (tavily-search, pi-config, pi-tool-display), skills (nixos-workflow), themes, prompts. +- **pi-tool-display**: global renderer (0 tools, 0 token cost). **pi-lsp-extension**: per-project via `/config-add ext pi-lsp-extension`. See `Obsidian → 350 AI → Pi Agent Extensions & Skills.md` for details.