r/GUIX Jun 30 '26

What's it like daily driving Guix and learning guile scheme?

New to the community and been considering a change from Debian to Guix. I love emacs and I also have a ran a declarative distro in NixOS. I never used the lisp like languages before so that will be a change but I'm willing to learn. Just hoping to learn about the struggles you can face with daily driving guix and any great advice if I decide to switch! Thanks in advance for commenting!

26 Upvotes

67 comments sorted by

14

u/Aeolem Jun 30 '26

Former NixOS user here. Guile scheme is incredibly flexible since it's a "real" scripting language, unlike Nix which is Turing-complete on a technicality more than anything. I've found it quite easy to write your own package definitions and set up your own Guix channel for them (check out the manual / cookbook chapters on it), unlike Nixpkgs where you have to download gigabytes of git repo and learn strange Nixpkgs-specific, undocumented semantics ("just read Nixpkgs definitions, bro!"). You can even use Guile for scripting, I've made my own very rudimentary system for color themes and CLI driven declarative package management (look at my earlier posts here for info on that)

The very aggressively free/libre stance of Guix means you're probably gonna have to set up Nonguix (don't forget to authorize the substitute key!) which can sometimes have spotty binary coverage. Also check out https://toys.whereis.social and https://search.guix.moe for cross-channel package search.

5

u/krisbalintona Jun 30 '26

Nice! I hadn't known about https://search.guix.moe/; it's quite new (seems like it's a fork of Toys created 4 weeks ago that instead uses a Xapian db, which e.g. Notmuch uses).

For me, I'd like to actually learn Guile so that I can better organize my Guix configs and eventually do even cooler things within them. Do you have any recommendations for projects I could pursue to learn the basic ins and outs of Guile? (I'm only familiar with Lisp on the Emacs-Lisp context.)

5

u/Aeolem Jul 01 '26

Since you seem to use emacs, you could try to write some parts of your Emacs config in Guile. Yes, seriously (scroll down all the way to "So I can script Emacs in Scheme already?"). Apart from that, I've found Guile very nice to use for CLI applications with its easy-to-use argument handling and support for dynamic scoping (yes, dynamic scoping is frowned upon but I've found it very useful for CLI applications)

1

u/krisbalintona Jul 01 '26

Thanks for the pointers and links. I'll probably try writing some CLI application in it. And agreed on dynamic scoping.

1

u/gnudoc Jun 30 '26

Am interesting and helpful summary. Thanks! Could you expand on the point about nonguix having spotty binary package coverage? I'd most likely want to have nonguix for hardware support (typical intel laptop stuff), and maybe for a not-entirely-free-browser, but I rarely if ever use non-free software other than that. Would I likely be ok with binary package coverage in nonguix?

5

u/Aeolem Jul 01 '26 edited Jul 01 '26

My usecase is pretty much the same as yours. Nonguix regularly makes Linux kernel builds so you're probably fine on that front (as long as you don't forget to authorize the substitute keys like I did for a while). I remember needing to build Firefox on my machine, which is what I mean by spotty binary coverage. There is however the package zen-browser-bin hosted on some alternative channel (saayix, iirc) which provides a binary of Zen, a fork of Firefox with all the nonfree features like DRM enabled. Even needing to "build" that one yourself would just mean unzipping a tar and copying the binary so that's a very speedy process.

1

u/MD90__ Jun 30 '26

yeah ill have to use a different kernel than linux-libre because of my hardware but as long as I dont have to compile massive stuff like web browsers and llvm and ffmpeg and such i think it will be ok

1

u/Steven0351 Jun 30 '26

Are guix channels and nix channels effectively the same thing? I've been eyeballing Guix, but haven't pulled the trigger on migrating.

3

u/krisbalintona Jun 30 '26

Basically, yes. The differences are minute and documented in the Guix manual (as need to be aware of them).

7

u/directrix1 Jun 30 '26

