π‘Home
jonpulsifer/infra
Living documentation for a homelab managed entirely as code: NixOS bare metal, two Kubernetes clusters, an OpenTofu-managed cloud and network fabric, and GitOps-driven deployments. The source of truth is the infra repository; this wiki is its
docs/Logseq graph, published on every merge tomain.Start here
Architecture β the four layers and how they fit together
Runbooks β operational procedures for when things misbehave
Fleet β every host, its hardware, and its quirks
Runbooks/Connect an Agent to the Wiki β this wiki is also an MCP server at
wiki.lolwtf.ca/mcpRunbooks/Connect an Agent to Spindrift β and Spindrift is one at
spindrift-control.lolwtf.dev/mcp, authenticated and writing
The stack in one breath
Bare metal β Architecture/NixOS configuration for every host, deployed with
nixos-rebuildand kept honest by auto-upgrades frommain.Kubernetes β two fully capable clusters,
follyon-site andoffsiteat the remote site, reconciled by FluxCD. See Architecture/Kubernetes.Cloud and network β UniFi, Cloudflare, Tailscale, GCP and Google Workspace under Architecture/Terraform, with applies gated through Atlantis. The network fabric itself is Architecture/Networking.
Applications β first-party services, packages and OCI images, described in Architecture/Applications.
Everything ships the same way: open a PR and let the operators apply it. See Architecture/GitOps.
House rules
Author desired state in git. Never mutate live infrastructure by hand.
Network facts come from the
cluster-topologysingle source of truth. Reference it; never copy values out of it.Secrets are SOPS-encrypted in the repository. This site is public β nothing decrypted ever lands here. See Architecture/Secrets and PKI.
Editing
These pages are the
docs/directory of the repo. Editing is a normal PR; merging tomainpublishes to wiki.lolwtf.ca.Pages are Logseq outline markdown:
key:: valueproperties at the top, every block starts with-, nesting is tabs, and a/in a page name is___in the filename.The renderer supports outline text, wiki-style page links, properties,
#tags, tables and code fences β not block refs, embeds or queries. Extendapps/wiki/build.tsbefore reaching for those.Write in the present tense about what is true today. Git history is the record of what changed; these pages are not.