The blog

Setting up guix, and locales

I wanted to try out Spritely Goblins to see what it is like, or to really understand what it is, since I’d been seeing it pop up on here and there.

The guide suggests using the guix package, so I decided to install the guix package manager on top of my arch linux system.

Installing asks to please run nscd, which is not even included in arch nowadays, so I did not, we’ll see what problems it causes. Then after it’s set up, runnig any guix command asked me to fix the locales:

hint: Consider installing the `glibc-locales' package and defining `GUIX_LOCPATH',
along these lines:

     guix install glibc-locales
     export GUIX_LOCPATH="$HOME/.guix-profile/lib/locale"

See the "Application Setup" section in the manual, for more info.

The Application Setup section in the manual says the full glibc-locales includes everything and thus is heavy, and suggests this invocation for a slimmer setup:

(use-modules (gnu packages base))

(define my-glibc-locales
   #:locales (list "en_CA" "fr_CA" "ik_CA" "iu_CA" "shs_CA")
   #:name "glibc-canadian-utf8-locales"))

Apparently, you can drop that in a file (I removed the define, since we want to return the value), such as locales.scm:

(use-modules (gnu packages base))

  #:locales (list "en_US" "ca_ES" "es_ES")
  #:name "glibc-my-utf8-locales")

And tell guix to install it as a package:

guix package --install-from-file=locales.scm

The env variable $GUIX_LOCPATH should be set automatically by /etc/profile.d/ on login, with a gotcha: It will try to set it up first for $HOME/.guix-profile (correct) but then overwrite it for $HOME/.guix-home/profile (which does not exist on my system because I’m not using guix home, for now). So I had to comment out that final section.

And then, I ran guix pull, and the glibc version had changed, so I had to re-install the package to upgrade it and fix the locales again. Also it turns out after that, there will be two different per-user guix profiles:

> guix package --list-profiles                              

Which is a bit confusing but seems to work.

Also, the guix pull took forever, and the way to fix that seems to be to write the following to .config/guix/channels.scm:

(use-modules (guix ci))

(list (channel-with-substitutes-available

And then it will try to update only to versions which have binaries. Maybe probably.


Got any comments? Send me an email: