[PATCH] scripts: home: Make ‘guix home import’ populate ‘home-configuration.scm

  • Done
  • quality assurance status badge
Details
2 participants
  • Ludovic Courtès
  • Xinglu Chen
Owner
unassigned
Submitted by
Xinglu Chen
Severity
normal

Debbugs page

Xinglu Chen wrote 3 years ago
[PATCH] scripts: home: Make ‘guix home import’ populate ‘home-configuration.scm
(address . guix-patches@gnu.org)
14ec6984221fa50f5720db519cb0f06db4dd478b.1636283518.git.public@yoctocell.xyz
* 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>
---
doc/guix.texi | 34 +++++++---------------------------
guix/scripts/home.scm | 7 ++++++-
2 files changed, 13 insertions(+), 28 deletions(-)

Toggle diff (77 lines)
diff --git a/doc/guix.texi b/doc/guix.texi
index ea1973f02c..ebcc725184 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -35865,9 +35865,8 @@
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,
@@ -36537,33 +36536,14 @@
@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"))))))))
+/home/alice/guix-config has been populated with all the configuration files of your home environment. Run 'guix home reconfigure /home/alice/guix-config/home-configuration.scm' to make it take effect.
@end example
@end table
diff --git a/guix/scripts/home.scm b/guix/scripts/home.scm
index 3f48b98ed4..118e66895e 100644
--- a/guix/scripts/home.scm
+++ b/guix/scripts/home.scm
@@ -274,7 +274,12 @@ (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 <>))
+ (format #t (G_ "~a/ has been populated with all the configuration files \
+of your home environment. Run 'guix home reconfigure ~a/home-configuration.scm' \
+to make it take effect.") destination destination)))
((describe)
(match (generation-number %guix-home)
(0

base-commit: 1ffc0a6be3c1613b2d99ceea098174d1f11f6f3f
--
2.33.0
Ludovic Courtès wrote 3 years ago
Re: bug#51657: [PATCH] scripts: home: Make ‘gui x home import’ populate ‘home-configuration.scm
(name . Xinglu Chen)(address . public@yoctocell.xyz)
87bl2ivlat.fsf@gnu.org
Hello,

Xinglu Chen <public@yoctocell.xyz> skribis:

Toggle quote (5 lines)
> * 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.

Applied with the changes below. This is looking nice now!

Thanks!

Ludo’.
Toggle diff (33 lines)
diff --git a/doc/guix.texi b/doc/guix.texi
index 5ce18fdf8a..59ceb4477a 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -36673,7 +36673,7 @@ environment. Note that not every home service that exists is supported
@example
$ guix home import ~/guix-config
-/home/alice/guix-config has been populated with all the configuration files of your home environment. Run 'guix home reconfigure /home/alice/guix-config/home-configuration.scm' to make it take effect.
+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 118e66895e..afc7d8b39c 100644
--- a/guix/scripts/home.scm
+++ b/guix/scripts/home.scm
@@ -277,9 +277,12 @@ (define-syntax-rule (with-store* store exp ...)
(call-with-output-file
(string-append destination "/home-configuration.scm")
(cut import-manifest manifest destination <>))
- (format #t (G_ "~a/ has been populated with all the configuration files \
-of your home environment. Run 'guix home reconfigure ~a/home-configuration.scm' \
-to make it take effect.") destination 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
Closed
?
Your comment

This issue is archived.

To comment on this conversation send an email to 51657@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 51657
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch
You may also tag this issue. See list of standard tags. For example, to set the confirmed and easy tags
mumi command -t +confirmed -t +easy
Or, remove the moreinfo tag and set the help tag
mumi command -t -moreinfo -t +help