mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2025-01-11 13:49:23 -05:00
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>
This commit is contained in:
parent
609066e996
commit
f5fc395ab4
2 changed files with 16 additions and 28 deletions
|
@ -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
|
||||
|
|
|
@ -274,7 +274,15 @@ (define-syntax-rule (with-store* store exp ...)
|
|||
(_ (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
|
||||
|
|
Loading…
Reference in a new issue