Most active commenters
  • kwk1(3)
  • positron26(3)

←back to thread

195 points todsacerdoti | 30 comments | | HN request time: 1.559s | source | bottom
1. idlip ◴[] No.44573461[source]
Its nice read. We need more of comparative posts by user familiar with both nix and guix.

We see bias with most discussions.

Only cons with Guix I see is, lack of infrastructure and less volunteers to work on guix eco-system. If its solved, I can imagine guix can improve exponentially.

replies(4): >>44607020 #>>44607098 #>>44608492 #>>44609855 #
2. kwk1 ◴[] No.44607020[source]
Guix recently moved from Savannah to Codeberg, which hopefully will help move the needle on infrastructure and volunteer quantity concerns.
3. tempfile ◴[] No.44607098[source]
The major con is in the article, it is super slow to update. Half an hour is just crazy, nobody will move to that if they know.
replies(7): >>44607183 #>>44607656 #>>44607956 #>>44608088 #>>44608768 #>>44613046 #>>44614065 #
4. kyoji ◴[] No.44607183[source]
I play around with a Guix install in a VM, and with less than half of my system resources, a `guix pull` with a `guix system reconfigure ...` takes about 10 minutes. That said, if a pull happens to include a kernel update it can take much longer. I think pinning large packages (like the kernel) that may not need incidental updating is key to keeping pull times lower.
replies(1): >>44607707 #
5. kwk1 ◴[] No.44607656[source]
It doesn't usually take that long, but the first `guix pull` is quite slow, and what should be a no-op of running it a second time immediately afterwards also takes too long.

Edit: Just to provide a measurement, on my Framework 13 with AMD Ryzen 5 7640U, a `guix pull` which pulled in 1 nonguix commit and 64 guix commits took 2m10s, and a subsequent no-op `guix pull` took 1m18s.

6. tadfisher ◴[] No.44607707{3}[source]
10 minutes is still an order of magnitude slower than a nixos-rebuild if you're hitting the cache, and there's no issue with forgetting to rebuild the guix profile. If you include nonguix (as is required for the 99% of users who need nonfree blobs) you get the 30-50 minutes as described in the article. I believe Nix-the-language being lazily evaluated is a big part of this; you can even inadvertently evaluate nixpkgs multiple times and not notice.
replies(1): >>44608557 #
7. nbf_1995 ◴[] No.44607956[source]
From the article:

> My goal was to take my Unchartevice laptop with its strange Zhaoxin x86_64-compatible CPU...

> Sure, this is a laptop with a CPU broadly equivalent to old Intel Atom CPUs...

Yes, guix pull is slow, but the author is using some old/exotic hardware. The last time I tried guix on a 5th gen dual core i5, the initial pull was not that slow. And as other commenters have pointed out. The first pull is the slowest by far.

8. positron26 ◴[] No.44608088[source]
Important question is if its fixable.

Nix is pathologically recursive, lazy, and uses fixed points, things that are very apt to changing something that cascades through a bunch of dependents. Nix's runtime is not magic. Guile should be able to expose a language and evaluate it in a similar way.

For my part, I've not opted into Guix because it's a GNU project, and I've decided to avoid anything in the FSF sphere of influence. Their orthodoxy turns off contributors and they have a history of taking insular hard-liner approaches that are utopian. Outside of coreutils that are about to be fully subsumed by rewrite-it-in-Rust (which has a community that is not a fan of the GPL), what has had FSF backing and been successful? Linus starts two of the most influential pieces of software in human civilization and RMS wants to name the awards. The pragmatic culture that shifted away from the FSF has I think largely adopted Nix, and it shows. Nix is open for business, available on lots of platforms, has commercial entities built around its success.

replies(6): >>44608192 #>>44608439 #>>44608695 #>>44608868 #>>44610092 #>>44610324 #
9. kwk1 ◴[] No.44608192{3}[source]
Agreed on the assessment, but for me, part of the appeal of Guix is a way to turn that ship around.
10. pmarreck ◴[] No.44608439{3}[source]
isn't there nonguix? you know, the Ashley Madison of guix?
11. msgilligan ◴[] No.44608492[source]
> We need more of comparative posts

The article focuses on a comparison between GUIX _system_ and NixOS. It would be interesting to see an equally thoughtful comparison that just focuses on GUIX vs. NIX as package managers used on another Linux distribution (e.g. Debian.)

