This day marks the fifth anniversary of my Homelab. Five years ago, as a COVID-19 lockdown project, I learned Nix and installed NixOS on my home computers.
While my Homelab may not compete in sophistication with setups you find on Reddit, I consider it a forerunner in longevity and maintainability. I attribute this success to the use of Nix, which I praised in many blog post before.
The current setup, which remained stable since 2020, doesn't represent the first generation of my Homelab. I started to use Ansible back in 2015 because I had grown frustrated with the "install and forget" approach, where you configure a system and then quickly forget the details, making future updates difficult.
In 2015 I built a Gitolite server on Debian Linux. A year later I could control my Christmas lights using Home Assistant with the entire configuration represented as code. I also built a container host with LXC, an ownCloud instance and a media server.
In 2017, because Ansible worked reasonably well on my servers, I started writing a playbook for my primary working laptop. I wanted to codify my laptop's configuration but I couldn't build a reliable set of Ansible tasks and playbooks that worked independently of machine's existing state. I would manually install new tools and struggled to document every change in Ansible. Perhaps I lacked the discipline or I insisted on the wrong approach; eventually I gave up. I never finished the configuration scripts for my laptop. The servers' playbooks gradually stopped working because of the system updates and other out of band changes.
Over the years I kept looking for a better software configuration system. I explored alternatives such as cdist, fabric, and propellor, but none felt sufficiently different to Ansible. They often had smaller user communities and more quirks. I even used Salt professionally and followed mgmt for a time.
Finally, in 2020 I discovered Nix and I wrote my first Homelab post about it. I firmly believe that if your hobby or job involves managing servers, you should not use anything but Nix.
Happy birthday, Homelab!