A review of Nix/NixOS after using it on all my machines for three years. I'll cover what works, what doesn't, and why it's the first OS that's stuck with me.
The biggest downside to containers vs. Nix for me is that Nix can produce binaries for Linux and macOS, whereas docker only helps with Linux unless you can perform literal magic to cross-compile your project on Linux for macOS.
Containers also don’t give you reproducible environments, and Nix does.
That said, Nix documentation is ass, so I usually end up going with containers because they require far less suffering to get working because writing a containerfile is much easier than guessing how to hobble together a Nix flake with a mostly undocumented language.
You absolutely do. If you build a container and publish it you will pull down that exact thing every time. How is that not “reproducibility”?
You no what though? Scratch that - who gives a fuck? Bit-for-bit reproducibility takes far more effort than it’s worth anyway. Even NixOS isn’t completely reproducible. It’s a false goal.
For dev environments, repeatable is okay.
It’s well more than good enough you mean.
If you want actually reproducible binaries that you can ship, Nix is better fit for that purpose.
The biggest downside to containers vs. Nix for me is that Nix can produce binaries for Linux and macOS, whereas docker only helps with Linux unless you can perform literal magic to cross-compile your project on Linux for macOS.
Containers also don’t give you reproducible environments, and Nix does.
That said, Nix documentation is ass, so I usually end up going with containers because they require far less suffering to get working because writing a containerfile is much easier than guessing how to hobble together a Nix flake with a mostly undocumented language.
Feels very arbitrary. Why would I care about say MacOS versus FreeBSD or say NeXTSTEP (just to be provocative)?
Anyway I’m being pulled away from the actual argument, the “bare metal” argument is about performances, isn’t it?
Of course it does. 🙄
Care to elaborate? Containers give you repeatable environments, which are not the same thing as reproducible environments.
But for like 99% of development teams “repeatable” is Good Enough™.
So, containers do not get you reproducibility.
For dev environments, repeatable is okay. If you want actually reproducible binaries that you can ship, Nix is better fit for that purpose.
You absolutely do. If you build a container and publish it you will pull down that exact thing every time. How is that not “reproducibility”?
You no what though? Scratch that - who gives a fuck? Bit-for-bit reproducibility takes far more effort than it’s worth anyway. Even NixOS isn’t completely reproducible. It’s a false goal.
It’s well more than good enough you mean.
Nobody really needs that.
🤡