In this case, GUIX might fare better as you won't have to worry about the complexities introduced by binary blobs needed for boot, etc.

replies(1): >>44616238 #
12. opan ◴[] No.44608557{4}[source]
>(as is required for the 99% of users who need nonfree blobs)

If you forgo the built-in WiFi, the ThinkPad T440p (Haswell) works fine without any blobs (speaking from experience). I think all newer gens need iGPU blobs, sadly, but I wanted to point out a viable middle ground between modern Nvidia gamerware setups and Librebooted X200s that can barely browse the web.

13. bheadmaster ◴[] No.44608695{3}[source]
> what has had FSF backing and been successful?

GCC is still indispensable. I doubt it will be rewritten in Rust any time soon.

replies(2): >>44609186 #>>44610596 #
14. davexunit ◴[] No.44608768[source]
Regular updates do not take anywhere near a half hour.
15. davexunit ◴[] No.44608868{3}[source]
For what it's worth the association with GNU is basically historical at this point. RMS has never accepted the original vision of the project (to be the official GNU OS) and the project outgrew GNU's dilapidated infrastructure a long time ago, which the project is finally addressing with the migration to Codeberg. The FSF gave the project a place for people to donate specifically to Guix but have never really embraced it, otherwise. That has been superseded by a dedicated European nonprofit for Guix. The most recent Guix Days gathering before FOSDEM featured a lengthy conversation of breaking ties with GNU entirely but no decision has been made on that, yet.
16. positron26 ◴[] No.44609186{4}[source]
GCC was one subject of The Cathedral and the Bazaar. The development process was changed to more closely mimic Linux and the original GCC steering committee was dissolved. Cygnus had a big role in GCC becoming an industry fixture for its hayday. Eventually the lack of big revenue meant that the license became an annoyance that industry could deal with by nurturing Clang and LLVM with acceptable quantities of money. In FSF orthodoxy, they were supposed to lose that fight.
replies(1): >>44614041 #
17. exe34 ◴[] No.44609855[source]
Would it be possible to automate nix->guix for packages? A lot of nix packages (e.g. python) I think are handled automatically. If guix could build on that huge package repo, it would really help.
replies(1): >>44611244 #
18. sshine ◴[] No.44610092{3}[source]
> Nix is pathologically recursive, lazy, and uses fixed points, things that are very apt to changing something that cascades through a bunch of dependents.

While that may be true, it is particularly the case for nixpkgs; i.e., you may imagine a contender to nixpkgs that is less tangled.

I’ve recently enjoyed reading on research into simpler alternatives; GrizzlT’s deep-dive into nixpkgs design patterns, and nrdxp’s atom format:

https://grizzlt.prose.sh/corelib-revolutionary-nixpkgs

https://nrd.sh/blog/atom-anatomy/

19. johnisgood ◴[] No.44610324{3}[source]
> Outside of coreutils that are about to be fully subsumed by rewrite-it-in-Rust

Highly doubtful to happen anytime soon.

replies(1): >>44611940 #
20. pxc ◴[] No.44610596{4}[source]
Off the top of my head: GCC, Emacs, coreutils, sed, grep, find, parallel, Guile, Coreboot, GNOME, GIMP, GnuPG, Bash

In each case, development is the work of the developers, and they themselves deserve most credit. But the FSF and the GNU project have certainly been involved with lots of software that is important, widely used, and works well.

GNU software is still responsible for huge and often critical chunks of the stack in most Linux distros.

21. amelius ◴[] No.44611244[source]
I suppose an LLM could easily translate the build scripts. It will not be perfect, but probably will save a lot of work.
replies(1): >>44611695 #
22. evolve2k ◴[] No.44611695{3}[source]
I can’t find the quote right now; but it’s along the lines. LLM’s can help with the first 80% of coding which is introducing bugs, but terrible at the other 80% of the time which is removing said bugs.

Lean and agile theory says that quality is improved and efficiency gained by going upstream and eliminating the things that are producing poor quality in the first place.

Llm code tools may be useful to give syntax tips, but like a thoughtless dev on a team, likely introduce more work than they get done.

replies(1): >>44615308 #
23. positron26 ◴[] No.44611940{4}[source]
Already happening my friend. uutils. It is MIT licensed. Funnily, I recall someone had a story at MIT about not liking passwords. I'm sure they were right?

