A look at Nix and Guix
A look at Nix and Guix
Posted Feb 28, 2024 1:08 UTC (Wed) by old (subscriber, #154324)In reply to: A look at Nix and Guix by atai
Parent article: A look at Nix and Guix
> (in contrast to Nix, which packages non-free software behind a configuration option)
but not asserting that the former can essentially do the same, because GNU.
Posted Feb 28, 2024 1:59 UTC (Wed)
by daroc (editor, #160859)
[Link] (6 responses)
I certainly didn't mean to malign Guix, and I apologize if it came across that way. In fact, I suspect that many people will find the fact that only free software is available by default a bonus. Yes, you certainly can use nonguix to get package definitions for non-free software. Even if that weren't the case, Guile is a full-fledged programming language — you could write your own package definitions that did whatever you wanted, including downloading and compiling non-free software.
However, I do think there's a meaningful difference. Trying to install a non-free package using Nix gets you a warning message prompting you to set nixpkgs.config.allowUnfree, because the packages are present in nixpkgs, just disabled. Trying to install a non-free package using Guix will get you the same error as trying to install any non-existent package, unless you track down and configure nonguix. And nonguix is not mentioned in any of the official Guix documentation, because the GNU project doesn't endorse using non-free software.
I don't think that this difference in behavior says anything about the capabilities or worth of the two projects, but it does say something different about their priorities and approaches.
Posted Feb 28, 2024 10:27 UTC (Wed)
by zimoun (guest, #136589)
[Link] (4 responses)
For what my opinion is worth, it seems better to speak about extensibility. Guix provides various mechanisms to extend it. Somehow, it embraces The Emacs Thesis -- see Guile manual [1]:
" [...] it is delightful to create composite programs based on an orthogonal kernel written in a low-level language together with a powerful, high-level extension language.
Extension languages foster extensible programs, programs which adapt readily to different users and to changing times."
Channels [2] are an example. They go from "non-free" programs as drivers to deal with some hardware requirements to specific tools [3] developed in scientific context.
There is a continuum from the package definition or system declaration to the core of Guix itself: all is Scheme or Domain-Specific Language (DSL) as Scheme easily allows. I think that is the main difference with Nix: a completely free core named GNU Guix that you can extend for your needs; you or a group of people sharing the same interests. :-)
Nix can be extended too, obviously. However, from what I have seen, it seems more scattered and less continuous. But I might have overlooked.
( There is still one non Scheme part: guix-daemon inherited from Nix. People are working to some non-C++ reimplementation )
1: https://www.gnu.org/software/guile/manual/html_node/The-E...
Posted Mar 11, 2024 18:48 UTC (Mon)
by Ivar (guest, #170136)
[Link]
The concepts of channels maps directly to Nix as well, there you could also define (and easily share!) and additions you've made using channels or flakes. The central package/configuration module repository, nixpkgs, exposes all of it's infrastructure to help you out with this.
The tooling itself doesn't treat nixpkgs differently from any other channel/flake, you could in theory use the primitives provided by the Nix language to recreate everything from scratch without it. There isn't much of a point to rewriting the entire universe, but its possible!
Posted Mar 21, 2024 19:34 UTC (Thu)
by jrw (subscriber, #69959)
[Link] (2 responses)
Posted Mar 22, 2024 1:50 UTC (Fri)
by jrw (subscriber, #69959)
[Link] (1 responses)
Posted Feb 28, 2024 11:30 UTC (Wed)
by Baughn (subscriber, #124425)
[Link]
People are also encouraged not to mention it, apparently.
My own dalliance with GuixSD started and ended with a visit to their IRC channel, where I attempted to figure out how I would make it work with my Nvidia GPU. I was told that wasn't possible, and have been a happy user of NixOS for many years.
A look at Nix and Guix
A look at Nix and Guix
2: https://guix.gnu.org/manual/devel/en/html_node/Channels.html
3: https://hpc.guix.info/channels
A look at Nix and Guix
A look at Nix and Guix
A look at Nix and Guix
A look at Nix and Guix