[HN Gopher] GNU Guix System
       ___________________________________________________________________
        
       GNU Guix System
        
       Author : pmoriarty
       Score  : 60 points
       Date   : 2022-05-27 15:14 UTC (7 hours ago)
        
 (HTM) web link (en.wikipedia.org)
 (TXT) w3m dump (en.wikipedia.org)
        
       | dudeinsf wrote:
       | Spent a year with Guix and writing my own configuration.
       | Definitely much easier to reason about using Lisp syntax over
       | Googling what random function of the DSL you need in Nix, but I
       | ultimately switched to Nix because of it's community and Darwin
       | support. Nix has a large group of folks who just want a sane,
       | declarative way to manage their environments, and to get back to
       | what they were doing. I want to spend the least amount of time
       | managing my tools and when running into problems with Guix,
       | digging for answers or jumping into the REPL just took too long.
       | Lots of devs in the Guix community seem motivated to build and
       | contribute back, which is great if you're looking to spend your
       | time doing that.
       | 
       | I now use Nix to share configuration between my Macbook Pro,
       | NixOS Desktop, VMs in my home lab, etc. Both Guix and Nix are
       | _amazing_ once you 've developed your configuration, I'll never
       | go back. I do a simple "./bin/nixos-update" and "./bin/macos-
       | update" and Nix takes care of the rest.
       | 
       | Occasionally I'll pull something upstream that borks my machine;
       | rolling back is so trivial, I'll just check nixpkgs for Issues to
       | see what's going on, where usually I'll find a 1-liner to fix it
       | or I'll wait for the next release.
       | 
       | Links to my configs https://github.com/dustinlyons/guix-config
       | https://github.com/dustinlyons/nixos-config
        
         | pmoriarty wrote:
         | How does the Nix configuration language compare to Guile?
        
           | soraminazuki wrote:
           | The Nix language is basically JSON with functions, similar to
           | Jsonnet. Despite the language being small, it makes it
           | surprisingly easy to deal with large scale configuration. The
           | Nixpkgs repository [1], which contains "over 80,000 software
           | packages," consists of a single large Nix expression spanning
           | thousands of files and somehow manages to be comprehensible.
           | 
           | [1]: https://github.com/NixOS/nixpkgs
        
           | dudeinsf wrote:
           | So I had to write a few functions in both. With Guile, very
           | straight forward using Lisp's powerful "data-as-code, code-
           | as-data" paradigms (the ` operator). A joy really, and
           | writing code just felt like writing Lisp, where one gets to
           | reason about small scope within simple functions.
           | 
           | With Nix, I had to learn how the whole thing works before I
           | could even get started. Nix is not a "normal" language,
           | you're essentially just writing chunks of configuration,
           | organized across different files, building up to one big
           | derivation (as Nix calls it) that gets interpreted.
           | 
           | Nix has syntax on how it expects the configuration to look
           | and what configuration it expects to be defined. You can
           | learn the syntax but it's still confusing (to me) as to what
           | configuration is always expected. And errors can still be
           | cryptic.
        
             | dieracdelta wrote:
             | FWIW debugging nix expressions is about to get much easier.
             | Master branch of the nix compiler now has a debugger.
             | Hopefully this will be stabilized in the next release
             | cycle.
        
           | breakds wrote:
           | As a former professional Lisp programmer, I think the Nix
           | language was pretty good. Not the easiest to pick up but I
           | like writing it very much once getting used to it.
        
         | mongol wrote:
         | What is the process if you would want to attempt to patch
         | something in nixpkgs? Does that happen? Is there a way with
         | your config to do that in an easy way? I think overlays is an
         | attempt to patch it for yourself, but if you would want to
         | prepare a "proper patch"?
        
           | dudeinsf wrote:
           | nixpkgs has many owners that span across the 80,000+ software
           | packages. When you open a PR against a specific package, the
           | owner is notified via CI that Nix Foundation runs.
           | 
           | To test with your own config, it's easy to instead of
           | importing nixpkgs, to import nixpkgs.applyPatches { patch }
           | with a path to your fix.
           | 
           | And yes, overlays are a great way to quickly override
           | attributes from a package definition, maybe while waiting on
           | others to fix upstream ;)
        
             | mongol wrote:
             | Thanks! I found there is also possible to define
             | "disabledModules" and then define your own to replace. I
             | think I will try that.
        
       | opan wrote:
       | I've primarily used Guix System on my main PC for a few years
       | now. It's a lot of fun.
       | 
       | The biggest negatives are packages being out of date or missing,
       | updates failing due to a broken package, updates taking over 24
       | hours because you had bad timing and the build server hasn't
       | built all the web browsers yet, and the configuration and
       | packaging can seem complicated to a non-programmer. Oh, and
       | qutebrowser is very broken and no one talks about it for some
       | reason. I suspect at times that I'm its only user on Guix
       | System...
       | 
       | I love having a list of packages easily edited with a text editor
       | and then applied. Rollbacks are easy and useful. Partial upgrades
       | help work around a few misbehaving packages stopping updates
       | (whether broken or just long builds, you can skip them in the
       | moment and then try updating them again later).
       | 
       | Most issues would be solved by having more contributors, which
       | will probably come with time. Although you still need people who
       | care about the same packages as you, or else your Guix Wishlist
       | entries may sit around unpackaged for years, or your packaged
       | things may stay on old versions.
       | 
       | I know several NixOS users, but I have struggled to get new
       | people to stick with Guix System for more than a few weeks.
       | 
       | Things would also improve if I were to learn/contribute more
       | myself, but I don't know that I have the spoons or the time. For
       | now I'll just keep getting by with the little bit I know. Guix
       | feels like the future, so I can't help but want to use it and
       | support it, even when it's rough in some spots.
        
       | smartineng wrote:
       | Is there some equivalent bootstrappability effort like in Guix
       | system ported to Nix? https://nlnet.nl/project/GNUMes-ARM_RISC-V/
        
       | orangebeet wrote:
       | I was pretty excited about Guix because I find Guile more fun and
       | less academic than Haskell (which Nix uses). Then I stumbled upon
       | some of the extremist propaganda by one of the main Guile
       | developers and promptly decided that it isn't for me.
        
         | ElevenLathe wrote:
         | Do you mean extremist in some general sense or just the usual
         | hardline FSF free software stance?
        
           | orangetuba wrote:
           | I have nothing against the hardline stance the FSF holds, but
           | I cannot support someone who joins an organization and then
           | starts a crusade against its founder over his personal
           | political views. I don't think politics belongs in open
           | source software.
        
         | NoThisIsMe wrote:
         | Could you elaborate please?
        
         | mistrial9 wrote:
         | FUD much? really, show links or go away Please!
        
           | orangebeet wrote:
           | You can read about it on his blood red marxist blog, twitter
           | etc:
           | 
           | https://wingolog.org/archives/2021/03/25/here-we-go-again
           | 
           | http://wingolog.org/archives/2019/10/08/thoughts-on-rms-
           | and-...
           | 
           | https://twitter.com/andywingo/status/1215946242225790983
        
             | mistrial9 wrote:
             | honestly, thank you for the links. I believe that evidence-
             | based discussion on social topics is useful, and you have
             | contributed to that.
             | 
             | regarding "bloody marxist" or whatever.. I like the
             | a-political, personal emphasis of GNU .. that means, I can
             | sit next to a Real Bloody Marxist, and drink coffee and
             | debug $lspci output.. seriously, I am OK with that, it
             | supports a worldview of 'tolerance'.. similarly for people
             | with serious depression, people who have had trouble with
             | food addictions, people who SMOKE TOBACCO ! all of that..
             | its part of a "plural society" which I personally support
             | everyday.
             | 
             |  _back to lspci output_ here
        
               | cowtools wrote:
               | Even as a moderate-libertarian myself, it is not really
               | surprising that a lot of free-software users and
               | contributors are communists. RMS himself seems to be
               | pretty left-leaning.
               | 
               | It is encouraging that most free-software
               | users/contributors can see past political squabbles and
               | work on tech that improves society more objectively.
        
               | orangetuba wrote:
               | I am all for discussion. The crusade and their bad faith
               | interpretation of his opinions are piggybacking on the
               | sometimes overly eager cancel culture of today.
        
             | pmoriarty wrote:
             | What do the links you posted have to do with Marxism?
        
             | Brian_K_White wrote:
             | I confess I do not understand.
        
             | 3836293648 wrote:
             | Rightfully criticising RMS for his objectively horrible
             | behaviour is extremist propaganda now?
        
               | orangetuba wrote:
               | Objective according to you?
               | 
               | https://rms-support-letter.github.io/
        
             | rscho wrote:
             | OMG! And a Marxist on top of that (judging by the color of
             | his blog)! He's clearly in league with the devil! Satanas!
        
             | bitwize wrote:
             | Wingo's politics are mainstream for an open source
             | developer in the 2020s. He's right about Stallman, he's
             | right that GNU needs new, collective leadership, and he
             | does a damn fine job maintaining Guile.
        
               | orangetuba wrote:
               | A lot of people disagree with that.
               | 
               | https://rms-support-letter.github.io/
               | 
               | If you think it's alright to join an organization and
               | then go out of your way to backstab its founder because
               | his social skills are lacking, then you're free to do
               | that.
        
         | rottingchris wrote:
         | Nix doesn't use Haskell. Nix uses its own language (the Nix
         | expression language):
         | https://nixos.wiki/wiki/Nix_Expression_Language
        
           | smitty1e wrote:
           | I can't figure out from Wikipedia if NixOS is a systemd user
           | or, like Guix, has a custom services facility.
        
             | opan wrote:
             | NixOS uses systemd.
        
             | jbboehr wrote:
             | NixOS uses systemd, although wrapped in their own DSL,
             | example:
             | 
             | https://github.com/NixOS/nixpkgs/blob/24903b5de2e07cc7b65ea
             | e...
        
             | yjftsjthsd-h wrote:
             | It currently uses systemd quite heavily. There at least was
             | some conversation about making it more service manager
             | agnostic so that others could be used, but I'm not aware of
             | that having gotten anywhere. I haven't checked in a while
             | though.
        
         | branon wrote:
         | I'm interested in an academic sense, what's the accusation
         | here?
         | 
         | Regardless of the person's views though I think if their code
         | is clean and they're not actively applying said views to harm
         | other contributors, live and let live...
        
           | orangetuba wrote:
           | Agreed. Actively trying to harm other contributors (Richard
           | Stallman) is the problem here.
        
             | acdw wrote:
             | genuinely curious here: when was the last time rms
             | contributed anything other than bad takes or toxic behavior
             | to the fsf?
        
               | orangetuba wrote:
               | I don't have a clear overview of the exact timeline, but
               | at some point he created the FSF, the original GCC,
               | Emacs, GDB, GNU Make, parts of the GNU userspace tools,
               | the predecessor to Wikipedia, the copyleft concept and
               | the GPL license among other things. How does it compare
               | to your contributions?
        
               | maleldil wrote:
               | RMS can be an amazing engineer that helped shape the tech
               | world as we know it today, and still be a horrible human
               | being.
        
               | mongol wrote:
               | I am quite sure he is not a horrible human being. I
               | reserve that word for people like Putin.
        
       | minimilian wrote:
       | When I tried this about a year ago, it wasn't possible to set up
       | full-disk encryption with hibernation.
        
         | wdkrnls wrote:
         | It also seems to be impossible to use a keyfile for unlocking
         | additional disks.
        
       | cowtools wrote:
       | I am somewhat hopeful for what Guix might mean for their
       | "Shepard" init system and (specifically GPL) microkernels like
       | HURD. The guile package management system isn't to interesting in
       | my opinion: we already have distros like Gentoo, Nix, Arch,
       | Alpine, etc. that support both build scripts (usually as some
       | specialized shell script) and binary packages. If anything, I
       | think as programmers we tend to lean towards application-specific
       | languages where we ought to favor generic languages for the sake
       | of simplicity.
       | 
       | Because it's under the GNU name and seems somewhat kernel-
       | agnostic, I think this might lead to the case where we can
       | finally point towards a operating system and say "that's GNU".
        
         | pmoriarty wrote:
         | _" The guile package management system isn't to interesting in
         | my opinion: we already have distros like Gentoo, Nix, Arch,
         | Alpine, etc. that support both build scripts (usually as some
         | specialized shell script) and binary packages."_
         | 
         | The big win you get with Guix over the package managers in the
         | other systems you reference (except for Nix) is deterministic,
         | bit-identical, reproducible builds.[1]
         | 
         |  _" as programmers we tend to lean towards application-specific
         | languages where we ought to favor generic languages for the
         | sake of simplicity"_
         | 
         | Guix does use a general purpose programming language: Guile
         | Scheme.
         | 
         | [1] - https://en.wikipedia.org/wiki/Reproducible_builds
        
           | cowtools wrote:
           | If I have to learn a programming language just so I can use a
           | single thing, then it might as well be an application-
           | specific language.
           | 
           | That being said, I will look into guile anyways. I have a
           | little project I'm working on that could benefit from a lisp-
           | like configuration file, and I've currently implemented a
           | crappy s-expression interpreter already.
        
             | rscho wrote:
             | Guile scheme is made to be easily embeddable. You should
             | definitely try it. If you want to go the minimalist way,
             | there is also S7, which is very good.
        
       | BaseballPhysics wrote:
       | I loved the idea of Guix and considered experimenting with it on
       | my laptop, but unfortunately their insistence on free software
       | purity makes it tough to adopt. The Linux Libre kernel is totally
       | unsuitable for use on any modern equipment due to the unavoidable
       | need for proprietary firmware, and in general any use of non-free
       | software isn't just avoided in the community/ecosystem, it's
       | something no one is even allowed to talk about.
       | 
       | I can certainly admire and appreciate that level of idealism and
       | adherence to principles, but unfortunately, at least IME, it
       | limits where Guix could be adopted.
        
         | acdw wrote:
         | I've hit this before on official channels, too (namely #guix).
         | I did discover the forbidden knowledge of non-guix repo at one
         | point, but I agree that it's silly to not even acknowledge its
         | existence. just turns people off honestly. we're not all rms.
        
         | opan wrote:
         | There is a #nonguix IRC channel on the same network (as well as
         | a Guix Channel containing packages), and you have the option to
         | install regular Linux instead of Linux-libre. I am lucky to not
         | need to do any of this, but the option is there, and several
         | people take advantage of it.
         | 
         | They simply do not wish to discuss non-free software in the
         | main official channel. If this is your only holdup, I hope
         | you'll give it another try.
        
           | BaseballPhysics wrote:
           | The total lack of any reasonable support anywhere online
           | outside of an IRC channel makes this a tough thing to
           | justify. Guix is already a niche solution in a niche area of
           | distributions and package management, and finding solutions
           | to problems is hard enough. The fact that there's an actual
           | social stigma to even mentioning the non-free repo
           | dramatically reduces the chances you'll find any meaningful
           | help online.
           | 
           | Heck, I recall hitting Google and trying to search for "Guix
           | stock kernel" and finding zero meaningful results beyond some
           | hints of a non-free repo that no one could point to or talk
           | about in any of the "official" project venues.
        
             | wdkrnls wrote:
             | There is also a gitlab repo with easy to follow
             | instructions for making custom installation media with a
             | single Guix command and a git clone.
             | 
             | https://gitlab.com/nonguix/nonguix
        
       ___________________________________________________________________
       (page generated 2022-05-27 23:02 UTC)