Installing on Debian
From GNU Guix Reference Manual, 2 Installation:
| Note |
| We recommend the use of this shell installer script to install Guix on top of a running GNU/Linux system, thereafter called a foreign distro. The script automates the download, installation, and initial configuration of Guix. It should be run as the root user. |
Here is a bash one-liner command for installing Guix on Debian buster:
bash <(wget -qO- https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh)
Nonguix channel installation
Adapted instructions from the Nonguix project page:
Nonguix can be installed as a Guix channel. To do so, add it to ~/.config/guix/channels.scm:
(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)
Then run guix pull.
Using Nonfree Firmware and Drivers
To use Guix System with the standard Linux kernel and nonfree firmware, edit the kernel and firmware fields of the operating-system definition in config.scm:
;; Import nonfree linux module. (use-modules (nongnu packages linux) (nongnu system linux-initrd)) (operating-system (kernel linux) (initrd microcode-initrd) (firmware (list linux-firmware)) ... )
If you only need firmware for your Realtek network device, you may be able to save disk space by using a smaller firmware package instead:
(firmware (cons* iwlwifi-firmware %base-firmware))
Then of course, run sudo guix system reconfigure /etc/config.scm to apply your configuration.
Installation image
As you said, the official Guix installation image won’t work for your hardware, so you can generate an installation image running the nonfree Linux kernel and nonfree firmware with the following command:
guix system image --image-size=7.2GiB /path/to/this/channel/nongnu/system/install.scm
As indicated bellow, you will need to run guix pull to download the Nonguix package descriptions. Some free space on your USB thumbdrive is required for this operation to succeed. The above --image-size option allows you to specify the size of the image and, as such, to allocate free space to it. The given value is purely indicative — it obviously depends on your thumbdrive capacity.
Then you can write the generated disk image to a USB thumbdrive with:
| Note |
This example assumes your thumbdrive is recognized by Linux as /dev/sdb. |
dd if=/path/to/disk-image of=/dev/sdb bs=4M status=progress oflag=sync
The installation media produced by the above method does not automatically configure your channels specification. You need to add Nonguix “manually” into /etc/guix/channels.scm and then run guix pull to make Guix aware of Nonguix scheme libraries. Below is Guile scheme code to include Nonguix in the channel specification.
(use-modules (ice-9 pretty-print)) (with-output-to-file "/etc/guix/channels.scm" (lambda _ (pretty-print '(cons* (channel (name 'nonguix) (url "https://gitlab.com/nonguix/nonguix")) %default-channels))))
As mentioned in issue 82, the modules for Realtek network devices have been included since kernel-linux-5.11:
The firmware files should be in realtek-firmware or the linux-firmware package. But I guess we need to build the RTW88 module. So we need to set CONFIG_RTW88=m in upstream guix gnu/packages/aux-files/linux-libre/5.10-x86_64.conf. [Since] kernel linux-5.11, this particular module should now be enabled by default...