Title: Extend Guix Linux with the nonguix repository
       Author: Solène
       Date: 27 May 2021
       Tags: guix
       Description: 
       
       # Introduction
       
       Guix is a full open source Linux distribution approved by the FSF,
       meaning it's fully free.  However, for many people this will mean the
       drivers requiring firmwares won't work and their usual software won't
       be present (like Firefox isn't considered free because of trademark
       issue).
       
       A group of people is keeping a parallel repository for Guix to add some
       not-100% free stuff like kernel with firmware loading capability or
       packages such as Firefox, this can be added to any Guix installation
       quite easily.
       
 (HTM) nonguix git repository
 (HTM) Guix project website
       
       # Configuration
       
       Most of the code and instructions you will find here come from the
       nonguix README, you need to add the new channel to download the
       packages or the definitions to build them if they are not available as
       binary packages (called substitutions) yet.
       
       Create a new file /etc/guix/channels.scm with this content:
       
       ```
       (cons* (channel
               (name 'nonguix)
               (url "https://gitlab.com/nonguix/nonguix")
               ;; Enable signature verification:
               (introduction
                (make-channel-introduction
                 "897c1a470da759236cc11798f4e0a5f7d4d59fbc"
                 (openpgp-fingerprint
                  "2A39 3FFF 68F4 EF7A 3D29  12AF 6F51 20A0 22FB B2D5"))))
              %default-channels)
       ```
       
       And then run "guix pull" to get the new repository, you have to restart
       "guix-daemon" using the command "herd restart guix-daemon" to make it
       accounted.
       
       # Deploy a new kernel
       
       If you use this repository you certainly want to have the kernel
       provided that allow loading firmwares and the firmwares, so edit your
       /etc/config.scm
       
       ```
       (use-modules (nongnu packages linux)
                    (nongnu system linux-initrd))
       
       (operating-system ;; you should already have this line
         (kernel linux)
         (initrd microcode-initrd)
         (firmware (list linux-firmware))
         #...
       ```
       
       Then you use "guix system reconfigure /etc/config.scm" to rebuild the
       system with the new kernel, you will certainly have to rebuild the
       kernel but it's not that long.  Once it's done, reboot and enjoy.
       
       # Installing packages
       
       You should also have packages available now.  You can enable the
       channel for your user only by modifying ~/.config/guix/channels.scm
       instead of the system wide /etc/channels.scm file.  Note that you may
       have to build the packages you want because the repository doesn't
       build all the derivations but only a few packages (like firefox,
       keepassxc and a few others).
       
       Note that Guix provide flatpak in its official repository, this is a
       workaround for many packages like "desktop app" for instant messaging
       or even Firefox, but it doesn't integrates well with the system.
       
       # Gaming
       
       There is also a dedicated gaming channel!
       
 (HTM) Guix gaming channel
       
       # Conclusion
       
       The nonguix repository is a nice illustration that it's possible to
       contribute to a project without forking it entirely when you don't
       fully agree with the ideas of the project.  It integrates well with
       Guix while being totally separated from it, as a side project.
       
       If you have any issues related to this repository, you should seek help
       from the nonguix project and not Guix because they are not affiliated.