New Beginnings - A Preface

  • 03/Jan/24
  •  • 
  • 4 min read
  •  • 
  • Tags: 
  • nixos

A man standing at the center of many possible live paths and experiences. They are connected in circuit board style.

untitled , January 2024 - Generated using DALL-E 3

For the last two months I've been engrossed in learning about tools related to devops and site reliability engineering with the intent of changing my career path to a more technical orientation. FidgetingBits introduced me to Nix and NixOS along the way and what started as curiosity quickly turned into fascination and enthusiasm.

NixOS has been around for a couple of decades, largely off the radar but has gained significant interest lately. In brief, for those unfamiliar with NixOS, it's a linux distribution that deviates significantly from most, if not all, operating systems in that it is entirely declarative in nature. The details of that means are a topic for a different post but for those interested in more there is currently a quickly growing amount of content available online about what Nix and NixOS are. The relevant points for moment are that there are numerous ways to go about configuring NixOS, the learning curve is very steep, and the documentation is a bit of a mess depending on what you're in need of. While the process of discovery in the midst of those points has been frustrating, it's also been fun. I've learned an incredible amount in a short time and the prospect of what it means for my home network is exciting.

My intent with upcoming posts is to share how my personal configuration is evolving in part for my own reference and ultimately in hope that it helps you. Also, before I decided to start my config there were a few important pieces of information that helped me conceptualize what I was getting myself into, what the possibilities are, and how orient myself across the multitude of possibilities.

Motivation

Do you ever get that uneasy feeling when something happens on one of your boxes where you kind of just hope it goes away and you don't have to go looking for the problem for several hours only to forget what you were doing in the first place... three days later you're still not sure the solution is a good one, but it seems to work. You're too tired to care and now busy trying to figure out what day it is? Neither do I! I simply do a quick search on the internet for one of those handy stack overflow replies that states "Just set environment.problem.enable = false and you'll be good." Works every time! Thanks internet!

Seriously though, tangential problems like this come up frequently for me and often require some lengthy debugging, red herrings, fruitless searches for solutions, and at least one moment where I want throw the computer in the river and flee to a cabin in the woods.

My motivation for a better way of configuring and managing my personal network of machines is what made NixOS quickly sound intriguing. Along the way, I knew there would be significant frustration, doubt, and confusion but the vision of what is possible pulled me in. Words like declarative, impermanence, dependency isolation, and generational, especially in relation to an operating system, raise my heart rate. I like order and control when it comes to computers, especially my own.

Opening the Door

Very quickly I noticed a tendency for people to describe their NixOS journey as "following the path of Alice in wonderland", "falling down the rabbit hole", and "taking the red pill". In a way, those sorts of descriptors have become a tad cliche in the 2020s but sometimes they're apt metaphors well worth considering. I firmly believe NixOS to be the latter.

Opening the door and progressing down the path feels a bit like being on a one way street where you know you could do a u-turn if you really wanted but that would mean turning your back on a destination you want to reach. There's a tight sense of self-betrayal at the thought of turning back, as if you know that it's fear getting the best of you and at some point in the future you'll be back here anyway, wondering why you didn't just keep going forward.

On a journey like this, it's wise to have travel companions. Here we go...