[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
07/13: scripts: home: Make ‘guix home import’ write home-configuration.s
From: |
guix-commits |
Subject: |
07/13: scripts: home: Make ‘guix home import’ write home-configuration.scm. |
Date: |
Wed, 17 Nov 2021 17:07:41 -0500 (EST) |
civodul pushed a commit to branch master
in repository guix.
commit f5fc395ab4cc79d52a4e316b907e780a5a7adb30
Author: Xinglu Chen <public@yoctocell.xyz>
AuthorDate: Sun Nov 7 12:13:32 2021 +0100
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>
---
doc/guix.texi | 34 +++++++---------------------------
guix/scripts/home.scm | 10 +++++++++-
2 files changed, 16 insertions(+), 28 deletions(-)
diff --git a/doc/guix.texi b/doc/guix.texi
index 158261e..59ceb44 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -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
diff --git a/guix/scripts/home.scm b/guix/scripts/home.scm
index 3f48b98..afc7d8b 100644
--- a/guix/scripts/home.scm
+++ b/guix/scripts/home.scm
@@ -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
- 01/13: services: docker: Add 'environment-variables' configuration field., (continued)
- 01/13: services: docker: Add 'environment-variables' configuration field., guix-commits, 2021/11/17
- 02/13: gnu: perl-inline-c: Patch paths to ‘make’., guix-commits, 2021/11/17
- 03/13: gnu: shellcheck: Update to 0.8.0., guix-commits, 2021/11/17
- 05/13: gnu: ristretto: Update to 0.12.0., guix-commits, 2021/11/17
- 06/13: gnu: xfce4-whiskermenu-plugin: Update to 2.6.1., guix-commits, 2021/11/17
- 08/13: gnu: tidy-html: Update to 5.8.0., guix-commits, 2021/11/17
- 04/13: gnu: xfce4-cpugraph-plugin: Update to 1.2.5., guix-commits, 2021/11/17
- 09/13: doc: Improve wording for param spec of `./configure`., guix-commits, 2021/11/17
- 10/13: diagnostics: Add syntax to capture arguments' syntax-properties., guix-commits, 2021/11/17
- 11/13: gnu: system: Improve location of some configuration warnings., guix-commits, 2021/11/17
- 07/13: scripts: home: Make ‘guix home import’ write home-configuration.scm.,
guix-commits <=
- 12/13: gnu: rcs: Install rcsfreeze., guix-commits, 2021/11/17
- 13/13: gnu: Add rcs-blame., guix-commits, 2021/11/17