this post was submitted on 20 Jul 2024
103 points (93.3% liked)
Linux
48090 readers
743 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
Guix - It's basically an abstraction over software compilation and distribution. It uses guile lisp language as glue to bind it all together. (Full programming language to configure with)
The beauty arises if you want to get a minimal os running with a single application and package it either as a full iso or a docker container you can. Or if you need to get an OS to run as your router.
It's also highly encourages free software to the point, that proprietary software actually feels like huge downgrade to include. (Compilation from source is always available)
I've been using this only for 11 months. I've barely scratched the surface on what is possible. So I'm pretty sure I'm not making it justice on what a gem it is. For example: Only recently I started to use programs in an immutable way.
The guix manual is pretty well explained. Now i'm learning Guile (Scheme's dialog) and learning to configure both guix and guix system.
The fact of being able to revert system and home environment software installation and configuration without breaking anything, is too good to be true.
It's also very cool to define packages either as compiled software or source packages to compile.
Since there are not many developers there are some build systems that are more prioritized than others. If you come from emacs side of things, it's great. Rust is around 4 versions older. And the single developer recently burned out. The package manager is a lot like nixos, so every package requires work to introduce to the system.
In NixOS there's a bot that automatically bumps versions
The NixOS ecosystem while maybe sometimes both chaotic and heavily centralized just seems miles ahead of what Guix System has to offer unfortunately; nix is a weird language (I'm not qualified to rate it but people have called it a bad DSL), but it does the job, and there were some factors that ruled out Guix System for me. Secure Boot support was one of them, which NixOS doesn't support "natively", but there is Lanzaboote. For better or for worse this kind of forced me to look into flakes very early.
Thanks for the info, although versioning afaik not the thing that keeps it behind. There are tools to import the necessary packages with 'guix import crate'. It automatically selects the necessary packages.
Difficulties arise when Cargo.toml for example uses git as source. Then you have to pull and write specifications for not a standard package. The build system is isolated and cannot download anything off the internet.
So what nix does is it hashes the inputs, so git still works even immutably if the hash matches
Does nix require the exact commit be written out for the package, or does it generate a hash during the build taking the newest git commit?
You need to write the hash in the package, so it requires the exact commit