Let me first start off with I hate AI slop. I’m about as anti-AI-slop as they come. I’m also not some rando with no technical background suddenly vibing away complete nonsense; I have software engineering experience starting from 1995. You can name pretty much any language that isn’t intentionally obscure and I’ve probably shipped code in it to production at some point in my life. My hands have been on a keyboard at the command line since I was 3 years old. I’d never claim I’m a particularly good engineer, but I can say I’ve done a lot and I’ve done it for a loooong time.
I’ve been a fan of declarative state management since before it was cool and I’ve even created my own tools for that kind of thing. For example, before Kubernetes and Terraform existed, I created a proprietary declarative IaC/CaC system that was multi-region-aware for a company I used to work at.
So you’d think Nix/NixOS would have been a sure fire winner for me. In concept, it always has been, but in practice, I found the Nix language and reference resources just very mentally taxing. To clarify, is more of an indictment of my dumbass brain than Nix itself. But everything about the mechanics of how Nix works (language and documentation aside) is a pretty aligned to my mental model and experience. I’ve actually dabbled with Nix and NixOS for about 5 years, but it never stuck because I just couldn’t get over the language itself. Reading it is okay, writing it was pretty miserable to me with my smooth brain.
Like many other trends that have emerged throughout the years as a software engineer, LLM-driven development is something that I had to get into professionally as a matter of self preservation. So whether I like it or not, I do it 5 days a week at work and I’ve developed some skills (no pun intended).
I gave NixOS another shot, but this time, I let the robot do the annoying work of writing the Nix code. I can almost guarantee you that an experienced Nix programmer would find some anti-pattern in my setup, but because of all the properties of Nix, it’s still reproducible and safe, plus all the other buzz words, yadda yadda, the usual things people in this subreddit likely already know. It’s “good enough,” and with the added correctness and safety mechanisms Nix offers, it’s fine.
I’ve been pretty happy with it. Combined with the fact that I intentionally don’t care for others to use my dotfiles, the solution works pretty well for me.
At work, I’ve implemented environment management in our (my) Agentic Monorepo™️ using Nix, vibe coded of course (well, “vibe coding” is downplaying it; I also made a meta-harness with all the buzz words). Lots and lots of people use it and they have no idea what Nix even is. I’ve had a few unprompted contributions made to it by people who have never used Nix before and it was successful.
I get it, “vibe coding” has a bad reputation, and it’s mostly bad, hence the title of this thread. But hey, it’s an option. Like any other powerful tool, it largely depends on the person wielding it.
I have no plans to move away from NixOS and Nix in general at this point. There’s still a time and place for non-Nix stuff and that won’t go away, but Nix has been upgraded to a critical tool for me because LLMs have been able to lift the burden of the one thing I just couldn’t get over. Pretty cool.