5 ms·
I think biggest ones are i) nix command is a bit complex, but it's getting redesigned [1] & ii) nixpkg definitions sometimes contain a lot of cruft. I've found
by nextos 9y ago
I think biggest ones are i) nix command is a bit complex, but it's getting redesigned [1] & ii) nixpkg definitions sometimes contain a lot of cruft.
I've found Guix and GuixSD, which are a GNU-blessed Guile Scheme-based reimplementation of Nix and NixOS, more aesthetically pleasing. Quite simple and elegant in fact.
The major differences are that Guix DSLs are implemented on top of Scheme, whereas Nix uses a custom DSL. Furthermore, Guix avoids systemd and uses GNU herd instead.
[1] https://github.com/NixOS/nix/issues/779 https://github.com/NixOS/nix/issues/779
- jitl 9y agoGuix uses it’s own init system implemented in Scheme: Sheperd (https://www.gnu.org/software/shepherd/ https://www.gnu.org/software/shepherd/) Herd/Hurd is a kernel, not an init system, although since systemd is Linux only, using a different kernel implies using a non-systemd init system.
- agumonkey 9y agoShepherd is not a kernel, Hurd is, and shepherd page mentions a relation, that dmd/shepherd was developped closely to Hurd but it not the same thing.
- nextos 9y agoSure, I wrote herd not Hurd! herd is the commandname of Shepherd client: https://www.gnu.org/software/shepherd/manual/shepherd.html https://www.gnu.org/software/shepherd/manual/shepherd.html
- jitl 9y agoAh — confusing as Herd is the second recursive acronym of Hurd... sorry to pedantic :-)
- xelxebar 9y agoNitpick---but while we're here---Hurd technically refers to the set of (microkernel) servers. The microkernel itself is Mach. In spirit, Mach and the Hurd servers together provide what the Linux kernel provides monolithically. Anyway... :)
- gcoda 9y agoFor my practical reasons I can not use pure GNU distributions, I am not aware of easy community way to re use packages for other distro or something hacky like that. Not everyone have brainpower and time to build custom packages for rare distro, it is a shame, I really like Guix. NixOS got some recepies for using not 100% libre software.
- nextos 9y agoThere are repos around packaging tons of non-free (mainly scientific) software for Guix.
- tilpner 9y agoI was told guix has some support for importing normal Nix packages, but I don't know how well it works in practice. https://www.gnu.org/software/guix/manual/html_node/Invoking-guix-import.html https://www.gnu.org/software/guix/manual/html_node/Invoking-...
- jitl 9y agoThis is also what keeps me away from Guix. I get that there are third-party repos with non-free software, but using a fringe package of a fringe packager is too far for me. There’s no good choice here: Nix package definitions and tools are inscrutable and user-hostile; and the alternative Guix is burden with GNU/free software zealotry and GPL. A somewhat comparable third option is Habitat, from Chef. It also has a pure build system, a package source, and pure, discrete environments. But it’s also got a bunch of service orchestration parts... Hopefully the Nix redesign will make the tools more palatable for mortals.
- nextos 9y agoWhat kind of non-free tools are you missing from Guix? The only notable omission is linux, as Guix is based on linux-libre instead. But changing this is a matter of 1 LOC.
- thomastjeffery 9y ago> But changing this is a matter of 1 LOC. And how difficult is it for a new user to find that line?
- pmoriarty 9y agoOne of the major turn-offs for me in regards to Nix was that it uses a ton of bash scripts. Guix's use of Scheme is a lot more elegant and powerful, and a lot less hacky than bash.
- sly010 9y agoYou could use nix the same way guix uses scheme. The lowest level operation in nix is not "run-this-bash-script" but "run- this-executable-with-these-arguments".
- davexunit 9y agoBut even still you are mixing languages, so the problem remains. The issue is not that Nix uses Bash, but that Nix uses different languages for the host-side and build-side. AFAIK people aren't writing the build-side code in the Nix language, and I'm not sure if it even has the features necessary to do it. Guix unifies the different layers of code execution with a single language, and using a Lisp enabled that design. For a complete explanation of this design, see the "Code Staging in GNU Guix" paper: https://arxiv.org/abs/1709.00833 https://arxiv.org/abs/1709.00833
- thomastjeffery 9y ago> Nix uses different languages for the host-side and build-side. I'm not sure what you mean by that. Nix packages are Nix expressions.
- davexunit 9y agoThose package expressions have Bash snippets embedded in them that run on the build daemon. The daemon doesn't evaluate Nix code.
- thomastjeffery 9y agoHow is that a problem?
- k__ 9y agoWhen will the redesign be merged? It's over a year that I first read about Nix and they talked about the redesign.