me
/
guix
Archived
1
0
Fork 0

scripts: home: Make ‘guix home import’ write home-configuration.scm.

* guix/scripts/home.scm (process-command): Populate ‘home-configuration.scm’
  in the destination directory instead of printing to stdout.
* doc/guix.texi (Declaring the Home Environment): Adjust accordingly.
(Invoking guix home): Likewise.

Suggested-by: Ludovic Courtès <ludo@gnu.org>
Co-authored-by: Ludovic Courtès <ludo@gnu.org>
master
Xinglu Chen 2021-11-07 12:13:32 +01:00 committed by Ludovic Courtès
parent 609066e996
commit f5fc395ab4
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
2 changed files with 16 additions and 28 deletions

View File

@ -35933,9 +35933,8 @@ The @command{guix home import} command reads some of the ``dot files''
such as @file{~/.bashrc} found in your home directory and copies them to
the given directory, @file{~/src/guix-config} in this case; it also
reads the contents of your profile, @file{~/.guix-profile}, and, based
on that, it outputs a Home configuration that resembles your current
configuration. You can dump that configuration to a file and you're
ready to go!
on that, it populates @file{~/src/guix-config/home-configuration.scm}
with a Home configuration that resembles your current configuration.
A simple setup can include Bash and a custom text configuration, like in
the example below. Don't be afraid to declare home environment parts,
@ -36667,33 +36666,14 @@ $ guix home list-generations 10d
@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}).
configuration files will be copied to the specified directory, and a
@file{home-configuration.scm} will be populated with the home
environment. 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 shells))
(home-environment
(packages
(map specification->package
(list "glibc-locales" "nss-certs" "nss")))
(services
(list (service
home-bash-service-type
(home-bash-configuration
(bashrc
(list (local-file "/home/charlie/guix-config/.bashrc"))))))))
guix home: '/home/alice/guix-config' populated with all the Home configuration files
@end example
@end table

View File

@ -274,7 +274,15 @@ argument list and OPTS is the option alist."
(_ (leave (G_ "wrong number of arguments~%"))))))
(unless (file-exists? destination)
(mkdir-p destination))
(import-manifest manifest destination (current-output-port))))
(call-with-output-file
(string-append destination "/home-configuration.scm")
(cut import-manifest manifest destination <>))
(info (G_ "'~a' populated with all the Home configuration files~%")
destination)
(display-hint (format #f (G_ "\
Run @command{guix home reconfigure ~a/home-configuration.scm} to effectively
deploy the home environment described by these files.\n")
destination))))
((describe)
(match (generation-number %guix-home)
(0