The Guix System Distribution supports a consistent whole-system configuration mechanism. By that we mean that all aspects of the global system configuration—such as the available system services, timezone and locale settings, user accounts—are declared in a single place. Such a system configuration can be instantiated—i.e., effected.
One of the advantages of putting all the system configuration under the control of Guix is that it supports transactional system upgrades, and makes it possible to roll back to a previous system instantiation, should something go wrong with the new one (see Features). Another advantage is that it makes it easy to replicate the exact same configuration across different machines, or at different points in time, without having to resort to additional administration tools layered on top of the own tools of the system.
This section describes this mechanism. First we focus on the system administrator’s viewpoint—explaining how the system is configured and instantiated. Then we show how this mechanism can be extended, for instance to support new system services.
|• Using the Configuration System:||Customizing your GNU system.|
|• operating-system Reference:||Detail of operating-system declarations.|
|• File Systems:||Configuring file system mounts.|
|• Mapped Devices:||Block device extra processing.|
|• User Accounts:||Specifying user accounts.|
|• Locales:||Language and cultural convention settings.|
|• Services:||Specifying system services.|
|• Setuid Programs:||Programs running with root privileges.|
|• X.509 Certificates:||Authenticating HTTPS servers.|
|• Name Service Switch:||Configuring libc’s name service switch.|
|• Initial RAM Disk:||Linux-Libre bootstrapping.|
|• GRUB Configuration:||Configuring the boot loader.|
|• Invoking guix system:||Instantiating a system configuration.|
|• Running GuixSD in a VM:||How to run GuixSD in a virtual machine.|
|• Defining Services:||Adding new service definitions.|