this post was submitted on 24 Aug 2023
158 points (79.5% liked)

Linux

48338 readers
392 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
 

For me

Mint

Manjaro

Zorin

Garuda

Neon

you are viewing a single comment's thread
view the rest of the comments
[–] priapus@sh.itjust.works 2 points 1 year ago* (last edited 1 year ago)

I have read that in the past, and I do agree with points of it, but I don't agree with the conclusion that Nix is poorly designed. A lot of the issues are in my opinion fairly minor considering the scope of Nix, and many of them are a matter of opinion.

  • Build system issues Nix uses builders, which are functions that exist for different languages and frameworks. These build packages for these frameworks in consistent ways, they are documented in the Nixpkgs manual. Nix and Guix seems fairly equivalent here.

  • Language issues I can agree with some parts of this, Nix is not a fantastic language imo. I don't think that it is a problem that Nix packages use shell scripting, as it is simpler to me than writing these parts in Guile and any Nix contributor is almost certainly familiar with bash already. I think the upcoming alternative language Nickle looks promising, mainly due to its static typing and improved standard library. I personally find Nix's json like syntax much simpler for basic configuration that Guix, and Guix is not enough better at more complex tasks to be worth it for me.

  • Debugging Nix errors aren't great, but errors like infinite recursion are avoided by following good practices. I personally haven't had any errors that I found difficult to debug with a stack trace.

  • Grafts I know that Nix does have a similar feature, but I don't know how it works and what its capabilities are in comparison to Guix. I think the amount of package rebuilds some updates cause is a problem, but we currently have the infrastructure to handle it and in practice it has not been a problem for me.

  • nix-env Nix-env does not have a proper replacement because the community really doesn't have much interest in improving the UX of imperative workflows. nix profile is meant to replace it, but this will take some time as the nix3 cli is stabilized.

  • Bad UX I wholeheartedly agree with your opinion on the deprecated tools. The nix2 vs nix3 cli debate is quite controversial unfortunately. I disagree though that the current nix3 cli is a bad experience. I find the nix [command] syntax easy to use and understand.

To me this write up seemed like more of an argument that Guix is better than Nix, rather than Nix as a whole being bad. Guix seems great, but I chose Nix over Guix for one major reason, software availability. I prefer free software, but I'm not willing to not use proprietary software and not discuss it in Guix communities. Nix still has great support for things like Nvidia drivers and Steam, which seam difficult to use in Guix.

Also, does Guix have a feature comparable to Nix Flakes? The ability to manage projects and multiple systems with Flakes is Nix's killer feature for me.