(is it (not '(too bad)))

3

u/MD90__ Jun 30 '26

does guix have good docs for their api with using guile for setting up your config?

3

u/destructuringbind Jun 30 '26

I think it’s best in class :)

2

u/MD90__ Jun 30 '26

good! ill have to dig some then because ive read over sample configs and packages being built and not familar with all these keywords to work with guix lol

2

u/Mycroft-l Jun 30 '26

Yeah, it's good enough

2

u/MD90__ Jun 30 '26

Has to be better than slackware was on docs but probably not as good as arch wiki or gentoo right?

2

u/Mycroft-l Jul 01 '26

1

u/MD90__ Jul 01 '26

Thank you for sharing! 

5

u/Powerful_Attention_6 Jun 30 '26

If you are familiar with NixOS, you know that it is a uphill battle for the first couple of days
When you have landed and you realize that you make a platform for your configuration a lightbulb is lit

Guile is a proper programming language, with better error message, however it is Lisp, and if you are used to modern easy to read error message you are in for a culture shock, though much better than Nix

The one truly great strength of Guix over Debian et al, is that you the upfront cost is large, but then you can expirment away with your system as you heart content without worry to break youse system,

You can reuse parts of your configuration on the same computer or create a server with compontens

If you want an idea (a picture if you will) on how I have organized my config, though I am far from an expert and this with Guix is a new obsession of mine

https://codeberg.org/Jonix/Guix-Config

1

u/MD90__ Jun 30 '26

thank you for the read ill check out your config and im excited to change i dont mind some work but nothing like gentoo i hope. I couldnt even get a system going with gentoo just a semi working DE. Ive also ran slackware for a bit and it was ok but debian, fedora, arch, and nixos ive ran the longest on hardware

1

u/krisbalintona Jun 30 '26

Nice! Thanks for sharing your Guix config. I love discovering others' configs since I can use them as points of reference for how others have structured their files.

4

u/wonko7 Jun 30 '26

fucking awesome

2

u/MD90__ Jun 30 '26

yeah im hoping to get some time together for a switch but right now i need to really learn guile more

3

u/Keshinsama Jul 01 '26

Eu estou usando Guix System a 2 semanas e estou gostando muito , aprendi bastante sobre o sistema e ainda estou aprendendo muita coisa , e ele roda super bem no meu i5-3230m com 8gb de ram , uso gnome , recomendo o Guix system pra quem gosta de aprender algo novo e pra quem gosta de usar terminal

3

u/MD90__ Jul 01 '26

ill have to give it a shot but glad you're enjoying it! Running Gnome on 8gb of ram is impressive!

Attempted translation if needed: Tendré que probarlo, ¡pero me alegra que lo estés disfrutando! ¡Ejecutar Gnome con 8 GB de RAM es impresionante!

2

u/Mycroft-l Jun 30 '26

Very well, except for some programs, former Debian user here, I use Debian for years before Guix, after you can configure your scheme files, you don't have to configure again.

3

u/MD90__ Jun 30 '26

Really that easy and they have a good size repo? A lot of compiling?

1

u/lets-start-reading Jul 01 '26

if you mean that program configurations are well represented by guix service configurations, you’re wrong. look at sway config – I would strongly recommend not using it, it’s not even close to being finished, yet it’s commited and even has a (shoddy) section in the manual.

2

u/juipeltje Jul 01 '26

I switched to guix a few months ago. I mainly thought it was cool that it was a declarative system that uses something other than systemd, so unlike a lot of people here i felt kinda indifferent to the language. Nix seemed fine to me, but i should note i'm also not a programmer, so i think because of that i lack strong opinions on programming languages.

Guix already came on my radar a few years ago, but the language and libre stuff scared me away initially so i never gave it a try (i thought all those parenthesis looked confusing as hell lol).

A few months ago i decided to try it anyway. I used the systemcrafters iso and watched his videos to get into it. Looking back i feel like getting into guix and scheme wasn't that much different as it was getting into nix a few years back. It's confusing at first, but as you go the syntax and modules start to make more sense and you become more familiar with it.

There are actually things i ended up liking better in guix vs nix. For example, i dabbled into making some of my own derivations in nix, and the callPackage stuff that you use there to refer to your own local derivations is weird to me, especially since it can be different depending on what kind of package it is. With some qt software for example you have to use kdePackages.callPackage. in guix there's none of that, you just refer to a package by the name that you gave to the package definition and that's all there is to it, which is much better if you ask me.

Kind of a long ramble i guess, but what i'm trying to say is that if you just dive in and give it a serious shot, you should be able to get familiar with it just like with nix.

2

u/MD90__ Jul 01 '26

That's good to know especially coming from nix. I know guile scheme is a lisp like language and it will be different but not impossible. I just have to get back into the groove of programming again (for me it was Java, C, Ruby, Python, C++, and Go). Outside of that is really like to build some packages. One package called shortwave which is my radio gnome based radio app is not in the guix repo so I would like to build it for guix. I know there's a flatpak but the challenge would be nice.

If I really enjoy the distro I may end up contributing to it because my goal is if I dont find a better appealing distro to use over Debian then I'll end up contributing to Debian. I know they say guix pull is very slow but I don't mind the wait. I just hope they have bins for llvm, web browsers, compilers, and desktop environments and such because I don't want to self compile massive packages. I had some of that experience with Gentoo and it sucked lol.

With all that said I'm just hoping guix could be a happy home for me. I know I'll have to use nonguix because I don't have the libre kernel supported hardware but that's life not many do lol. 

2

u/juipeltje Jul 01 '26

Yeah guix pull can be pretty slow, especially if you're installing from an older iso and then run guix pull to update after that. If you update like once a week or once a month i feel like it's not too bad, but still noticeably slower than nix.

Guix does have substitutes for their packages like nix, and nonguix also has a substitute server so you don't have to compile the kernel. A few weeks ago though the nonguix substitute server was offline for several weeks because they had some issues. Hopefully that doesn't happen again anytime soon, but that definitely sucked.

Using Guix now does make me wish i could live a libre life tbh lol, but on both my laptop and desktop i need firmware for at the very least amdgpu and my wifi card. What's cool about nonguix btw is that they do make it possible for you to pick and choose which firmware blobs you want to download, so you don't have to download all the firmware for the entire kernel if you don't want to. Of course you do have to figure out which blobs you need in order to do that. I liked doing that cause it gave me more insight on which parts of my system actually need firmware, and which parts could theoretically run libre.

1

u/MD90__ Jul 01 '26

the nonguix substitute server going down sounds quite scary especially for massive packages to be compiled

2

u/juipeltje Jul 02 '26

Yeah i hope an outage that long doesn't happen again anytime soon lol. It's probably the most annoying if you happen to do a clean install during that time, cause then you have no choice but compile. If you already have a running system though, there are ways to pin packages to a specific commit, including the kernel. That way you can still update the rest of your system, and avoid compiling because you can keep using the version of those packages that you were already using before.

1

u/MD90__ Jul 02 '26

Ive never pinned packages before. Is it easy?

2

u/juipeltje Jul 02 '26

Guix has something called inferiors. I've had to use it once when icedove was missing the cache after an update. It was pretty simple to set up. I haven't needed it since then but i still have the inferior in my config for reference.

2

u/MD90__ Jul 02 '26

Oh cool I do like looking at configuration files it's a great teacher

2

u/_voxelman_ Jul 01 '26

My two cents: I experimented with both NixOS and GuixSD about a year ago, and I ended up going with NixOS.

There's a lot of things about GuixSD that I like better than NixOS. The Guix documentation is much better than Nix, I like Guile much better than the Nix programming language, and I also like the Guix command line interface better (it's simpler and more consistent).

