21
submitted 2 weeks ago by csantosb@lemmy.ml to c/guix@lemmy.ml
you are viewing a single comment's thread
view the rest of the comments
[-] rrobin@lemmy.world 4 points 2 weeks ago

It is a long article covering a bunch of things. But I'll try to cover the items in the comments.

GUIX puts things in different location, making it incompatible with fhs standard. This important for guix to be able to implement its core features, namely these TWO

  • guix can install/run multiple different versions of the same package (bash, firefox, whatever)
  • guix can run/rollback your system/packages to a previously known state by swapping a link (and loading some settings)

The problem for the "consumer" here happens when they try to drop a binary they download from the internet and it fails to run because:

  1. it will not run because it cannot find the link loader lib/ld-linux-x86-64.so.2
  2. it cannot find something else where it expects (/bin/bash, /usr/lib64/libgtk.so, etc)

The article covers two solutions for this problem: the first is patchelf (but is only meaningful for link loader and libs) and the second is to run inside a container (guix shell --container --emulate-fhs). I should note here the container solution is not that different from e.g. flatpak or similar.

Now for my personal (and very biased) opinion. I do like that guix enforces this and that random binaries from the internet don't simply run here.

Historically distros packaged software for various reasons - but one side effect of this is that package maintainers (i.e. your distro volunteers) vetted changes/updates, tested new releases and reported issues upstream (or patched it). For me this is an important part of Linux distros not being a monoculture.

Finally on a hopeful note. I don't think this is insurmountable. The article mentions two things that already exist 1) guix packages that wrap binaries in containers and 2) guix import that does auto imports for libraries. In principle there could be a tool that glues these two to automate it but this will probably happen in one of the projects that packages binaries (nonguix probably).

[-] jaennaet@sopuli.xyz 2 points 1 week ago

Right, yeah, so there's occasionally a bit more jumping through hoops, but the end result is a much more manageable system where eg. updating thing X won't clobber the fuck out of dependencies that thing Y needed, and in general you get a more "containerised" setup with a declarative way to set it up?

What's the upside of Guix vs Nix (except eg. the syntax that @tetris11@lemmy.ml mentioned)?

[-] tetris11@lemmy.ml 2 points 1 week ago

There's also the fully reproducible build starting from a 357 byte seed file (cpu-specific) + guile library, to generate a full blown fully reproducible OS

https://guix.gnu.org/en/blog/2023/the-full-source-bootstrap-building-from-source-all-the-way-down/

[-] jaennaet@sopuli.xyz 2 points 1 week ago

Huh. Not only is that pretty neat from a nerdy "they did what?" perspective, having a fully reproducible OS setup is definitely very useful in many contexts. No surprise that the first blog post of that series references the classic Thompson Reflections on Trusting Trust paper about his cc backdoor

[-] tetris11@lemmy.ml 2 points 1 week ago

Yeah, that trusting trust paper really opened my eyes on how compiler development works through a series of hacks

this post was submitted on 15 Jul 2025
21 points (100.0% liked)

Guix

446 readers
1 users here now

Guix is an advanced distribution of the GNU operating system developed by the GNU Project

founded 5 years ago
MODERATORS