[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)