Subject: Re: [bug#50873] [PATCH 5/5] doc: Document the ‘guix home import’ subcommand.

From: Andrew Tropin <[email-masked]>
Date: Thu, 30 Sep 2021 10:08:45 +0300

On 2021-09-28 19:36, Xinglu Chen wrote:

> * doc/guix.texi (Invoking guix home): Document ‘guix home import’.
> ---
>  doc/guix.texi | 33 +++++++++++++++++++++++++++++++++
>  1 file changed, 33 insertions(+)
>
> diff --git a/doc/guix.texi b/doc/guix.texi
> index 7956652050..2c268705d0 100644
> --- a/doc/guix.texi
> +++ b/doc/guix.texi
> @@ -36088,6 +36088,39 @@
>  $ guix home list-generations 10d
>  @end example
>  
> +@item import
> +Generate a @dfn{home environment} from the packages in the default
> +profile and configuration files found in the user's home directory.  The
> +configuration files will be copied to the specified directory.  Note
> +that not every home service that exists is supported (@pxref{Home
> +Services}).
> +
> +@example
> +$ guix home import ~/guix-config
> +;; This "home-environment" file can be passed to 'guix home reconfigure'
> +;; to reproduce the content of your profile.  This is "symbolic": it only
> +;; specifies package names.  To reproduce the exact same profile, you also
> +;; need to capture the channels being used, as returned by "guix describe".
> +;; See the "Replicating Guix" section in the manual.
> +
> +(use-modules
> +  (gnu home)
> +  (gnu packages)
> +  (gnu home-services bash))
> +
> +(home-environment
> +  (packages
> +    (map specification->package
> +         (list "glibc-locales" "nss-certs" "nss")))
> +  (services
> +    (list (service
> +            home-bash-service-type
> +            (home-bash-configuration
> +              (bashrc
> +                (list (slurp-file-gexp

It still uses slurp-file-gexp, which is not upstreamed, but overall
looks ok.

I'll make a rationale behind this function and the approach I picked in
home services config serializers and will prepare some examples next
week.  Maybe it will convince Ludovic or maybe I'll change my mind and
rework configuration records for home services to use file-like objects.

> +                        (local-file "/home/alice/guix-config/.bashrc")))))))))
> +@end example
> +
>  @end table
>  
>  @node Documentation