kivikakk.ee

some things to make guix (system) less painful

I’m grateful to Nemin for writing about his experiences with Guix! I’ve been thinking about it for months at this stage, and have an aarch64 VM from the 1.5.0 release. It’s felt awkward and I haven’t known how to get started, particularly because of how slow things seem to be.

Some things that have really helped me speed things up:

Use Guix Moe’s substitutes

“Guix Moe”: Build farm and mirrors for community channels introduces it. You may be wondering where exactly to put the (simple-service 'guix-moe …) stanza.

Wonder no more. Your /etc/config.scm will have a (services …) declaration. There will probably be a list of (service …) declarations in a list inside that. Add it there. Mine looks like this:

[…]
;; Uncomment the line below to add an SSH server.
(service openssh-service-type)
;; Add support for the SPICE protocol, which enables dynamic
;; resizing of the guest screen resolution, clipboard
;; integration with the host, etc.
(service spice-vdagent-service-type)
;; Use the DHCP client service rather than NetworkManager.
(service dhcpcd-service-type)
(simple-service 'guix-moe guix-service-type
(guix-extension (authorized-keys (list (plain-file
"guix-moe-old.pub"
"(public-key (ecc (curve Ed25519) (q #374EC58F5F2EC0412431723AF2D527AD626B049D657B5633AAAEBC694F3E33F9#)))")
;; New key since 2025-10-29.
(plain-file
"guix-moe.pub"
"(public-key (ecc (curve Ed25519) (q #552F670D5005D7EB6ACF05284A1066E52156B51D75DE3EBD3030CD046675D543#)))")))
(substitute-urls '("https://cache-cdn.guix.moe")))))
;; Remove some services that don't make sense in a VM.
(remove (lambda (service)
(let ((type (service-kind service)))
[…]

I’ve included lots of context so you don’t get lost. This gets you some more pre-built packages. sudo guix system reconfigure /etc/config.scm.

Change your guix channel source to Codeberg

I could die and git.guix.gnu.org wouldn’t notice. Get acquainted with Guix Home. We’ll be customising the Guix channel itself per 6.2 Using a Custom Guix Channel, and doing it in Guix Home per 13.3.9 Guix Home Services.

Because we’re replacing the default, we don’t want to just add a channel. Add this service to your home-environment, similar to above:

(service home-channels-service-type
(list (channel
(name 'guix)
(url "https://codeberg.org/guix/guix.git")
(branch "master")
(introduction
(make-channel-introduction
"9edb3f66fd807b096b48283debdcddccfea34bad"
(openpgp-fingerprint
"BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA"))))
; any other channels here
))

I pulled that introduction from https://hpc.guix.info/static/doc/complex-deployment/channels.scm. Looks safe to me!

guix home reconfigure blah.scm.

Hey, saayix has some nice software

I really wanted Ghostty, and it turns out someone’s got it packaged and up-to-date! https://codeberg.org/look/saayix/src/commit/b9b22f9ca03a452c4d8801b200da0095f54090e8/modules/saayix/packages/terminals.scm

You can add one of the channel declarations directly where indicated above. Then guix home reconfigure again (you can see the result in ~/.config/guix/channels.scm), and then guix pull to fetch the channel. Now you can e.g. #:use-module (saayix packages terminals) and add ghostty to your (packages …) list!

(a → a) → a

I cannot remain one thing
I cannot remain two things
I cannot remain three things
I cannot remain n things

All I know is that I am not
I am the other, but I am not
What I am is everything
But I am not

To understand every view
To believe in none of them
To befriend everyone
To be seen by none

Every choice forceful and every choice forced
Every choice meaningful and every meaning forced
Meaningless in every choice
Acceptance another choice

please pass this information on

photo of a joey with the caption “Please pass this information onto Family and Friends”

January 2026 Five Questions

Source.

What do you do when someone you don’t know on a social or business network site tries to become a “friend” or otherwise connected to you?

I don’t use social networks. If I receive a connection request on LinkedIn from someone I don’t know, I ignore it.

Do you worry about the data being collected by websites and search engines and what do you do to protect yourself? What do you advise for those who are not as technically skilled yet concerned nonetheless to do?

Somewhat. I use a privacy-focused open-source browser not affiliated with a for-profit company, LibreWolf, in its default strict protection setting My searches all go through my own little helper. I don’t (knowingly) use websites that egregiously track users or otherwise try to violate end-user privacy. I pay for my email hosting. I don’t use Cloudflare to terminate my TLS, and the analytics I use I collect myself.

For those concerned, I would start by recommending using a similar browser — an enormous amount of our digital life is negotiated through browsers, so it makes a difference. Firefox is OK, but you might as well use LibreWolf or Waterfox (nice!) or something. There are probably similarly-oriented Chromium-based browsers but I haven’t looked into it deeply — I use ungoogled-chromium when I need to test in one. (Please don’t use Brave, they consistently engage in shady practices.)

Next is probably email, because it’s typically full of personal stuff! There are many good email hosts that aren’t Google or Microsoft. If you don’t have to pay for your email hosting, there is a reason, and it’s not good. I use Fastmail. Here’s a Lobste.rs “ask” post with more suggestions. Ideally find something in a jurisdiction close to you. Or not, if you live in the United States.

How do you reward yourself for completing a difficult task?

Make a cup of tea, though that often happens at both ends. Lately I’ve been playing little bits of games between larger or more difficult tasks, or reading.

Have you or your family been affected by a natural disaster?

Not particularly. Australian drought culture of the late 90s/early 00s felt a little bit like one. Does a pandemic count?

Have you ever called in a request or a dedication on a radio show or online radio stream?

Nope!

grab bag