With the target partitions ready and the target root mounted on /mnt, we’re ready to go. First, run:
herd start cow-store /mnt
This makes /gnu/store copy-on-write, such that packages added to it
during the installation phase are written to the target disk on /mnt
rather than kept in memory. This is necessary because the first phase of
guix system init command (see below) entails downloads or
builds to /gnu/store which, initially, is an in-memory file system.
Next, you have to edit a file and
provide the declaration of the operating system to be installed. To
that end, the installation system comes with three text editors. We
recommend GNU nano (see GNU nano Manual), which
supports syntax highlighting and parentheses matching; other editors
include mg (an Emacs clone), and
nvi (a clone of the original BSD
We strongly recommend storing that file on the target root file system, say,
as /mnt/etc/config.scm. Failing to do that, you will have lost your
configuration file once you have rebooted into the newly-installed system.
See Using the Configuration System, for an overview of the configuration file. The example configurations discussed in that section are available under /etc/configuration in the installation image. Thus, to get started with a system configuration providing a graphical display server (a “desktop” system), you can run something along these lines:
# mkdir /mnt/etc # cp /etc/configuration/desktop.scm /mnt/etc/config.scm # nano /mnt/etc/config.scm
You should pay attention to what your configuration file contains, and in particular:
bootloader-configurationform refers to the targets you want to install GRUB on. It should mention
grub-bootloaderif you are installing GRUB in the legacy way, or
grub-efi-bootloaderfor newer UEFI systems. For legacy systems, the
targetsfield contain the names of the devices, like
(list "/dev/sda"); for UEFI systems it names the paths to mounted EFI partitions, like
(list "/boot/efi"); do make sure the paths are currently mounted and a
file-systementry is specified in your configuration.
devicefields in your
file-systemconfiguration, assuming your
file-systemconfiguration uses the
file-system-labelprocedure in its
mapped-devicesfield to describe them (see Mapped Devices).
Once you are done preparing the configuration file, the new system must be initialized (remember that the target root file system is mounted under /mnt):
guix system init /mnt/etc/config.scm /mnt
This copies all the necessary files and installs GRUB on /dev/sdX, unless you pass the --no-bootloader option. For more information, see Invoking guix system. This command may trigger downloads or builds of missing packages, which can take some time.
Once that command has completed—and hopefully succeeded!—you can run
reboot and boot into the new system. The
in the new system is initially empty; other users’ passwords need to be
initialized by running the
passwd command as
unless your configuration specifies otherwise
(see user account passwords).
See After System Installation, for what’s next!