Nix, or not to Nix

Published October 24, 2024

I think the first one asking this question to itself was William Shakespeare but he was too busy to write the answer he gave to itself or at least it didn’t get digitized.

I started using Nix and NixOS when I joined PacketHost not Equinix Metal and according to my CV it was May 2020. Time flies it is already more than four years.

Anyway I love the idea to describe my own machine, my working environment, to have a package manager that I can expland and contribute to simply with a git commit and push.

The idea that you can interact with the system with a programming language and not with a specification language or with a language on top of a configuration language is powerful even if the language is a bit weird (to say at least).

Then what’s happening why I feel like I should betray it?

If you are following the drama with the community splitting apart you may think that’s the reason but not really. I am in the Nix/NixOS irc channel, Lix matrix and when I ramble about things I can’t figure out on Discours I always get polite replies. I can’t complain.

My problem is that Nix is good to use for collaborating with other people and I am always on my own when it comes to Nix. If on your own you should at least reuse those configuration as often as possible. Locally, in CI, to build containers, binaries, composing new environments for testing and so on.

I would love, and I did that at the beginning but then my teammate are not really into Nix, I don’t understand why I should push them to it, so we endedup moving CI back to Docker. Building containers with Docker. Yep the flake.nix file is there to build a few go binaries and setup a local environment but I can do it with Nix only. I don’t need NixOS for that.

The only reason I think I need the OS is to force myself to practice with it since I like the model they propose but on my own it is a bit too much, maybe. Just thinking about loud here.

I find myself babysitting Python codebases around GenAI and ML and that can turn to a nightmare pretty quickly. Probably no matter the OS.

I never had issue with “reproducible enough” and with that I mean with lock files provided by the various language specific package manager to justify the effort of packaging with Nix. I mean, I would love to use it in the right context, with people that value this ecosystem of tools with a lot of power but without them, not sure I care.

Anyway, I am gonna stop here for now. Let me know what you think. Maybe I am gonna keep Nix on top of a more traditional OS that will offer me a way out to dirty and quick solution when needed

Are you having trouble figuring out your way to building automation, release and troubleshoot your software? Let's get actionables lessons learned straight to you via email.