Check out the spice: https://users.rust-lang.org/t/im-shocked-the-rust-community-...

replies(2): >>44612780 #>>44613523 #
24. bjoli ◴[] No.44612780{5}[source]
I tried just a few months ago. Two shell scripts I use failed due to something wonky with sort.

Everything else worked well enough for my use case.

25. tazjin ◴[] No.44613046[source]
There's a few points to make here, actually, based on discussion of the article in the weeks before it hit HN:

Two major and immediate reasons why the pulling is slow are clear and fixable:

1. Guix will try to substitute from unreachable caches for a LONG time before giving up, and Guix infrastructure is less developed than Nix. When I kept experimenting after this post I set up https://mirror.yandex.ru/mirrors/guix/ eventually which fixes the substitute problems for me (Guix mirror on bigcorp infra).

2. Guix by default pulls its channel from GNU Savannah which, for some reason, is incredibly slow in serving git. The project moved over to Codeberg, and setting the URL to there significantly speeds up pulling.

In NixOS, channels (esp. the unstable ones) advance when CI finishes building a certain subset of packages successfully (this is what https://status.nixos.org/ shows). CI populates the binary cache, so this means that a channel HEAD always has a large number of packages available in the cache. Guix has no such guarantees, so updating to any latest commit might even yield one where you end up rebuilding all of its Scheme from scratch or whatever. Picking a commit that's a few days old helps with this.

I eventually switched to a laptop with a "normal" Intel CPU, and pulling did not magically turn fast. In fact, some of the slowest stages (there's one where it says "Computing Guix derivation") don't seem to exercise the CPU much at all. I haven't spent time looking at why (yet).

Guix System does a lot more per-user stuff than NixOS by default, which means that you'll likely end up pulling multiple times.

Pulling remains a much slower operation than Nix evaluation in any case.

There's a few ways to make this all more palatable (e.g. the `guix time-machine -C $channels` setup), but those might be for a follow-up post in the future.

26. johnisgood ◴[] No.44613523{5}[source]
It may be happening in your bubble, yes, but not outside of that. They are not 1:1 replacements at all, with probably logic bugs introduced (see their Issues page) as well (call them regressions). I would not hold my breath if I were you.
27. fc417fc802 ◴[] No.44614041{5}[source]
Not necessarily. In (my understanding of) FSF orthodoxy the existence of a viable GPL alternative forces the hand of competitors in certain respects. LLVM could never drift towards a more proprietary model and expect to succeed at it so long as GCC remains viable.

"Best" doesn't matter, you just need a seed crystal that's good enough.

28. rolandog ◴[] No.44614065[source]
I think that also one needs to be familiar with modifying the guix daemon service to allow substitutes be downloaded so that you don't have to build derivations [0], [1].

Once you modify the guix daemon service and approve the substitute server keys with `guix archive`, your experience should be much faster.

[0]: https://guix.gnu.org/manual/en/html_node/Substitute-Server-A...

[1]: https://guix.gnu.org/manual/en/html_node/Getting-Substitutes...

29. exe34 ◴[] No.44615308{4}[source]
The thing about chatgpt/cursor is that they seem very good at fixing things if they have verbose errors - and nix is very verbose about what it hates in your config. I've given errors to chatgpt and it fixed it for me. With cursor, I had something displaying in a really weird way (plotting a map in js), and I gave it a screenshot and it fixed it immediately.

I would never use llm code in prod without understanding it, but for one-off utilities it has been really great so far.

30. spease ◴[] No.44616238[source]
Personally, I’d really like a crossplatform declarative package manager in a mainstream or mainstream-style language, where the nixpkgs equivalent can be JITed or AOTed including the shell scripts, so it isn’t painful to work with and can switch into an environment almost instantly.

Though nix the language syntactically isn’t that complex, it’s really the way that nixpkgs and things like overrides are implemented, the lack of a standard interface between environments and Darwin and NixOS, needing overlays with multiple levels of depth, etc that makes things complex.

The infuriating thing about nix is that it’s functionally capable of doing what I want, but it’s patently obvious that the people at the wheel are not particularly inclined to design things for a casual user who cannot keep a hundred idiosyncrasies in their head memorized just to work on their build scripts.