The home environment is configured by providing
declaration in a file that can be passed to the
command (see Invoking guix home). A simple setup can include Bash,
SSH and custom text configuration, like in the example below.
Note: It is highly recommended that you manage your shell or shells with Guix Home, because it will make sure that all the necessary scripts are sourced by shell configuration file. Otherwise you will need to do it manually. (see Configuring the Shell).
(use-modules (gnu home) (gnu home-services) (gnu home-services ssh) (gnu home-services shells) (gnu home-services files) (gnu services) (gnu packages admin) (guix gexp)) (home-environment (home-directory "/home/<USER>") ;; (symlink-name ".guix-home-env") (packages (list htop)) (services (list (service home-bash-service-type (home-bash-configuration (guix-defaults? #t) (bash-profile '("\ export HISTFILE=$XDG_CACHE_HOME/.bash_history")))) (simple-service 'test-config home-files-service-type (list `("config/test.conf" ,(plain-file "tmp-file.txt" "the content of ~/.config/test.conf")))) (service home-ssh-service-type (home-ssh-configuration (extra-config (list (ssh-host "savannah" '((compression . #f))))))))))
The only required field is
home-directory, which says where the
profile for this home environment should be placed. The
field should be self-explanatory, it will install the list of packages
into the user’s profile. The most important field is
it contains a list of home services, which are the basic building
blocks of a home environment.
There is no daemon (at least not necessary) related to home service, it’s just an element that is used to declare part of home environment and extend other parts of it. The extension mechanism discussed in the previous chapter (see Defining Services) should not be confused with Shepherd Services. Using this extension mechanism and some Scheme code that glues things together gives a lot of freedom in declaring of very custom home environments.