Homelab My homelab configuration

If you’re setting up something similar and want help with anything, you can reach me via email at [email protected] or on Matrix at @jsch:matrix.org.


My router is a PC Engines apu2 running OpenBSD -stable. It is also a Headscale server which facilitates easy communication between all of my hosts.

I use a TP-Link SG-108E managed switch to segregate my network into several VLANs. My access point is a Netgear R6100 running OpenWrt.

I have a 1.5 kVA APC UPS for short outages and safe shutdowns. I get a push notification via Pushover if sensorsd(8) detects an outage.


All of my servers are deployed from a Nix Flake using Colmena and backed up to Backblaze B2 using restic. SSH authentication is protected by a YubiKey using gpg-agent, and secrets are stored in Vaultwarden and accessed through rbw.

My NAS is an old ASUSTOR AS5002T running NixOS on encrypted ZFS with ephemeral root. The following services are accessed over either Cloudflare Tunnel or Tailscale:

Tailscale works great on tvOS, allowing me to watch content from Invidious and Jellyfin on my TV without exposing them to the wider Internet.

This site is hosted on a free Oracle Cloud ARM Ampere A1 VPS. This web application was written in Go and is configured with a NixOS module.

I also run a modded Minecraft server for my friends using the awesome nix-minecraft module.


My laptop is a 14-inch MacBook Pro with M1 Max (2021) running macOS Sonoma. I use nix-darwin with home-manager to get as close to reproducibility as possible. I’ve been keeping an eye on the Asahi Linux project, which is doing excellent work bringing Linux to Apple Silicon devices. In the meantime, I have a UTM virtual machine with NixOS.


Desk: Autonomous SmartDesk Pro XL
Dock: CalDigit Element Hub
Monitor: LG 34WP60C-B
Monitor arm: Ergotron LX
Keyboard: Alpaca Keyboards ErgoDox 76 “Hot Dox”
Keyswitches: Zealio V2 (67g)
Keycaps: Black DSA Blanks (PBT)
Mouse: Finalmouse Ultralight 2
Audio Interface: MOTU M4
Headphones: Massdrop x AKG K7XX
Microphone: AKG P220
Microphone arm: Rode PSA1+