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 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 the given directory, @file{~/src/guix-config} in this case; it also
reads the contents of your profile, @file{~/.guix-profile}, and, based reads the contents of your profile, @file{~/.guix-profile}, and, based
on that, it outputs a Home configuration that resembles your current on that, it populates @file{~/src/guix-config/home-configuration.scm}
configuration. You can dump that configuration to a file and you're with a Home configuration that resembles your current configuration.
ready to go!
A simple setup can include Bash and a custom text configuration, like in 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, the example below. Don't be afraid to declare home environment parts,
@ -36667,33 +36666,14 @@ $ guix home list-generations 10d
@item import @item import
Generate a @dfn{home environment} from the packages in the default Generate a @dfn{home environment} from the packages in the default
profile and configuration files found in the user's home directory. The profile and configuration files found in the user's home directory. The
configuration files will be copied to the specified directory. Note configuration files will be copied to the specified directory, and a
that not every home service that exists is supported (@pxref{Home @file{home-configuration.scm} will be populated with the home
Services}). environment. Note that not every home service that exists is supported
(@pxref{Home Services}).
@example @example
$ guix home import ~/guix-config $ guix home import ~/guix-config
;; This "home-environment" file can be passed to 'guix home reconfigure' guix home: '/home/alice/guix-config' populated with all the Home configuration files
;; 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"))))))))
@end example @end example
@end table @end table

View File

@ -274,7 +274,15 @@ argument list and OPTS is the option alist."
(_ (leave (G_ "wrong number of arguments~%")))))) (_ (leave (G_ "wrong number of arguments~%"))))))
(unless (file-exists? destination) (unless (file-exists? destination)
(mkdir-p 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) ((describe)
(match (generation-number %guix-home) (match (generation-number %guix-home)
(0 (0