[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
|
|
Subscribe / Log in / New account

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

It is unfair to compare Guix to Nix, saying the latter supports non-free software

> (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.


to post comments

A look at Nix and Guix

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.

A look at Nix and Guix

Posted Feb 28, 2024 10:27 UTC (Wed) by zimoun (guest, #136589) [Link] (4 responses)

Thanks for the nice write up!

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...
2: https://guix.gnu.org/manual/devel/en/html_node/Channels.html
3: https://hpc.guix.info/channels

A look at Nix and Guix

Posted Mar 11, 2024 18:48 UTC (Mon) by Ivar (guest, #170136) [Link]

I think Nix has the same level of extensibility, everything it provides can be overwritten or added to, as I assume is the case with Guix.

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!

A look at Nix and Guix

Posted Mar 21, 2024 19:34 UTC (Thu) by jrw (subscriber, #69959) [Link] (2 responses)

That Emacs Thesis is a oldie but goodie. Somewhere I have a ripped-out magazine article (from Byte magazine?) from the 1980s written by Bill Gates which discussed the same thing and I'm sure the concept is much older than that. I can't seem to work up enough DDG-fu to find that article mentioned on the internet however. I worked on a project based on that architecture (low-level kernel/toolkit with clean API; application written in interpreted extension language) in the late 80s at IBM Research. It truly was a delight.

A look at Nix and Guix

Posted Mar 22, 2024 1:50 UTC (Fri) by jrw (subscriber, #69959) [Link] (1 responses)

I found the paper I remembered: Bill Gates, "Beyond Macro Processing," BYTE Bonus Edition, Summer 1987. Subtitled "A strategy for customizing applications software".

A look at Nix and Guix

Posted Mar 22, 2024 2:12 UTC (Fri) by jrw (subscriber, #69959) [Link]

A look at Nix and Guix

Posted Feb 28, 2024 11:30 UTC (Wed) by Baughn (subscriber, #124425) [Link]

> nonguix is not mentioned in any of the official Guix documentation, because the GNU project doesn't endorse using non-free software.

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.


Copyright © 2025, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds