Hacker News new | ask | show | jobs
by isityettime 38 days ago
In my first years with NixOS, I really wanted to share my enthusiasm and joy with others. But I often got caught up explaining the mechanisms, the insights that it's built on. It took me a while to come around to realizing the heart of it: NixOS feels really good to use because it frees you from the uncertainty of a machine that suddenly changes underneath your feet. It gives you a system that is really easy to inspect and modify. It gives you the ability to move forward without fear. It's really liberating and relaxing in a certain way.

Historically, a sense of intimidation and the difficulty of onboarding blocked a lot of people from accessing these benefits. It's been cool to see how LLM agents have helped a lot of people get started and tap into the fun parts.

1 comments

My experience with explaining NixOS is that once you get to the benefits people get intimidated and start telling how they never have these issues.

I think immutable distros/software are the most intuitive way, even if people get intimidated with the idea. What's the action you did as a junior when windows/linux/x broke? You most likely reinstalled. When encountering issues we tend to try to emulate immutability.

The sad thing about NixOS is that there's 0% chance of seeing it used at work. Even in the devops people you're lucky if people can edit a Dockerfile. Good luck spending the next 3 years explaining it might look like json but it's not, and it would help to learn the syntax.

We used nix for developer environments, and nix to define docker containers for our production services. The biggest problem is the “nix people” can become blockers if there is an issue and they aren’t around to figure it out, because most engineers are just not going to learn nix.

However, we felt the benefit was worth the cost, overall, especially because we used the same flakes and therefore versions across all dev and deployed envs, and we didn’t have to deal with the hassle and performance issues of running all the dev services in docker containers.

I'm the Nix guy on my small team at work and I'd love to train any of teammates on Nix stuff. One of them already has some Nix experience and I make sure to walk him through my Nix work whenever I finish something new. But it seems like no one is really interested in truly diving in like I did when I was new to Nix.

I don't really know why that is, because it doesn't seem to have to do with intelligence or general experience with adjacent skills. I think it's probably at least 30% down to temperament, but it may also be because my team is mostly fairly senior and each person has a lot of responsibilities of their own.

On the bright side, the tooling is easy enough that nonetheless, my team generally has no problems spinning up new Nix environments without me, or making small changes to the ones I've set up. And LLM agents are now good enough with Nix that I'm confident they can unblock themselves until my return whenever I'm on vacation or whatever.

Yeah, similar experience here. One pattern that was helpful for us was defining a nix file that just contained a mapping of names to lists of packages: dev, ci, and so on, so that if you wanted to install something that was on the nix search page, you could just go toss it in there and immediately get it locally. It also made it clear which package sets would wind up where, and allowed recursion so you could say that like dev was rust-base ++ rust-dev ++ js ++ common, or whatever.
Currently no NixOS at work for me, but my team is using Nix for local development environments and CI successcully via devenv.nix. I think we actually could use NixOS on my team except that we have a host of endpoint security software that we need to run on all cloud VMs, and I'm a little distant from the people who own the automation that installs it on approved AMIs.