this post was submitted on 18 Dec 2025
29 points (96.8% liked)

Linux

60659 readers
193 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 6 years ago
MODERATORS
 

cross-posted from: https://feddit.org/post/23120439

Here, my summary of key features and decisions of Guix:

  1. Guix is a package manager that can (optionally) run on top of Linux distributions or other POSIX systems, like cargo, pip, conda or Conan. In difference to the pip and cargo package managers, it is language-agnostic, supports many different build systems and languages, and features around 29000 packages now.
  2. Guix allows to define a fully reproducible system. This works by using a declarative language for immutable version-controlled package descriptions, and by deriving any software from package definitions and a fixed version (commit hash) of the source code. In that, it is similar but much stricter than Nix and NixOS. The key point is that any software built, and all its dependencies, go back to unambigously, immutable versions of source code and build recipes - and all inputs to the system are open source and can be reviewed.
  3. Important for programming, this can also define isolated build and development environments, like Python's venv, but also Docker containers. This means that Guix can be used to develop, build, package, and deploy software, very much like Snap packages. And that's independent from the distribution you work in, very much like pip or cargo are independent from the system you work in. (And yes, it supports Rust!).
  4. This allows it, and also makes it technically possible, that any software package can be re-built and run years later. To make this legally possible, the official distribution of Guix also demands all components to be open source (FOSS). This is also a key difference to NixOS and non-free forks of Guix, which allow non-free binary packages, but sacrifice reproducibility. (To illustrate: If you have a binary, proprietary scanner driver in NixOS, and the owning company practices planned obselescence and decides that you should buy their new hardware, and pulls that driver, you are out of luck. In Guix, this can't happen.) (Note that as your own private conponents, you can define any package you like, you can also distribute your definitions as a complement to GNU Guix. Non-free packages for Guix do exist, in the same way as you can buy and run Steam Games software for Linux. Such non-free software just can't become part of the official Guix distribution, just like Amazon or Apple can't sell their non-free software via Debian or the Linux kernel project (or, for that matter, Apple has no obligation to market and distribute, say, Oracle products).
  5. All inputs being open source also means that any software component can be reviewed, that mis-features such as privacy-invasive behaviour can be removed, and that it is hardly possible to hide malware in the system. Because this also applies recursively to all compilers and build tools, this solves also Thompson's "Trusting Trust" problem. In fact, the whole system can be build from a 512 byte binary root (called MER). (Interestingly, that level of user control gets a lot of hate online -- certain companies don't seem to like it).
  6. Because it would take too long to build every user package from source every time, the produced packages are normally cached (while their correct binary content can be easily verified).
  7. The declarative description language for the packages is a well-defined, established, minimalist language called Scheme. This is a member of the Lisp family of languages. That Lisp is very well suited for declaratively building and configuring large systems has been proven with GNU Emacs, whose software, but more importantly, whole user configuration, is written in Emacs Lisp.
  8. The Scheme implementation used is called Guile. It has especially good support for the POSIX environment and has also much better-than-average interactive debugging capabilities compared to other Scheme implementations.
  9. Also worth noting is that the Guix project has superb online documentation. This is a practical advantage compared to Nix.

As example: you are on Debian stable and quickly want to try a recent version of the kakoune editor (as kakoune is in ongoing development): They are available under the Guix package manager. Just

guix install kakoune

and bang you have it!

How it works:

https://codeberg.org/guix/guix#headline-4

Manual:

https://guix.gnu.org/manual/en/html_node/Installation.html

Also informative for using Guix just as a package manager:

https://wiki.archlinux.org/title/Guix

top 11 comments
sorted by: hot top controversial new old
[–] oeuf@slrpnk.net 9 points 2 weeks ago (2 children)

I've been curious about Guix for a long time and did have a go at installing it as a distro on my new laptop (it didn't work). Still aspiring to hop to it one day. I think I'll try using it as a package manager on Debian until then.

[–] eldavi@lemmy.ml 3 points 2 weeks ago (1 children)

what do you get out of it that you can't get from apt?

[–] HaraldvonBlauzahn@feddit.org 4 points 2 weeks ago (1 children)

Thoroughly defined, reproducible environments and dependencies with very current software, for example.

[–] eldavi@lemmy.ml 4 points 2 weeks ago* (last edited 2 weeks ago) (1 children)

so it does more than "sit on top" of apt?

are these thoroughly defined environments more than the state of all known packages pertaining to your system?

[–] HaraldvonBlauzahn@feddit.org 3 points 2 weeks ago* (last edited 2 weeks ago) (1 children)

See my original comment.

Basically, it solves this problem with a few of cargo, snaps, flatpacs, docker images, pip, Conan, venvs, and hand-compiled packages installed into /usr/local and ${HOME}/.local and extra software in /opt added.

If you never had such problems, blessed you are, and forget about all this. Your life is as easy as it can be.

[–] eldavi@lemmy.ml 4 points 2 weeks ago (1 children)

I've been doing this by creating my own custom apt/yum packages and my own repos coupled w ansible-playbooks/puppet-manifests.

I've been needing this for years and never knew it existed. Lol

Thanks for making me aware!

[–] thedeadwalking4242@lemmy.world 3 points 1 week ago (1 children)

Nixos is similar but has more software support depending on your needs. Guix has a lot of improvements and less controversy tho

[–] eldavi@lemmy.ml 2 points 1 week ago (1 children)
[–] thedeadwalking4242@lemmy.world 3 points 1 week ago (1 children)

Lots of drama over in Nixos

[–] eldavi@lemmy.ml 2 points 1 week ago

worse than the kernel maintainers group? lol

[–] HaraldvonBlauzahn@feddit.org 1 points 2 weeks ago* (last edited 2 weeks ago)

For using it as a full distro (using Guix System), there are two options:

  1. Dual-boot your hardware into it. For this, you need compatible hardware - and because of requiring open-source drivers, you have to be more selective, like in the old Linux days. E.g. NVidia graphics cards won't work (but some good AMD Radeon cards will do). Advantage is you have full control over your hardware.
  2. Just run it in a virtual machine, like GNOME Boxes, or virt-manager, or VirtualBox. This one is easy. I am using Arch this way, in a virtual machine on Debian, and this has several advantages. (I use the Guix package manager in both Debian and Arch).