Guix supports declarative configuration of home environments by
utilizing the configuration mechanism described in the previous chapter
(see Definindo serviços), but for user’s dotfiles and packages. It works
both on Guix System and foreign distros and allows users to declare all the
packages and services that should be installed and configured for the user.
Once a user has written a file containing
such a configuration can be instantiated by an unprivileged user with
guix home command (see Invoking
Nota: The functionality described in this section is still under development and is subject to change. Get in touch with us on firstname.lastname@example.org!
The user’s home environment usually consists of three basic parts: software,
configuration, and state. Software in mainstream distros are usually
installed system-wide, but with GNU Guix most software packages can be
installed on a per-user basis without needing root privileges, and are thus
considered part of the user’s home environment. Packages on their own
are not very useful in many cases, because often they require some
additional configuration, usually config files that reside in
XDG_CONFIG_HOME (~/.config by default) or other directories.
Everything else can be considered state, like media files, application
databases, and logs.
Using Guix for managing home environments provides a number of advantages:
guix home reconfigureinvocation, a new home environment generation will be created. This means that users can rollback to a previous home environment generation so they don’t have to worry about breaking their configuration.
rsyncto sync data with another host. This functionality is still in an experimental stage, though.