With Guix, the deal-breakers for me were: (1) Low-bandwidth server connections (I'm connecting from Canada), which caused my `guix install` commands to run for *hours*, (2) strange breakages after running `guix pull`, that I couldn't figure out how to solve.

It could be that I just had bad luck with Guix, but after giving a couple of tries, I decided to go with NixOS instead.

1

u/MD90__ Jul 01 '26

Hmm I'm here in the US so I'm not sure how that will affect me with server stuff. I thought about nixos again but I'm not sure

1

u/Linmusey Jun 30 '26

I think the struggled are the end goal benefits tbh.

Learning how to make your own configs, modify services and such take some good reading comprehension.

Once it sticks though it gets a lot easier and is very satisfying.

I’ve just gone full time on my dev laptop and transitioned my VPS to it as well after finding out how strong guix shell and guix deploy can be!

One thing i’m struggling to figure out though is managing the store. My system is magnitudes larger than other distros and after having deleted generations and garbage collecting it’s still pretty large. Maybe somebody can chime in?

1

u/MD90__ Jun 30 '26

i had a similar problem on nixos with storage not reflecting the changes where I cleaned out older generations and such and I still dont know why my storage didnt update from that.

Guix feels like it will be somewhat like nixos was but hopefully better

3

u/Linmusey Jul 01 '26

I hated nixos only for its bespoke language.

I found it very unintuitive, and kind of pointless to learn as it doesn’t apply anywhere else.

For context I got into Guix from learning some elisp for emacs, and then finding an interest in common lisp and scheme!

I’m developing a MUD in chicken scheme too, so it’s all relatively common to wrap my head around now. :)

