this post was submitted on 24 Aug 2023
163 points (79.6% liked)
Linux
48331 readers
639 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
- Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.
- No misinformation
- No NSFW content
- No hate speech, bigotry, etc
Related Communities
Community icon by Alpár-Etele Méder, licensed under CC BY 3.0
founded 5 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
NixOS does have poor docs, but why don't you elaborate on why you think it's poorly designed?
I have an entire writeup on the issue. https://github.com/CuBeRJAN/nix-problems
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.
I recently switched to NixOS and GNU Guix was also a possible option, and while in retrospective, I can agree with your points, there were two things NixOS does that I want that Guix doesn't offer:
I don't think the assessment "it's badly designed" is fair and your conclusion
(emphasis mine) is misleading ; it's not better despite being newer, it's better because it is newer and was able to learn from Nix and improve upon it. Also what would you call the Nix whitepaper if not the design behind Nix?