Short answer probably not. You can get most of the way there with nix + direnv. But nix is a complex beast even if you’re only using that little subset of it. I watched the development of this flox tool for a few months now, to me it seems closest to vanilla nix that still gives a nice UX. With devenv there seems to be more guardrails but also more proprietary flavor (the under the hood constructs are not entirely just raw nix)
I agree. Plain Nix is very complex but highly configurable and allow very complex use case, whereas Flox / devenv are much easier to setup but hide certain Nix features (which are probably not needed in most dev environments anyway, so it's totally worth it given the simpler interface)
Indeed. I find it hard to advocate for Nix at DayJob because it’s so fully loaded as a term. We are discussing the capabilities of Nix and are able to understand that the piece of Nix we are referring to is but one small piece of everything that is offered under the Nix umbrella. Nix is
- a package manager for system packages
- a methodology to declaratively manage your local environment
- a methodology to declaratively manage your entire machine
- a deterministic build tool
- an entire operating system
We know we are really only talking about the first two in this conversation but for some random engineer in your org who has no idea what Nix is it’s extremely easy to get caught in a rabbit hole of the other bullet points even though they are not relevant at all to this conversation. So I think it’s generally pretty risky to even mention Nix as an option because it has so many nerd traps that ultimately end up as distractions to do what you are trying to do. So I absolutely see the value in toolchains like this that try to hide that away but still reap the benefits of the ecosystem.
Though I do wonder, would we need those wrapper tools if vanilla nix was more intuitive to use...?