Guix supports declarative configuration of home environments by
utilizing the configuration mechanism described in the previous chapter
(see 定义服务), 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 a
such a configuration can be instantiated by an unprivileged user with
guix home command (see Invoking
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 reconfigure invocation, 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.
to sync data with another host. This functionality is still in an
experimental stage, though.