Hacker News new | ask | show | jobs
by mplanchard 36 days ago
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.

1 comments

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.