Guix supports declarative configuration of home environment by
utilizing the configuration mechanism described in the previous chapter
(see Defining Services), but for user’s home. It works both on Guix
System and foreign distros and allows users to declare all the packages
that should be installed and configured for the user. After that, such
a home configuration can be instantiated by an unprivileged
user with the
guix home command (see Invoking guix home).
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 not very useful in many cases, because often they require some
additional configuration, usually config files that reside in
XDG_CONFIG_HOME (default value is ~/.config) 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.|