Like many others, I've taken on the hobby of running a small lab of servers from a closet in my house.
=> dippy: My custom NixOS deployment tool
=> nvd-json: Machine-readable diffs of NixOS systems
Wherever possible, my computers run NixOS, because once you get used to declaratively describing how a machine is set up, you never want to go back.
=> The Nix configurations and related code that power all of my computers
I have three different computers that I use as workstations.
=> uranus: Desktop/gaming PC I built in 2022
=> athena: 2023 16" Apple MacBook Pro
=> persephone: 13th gen Intel Framework 13 laptop
First, I have three machines that are dedicated to running services in microVMs. There are three because a few of these services are run in highly-available cluster configurations, where one or two machines can be down without interrupting service.
I have one machine dedicated to running CI jobs in Podman containers.
=> hades
Then I have three Raspberry Pi 4Bs. At one point, these were my entire homelab, but I eventually outgrew them. They just can't keep with a full PC in terms of performance. Still, I've tried to find ways for them to be useful.
Finally, there are two VPSes hosted externally. Strictly speaking, they aren't part of the homelab since they are not at my home. But they are configured with NixOS and deployed alongside the other machines all the same, and they serve purposes complimentary to the homelab, so here they are.
=> aion: Hetzner x86 VPS
=> niobe: netcup aarch64 VPS
I keep my modules under a modules/ directory, organized by module class (NixOS, nix-darwin, home-manager, etc.). I prefer a setup where all modules are imported automatically, and they provide "enable" options to turn on their behavior where desired.
These are modules that are included on both NixOS and nix-darwin systems. I don't currently have nix-darwin systems, but I used to, and I've kept the separation anyway.
=> base: Defaults for all machines
These are modules that are imported automatically for all NixOS machines.
=> base: Defaults for all machines
=> profiles/microvm
=> profiles/raspberry-pi
=> secureboot
There are also service modules, which can be used to enable a particular service to run on a particular machine.
text/gemini;lang=en-USThis content has been proxied by September (UNKNO).