Guix supports declarative configuration of home environments by
utilizing the configuration mechanism described in the previous chapter
(see Defining Services), 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
home-environment record, such a configuration can be
instantiated by an unprivileged user with the
command (see Invoking guix home).
Note: The functionality described in this section is still under development and is subject to change. Get in touch with us on email@example.com!
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
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.
|• Declaring the Home Environment||Customizing your Home.|
|• Configuring the Shell||Enabling home environment.|
|• Home Services||Specifying home services.|
|• Invoking guix home||Instantiating a home configuration.|