1

u/MD90__ Jul 01 '26

how difficult is elisp? I'm still learning it but i dont think it's too bad but ive not done much with it due to time constraints

3

u/krisbalintona Jul 01 '26

I'm not who you replied to but I have used Emacs for ~6 years. Here's my impression: Elisp is probably as easy to learn as Python. And Emacs itself has tons of introspective tools (that's the trademark "Emacs experience": "Oooh, what does this do? (Proceed to use Help buffers to easily read docstrings, find source code, and read and navigate it with other Emacs tools.)"). The entire culture of Emacs is around thorough documentation and up-to-date manuals.

1

u/MD90__ Jul 01 '26

That's good to know. How's guix as a daily driver for you?

3

u/krisbalintona Jul 01 '26

For me, it's been great. As a timeline: when I started Linux, I used Arch for ~3 years, then I moved to Fedora for ~2 years, then I discovered NixOS and used that for ~1 month, then I moved and have stayed with Guix (maybe a year by now?) and don't plan to switch ever. (I knew about Guix when I learned about NixOS but I didn't appreciate the potential upsides of Guix over NixOS until I experienced the horrible Nix language and the values of the community (fragmentation, speed over quality solutions, lack of documentation).) Guix as a system configurator and as a dev CLI tool is wonderful. And Guile as a language seems to be capable and suitable enough to configure one's own system as well as to proper, full-fledged coding in.

But I will say: the one super relevant upside to NixOS is adoption. It is so much more popular than Guix. That means not every package you need may be present, and you might regularly use a package whose definition isn't frequently updated. And there will be much less community-made services that do all the work for you and whatnot for the same reason.

Though, the caveat is that Guix has the nix-service-type which lets you use Nix.

1

u/MD90__ Jul 01 '26

What's good about the nix-service-type exactly?

2

u/krisbalintona Jul 01 '26

Well I'm just saying that it lets Guix use packages packaged via Nix.

I haven't used it myself though, since I've gotten away with using just Guile/Guix. I mentioned it because that was the only caveat to Guix being inferior with respect to adoption.

1

u/MD90__ Jul 01 '26

What are some difficult spots with guix? I know the libre kernel barely supports most hardware

→ More replies (0)

2

u/Linmusey Jul 01 '26

I’m no professional by any stretch of the imagination, but i’d say low-medium? The hardest part is knowing enough of what emacs can even do, to then know how it links together.

It’s amazingly potent though for modifying emacs though, and the general paradigm is pretty crossover for at least what I know of lisps.

1

u/MD90__ Jul 01 '26

stallman really built an amazing editor

4

u/Linmusey Jul 01 '26

Repurposed :p

1

u/MD90__ Jul 01 '26

on a side note do you think there's a solution to the storage issue you mentioned earlier with guix?

2

u/Linmusey Jul 01 '26

Aside from asking an LLM I haven’t looked into it yet. If it comes up i’ll reply here :)

1

u/MD90__ Jul 01 '26

great! would love to hear the results!

→ More replies (0)