Tvix: We are rewriting Nix

Tvix: We are rewriting Nix


Nix-related development is so chaotic, active, and divergent— very, very much ESR’s bazaar. It’s cool to see Nix inspire so many developers to create new projects.

The Tvix architecture is designed to be modular: It should be possible to write an evaluator that plugs in the Guile language (for compatibility with GNU Guix), to use arbitrary builders, and to replace the store implementation.

I love the idea of mixing and matching between different package management collections from functional package managers that all work with the same basic paradigm and keep the same fundamental promises about immutability, atomicity, etc. Not sure if this is in the future, but I kinda like the idea of a Nix implementation that makes a point of playing nice with Guix, whatever that ends up really meaning.

Tvix is not intended to replace Nix, instead we want to improve the ecosystem by offering an alternative, fast and reliable implementation for Nix features that are in use today.

They say it’s good for a language to have more than one implementation, right? :slight_smile:


Are they doing a cross-platform implementation? This is not clear from the intro.
A huge drawback of the current nix (a blocker, actually) is that it’s limited in what operating systems it runs on. I’d probably use it for builds if it were possible to embrace Windows dev environments, but alas.

Are they doing a cross-platform implementation? This is not clear from the intro.

We’re not doing a platform-specific implementation. In current Nix, the components that prevent e.g. use on Windows are related to the builder and store implementations. In Tvix, we’ll have implementations of those that work on Linux - but an implementation of a store & builder on Windows should be possible (the latter especially if Windows has an OCI-compatible containerisation/sandboxing story already, but even if not an implementation can be written against our builder protocol).

Hosted by Flying Circus.