Ideas.

Infrastructure as Code (IaC) is the most important principle I adhere to when building my home lab. With IaC, all (digital) infrastructure and systems are defined in code that can be automatically rolled out. Ansible is probably the most used IaC tool out there, but it has a huge problem: it suffers from configuration drift. You can create a task in Ansible to install a package, but if you remove this task, the package remains. At this point, your configuration does not reflect reality anymore.

What is the solution to this configuration drift? Nix and NixOS! NixOS will always make sure you machine is in the exact state you define in your configuration. My current Linux systems now all run NixOS and I have no intention of ever going back!

And obviously, I won’t be able to make a home lab without open source software. While I’m very appreciative of the goals of Free and Open Source Software (FOSS), it’s unfortunately not realistic to make a home lab solely with FOSS. I do try to draw a line at “corporate” open source software. This is a very blurry line, but I feel Jeff Geerling explains this well in this video. I was betrayed by Hashicorp’s open source offering, and I’m very hesitant in adopting for example Tailscale as a result.