Cat that kicks an exclamation mark.
The Zerocat Label
True Free-Design Hardware Tools and DIY-Projects

GNU Guix on Top of Trisquel

The Trisquel 8.0 Operating System can be enriched with up-to-date projects if you install the GNU Guix Package Manager on top of it. Guix does not interfere with the distribution’s package manager, but provides additional features such as reproducable builds and per user package profiles.

This page shows how Zerocat’s Coreboot Machines can be set up to get advantage from Guix. If Guix is installed already, you might use this page as a reference. However, GNU Guix comes with its own manual, so please refer to that at first place. If you see something wrong or inappropriate here – please let me know!

Install GNU Guix 1.0.1 Binary

  1. Log into your user account. The user must be a member of group sudo.

  2. Visit the GNU Guix Website and get the GNU Guix install script called guix-install.sh. Within the script, check the value of OPENPGP_SIGNING_KEY_ID and retrieve that key via GNU Privacy Guard:

    $ gpg --search-key 0x3CE464558A84FDC69DB40CFB090B11993D9AEBB5
    
  3. Run the GNU Guix install script as user root, but keep the current user’s environment, so that the script will check the right gpg keyring:

    $ sudo ./guix-install.sh
    

    On a debian system, you might instead require to run:

    $ sudo -E ./guix-install.sh
    

    Done. The command guix should now be available on your system. Run guix --help to see available guix commands.

Install a First Set of Guix Packages

  1. Install a basic set of fonts along with package fontconfig:

    $ guix package -i fontconfig \
      -i gs-fonts \
      -i font-gnu-unifont \
      -i font-gnu-freefont-ttf
    

    Note if guix suggests to run some commands like export or hash guix in the current terminal, please do. Later on, environment variables should be covered by our file ~/.guixrc, which is sourced upon login (see next section).

  2. Now run fc-cache -rv to update your font caches.

  3. Install the gtk+ package along with up-to-date themes for the mate desktop:

    $ guix package -i gtk+ \
      -i mate-common \
      -i mate-themes \
      -i mate-icon-theme
    

Define your Guix Environment

  1. Set up a new file called ~/.guixrc in which essential environment variables will be defined:

    # Set user’s default guix profile:
    GUIX_PROFILE="$HOME/.guix-profile"
    # Load the guix profile:
    source "$GUIX_PROFILE/etc/profile"
    # Set a default GTK Theme:
    export GTK_THEME="Default"
    # Prevent the graphical login to fail:
    export XDG_DATA_DIRS="$XDG_DATA_DIRS${XDG_DATA_DIRS:+:}/usr/local/share/:/usr/share/"
    # Make sure to use up-to-date guix binary:
    export PATH="$HOME/.config/guix/current/bin${PATH:+:}$PATH"
    # Make sure to use up-to-date info material:
    export INFOPATH="$HOME/.config/guix/current/share/info${INFOPATH:+:}$INFOPATH"
    

    Note XDG_DATA_DIRS should be set with some standard values explicitly, as otherwise you might experience that your graphical login won't work for some reason.

  2. Append one line to your ~/.profile:

    $ echo "source ~/.guixrc" >> ~/.profile
    
  3. Perform a logout-login sequence. (In case your graphical login fails, use to get a terminal login and fix your files.)

  4. Run guix package -I to get a list of installed packages and to see whether guix runs fine.

    In case a warning is issued (guile: warning: failed to install locale), the installation of two more packages should help:

    $ guix package -i glibc -i glibc-locales
    

Let’s Have some Fun!

  1. Let’s have some fun with guix and package extremetuxracer:

    $ guix package -i extremetuxracer
    

    This will install a small racing game which can be controlled with just your keyboard. The corresponding binary is called etr and is linked to folder bin of your default guix profile:

    $ ~/.guix-profile/bin/etr
    

    This game should immediatly be visible in your main menu in section “Games” as well.

    See how easy it is to use Guix?

    Other packages might be more difficult or impossible to integrate, though. For example, how to access a decent printer or scanner with package hplip?

Maintain Your Guix

  1. From now on, you might update your user’s guix on a monthly schedule with:

    $ guix pull
    $ guix package --upgrade
    
  2. In case you install more guix packages via $ guix package -i ... and guix recommends to define environment variables, please update the ~/.guixrc file if needed, so that the environment will be properly set at next logins.

  3. Don't forget to update root’s guix from time to time, which will affect the guix binary that is used by the build-users, controlled by the guix-daemon on behalf of users (If I understand correctly.)

    $ sudo -i guix pull
    

Set up Guix for a different User

  1. Log into another user account and run $ guix pull.

  2. Install the basic set of packages as described above, setup user’s ~/.guixrc, modify ~/.profile and run fc-cache -rv.

  3. Perform a logout-login sequence and run $ guix package -I to see whether guix runs fine.

  4. Install more packages via $ guix package -i ....