3 ms·
Nix and Guix are extremely similar. Guix is a fork of nix that is rewriting it to be guile all the way down. I personally like Nix's syntax better than a lisp,
by georgyo 7y ago
Nix and Guix are extremely similar. Guix is a fork of nix that is rewriting it to be guile all the way down.
I personally like Nix's syntax better than a lisp, but that is just a preference.
The core of how they operate is the same. Just look at their build/ci system.
https://hydra.nixos.org/ https://hydra.nixos.org/
https://ci.guix.gnu.org/ https://ci.guix.gnu.org/
- henryslater 7y agoYeah but if I had the option of Docker or something nix based, why would I not choose Docker? Particularly as deploying to most Clouds is pretty easy if an app in already in a Docker Container.
- fiddlerwoaroof 7y agoOne advantage is that guix/nix only isolate dependencies. So, if I want two or more utilities to interact, I don’t need to bring in something like docker-compose or used network protocols, I just depend on both and write a script or something. This way, I can start with each service on its own container and then, as necessary, move two services into one container or whatever. Also, nix/guix are somewhat lower-overhead ways to build a system for local development than containers.
- danieldk 7y agoYou can easily build Docker images using Nix. Benefits: (1) reproducability, if you pin to a certain nixpkgs, you always get the same set of packages; (2) layers don't have to be full filesystem diffs; (3) the image only contains the computed closure. E.g. I produce Docker images an NLP program with Nix. The image only contains: glibc, tensorflow, my program, word embeddings, the model. No other system files or dependencies. Since the image build expression uses Nix expressions, I can also directly use the same models on my Linux workstation, Linux servers, macOS, etc. without Docker. This is a good starting point: https://grahamc.com/blog/nix-and-layered-docker-images https://grahamc.com/blog/nix-and-layered-docker-images
- adamtulinius 7y agoCombine it and use nix for building docker containers. :)
- civodul 7y agoGuix provides interoperability with Docker: the 'guix pack' command builds Docker images of applications, and 'guix system docker-image' builds images containing a complete system with services, etc. So Guix gives you reproducibility, provenance tracking, and hackability, but you can still "speak Docker".
- civodul 7y agoNix & Guix both implement the functional deployment model pioneered by Nix, but I do not see Guix as a "fork" of Nix. It's also much more than a matter of syntax: see the great explanation at https://news.ycombinator.com/item?id=18910683 https://news.ycombinator.com/item?id=18910683 .
- georgyo 7y agoI have read that comment and such before. However it is still a fork. It started off with the same code base, and is being rewritten in guile from the top down. That rewrite is bring new features, differences, and makes them not compatible with each other. However, as they started off with the same code to me they will always be a fork. While something can evolve to something that is fully independent, it doesn't change it's origin. Also a fork is not bad word. Many successful "forks" become more popular than the original. To this day guix still uses the nix-daemon code, which is written in C. And they build system they used was hydra, written in perl. In fact http://hydra.gnu.org http://hydra.gnu.org used to say "download nix package". for everything. Cuirass is very recent, but you can still see that it still looks extremely similar to Nix's hydra. I think guix still has better porcelain (cli). Nix has much better discoverability and readability. I was going to show different files, however gnu.org NS servers seem to be down. Most importantly it isn't a competition. These two products existing only benefit each other as new ideas between them flow both ways.