guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

04/05: home: import: Use (guix read-print) to render the config file.


From: guix-commits
Subject: 04/05: home: import: Use (guix read-print) to render the config file.
Date: Tue, 20 Sep 2022 13:29:08 -0400 (EDT)

civodul pushed a commit to branch master
in repository guix.

commit 76c58ed59c05fa2ae14281109c9186e47ba810da
Author: Ludovic Courtès <ludo@gnu.org>
AuthorDate: Tue Sep 20 11:58:32 2022 +0200

    home: import: Use (guix read-print) to render the config file.
    
    * guix/scripts/home/import.scm (manifest+configuration-files->code):
    Insert calls to 'comment' and 'vertical-space'.
    (import-manifest): Use 'pretty-print-with-comments/splice' instead of a
    loop on 'pretty-print'.
    * tests/home-import.scm (remove-recursively): New procedure.
    (eval-test-with-home-environment): Use it.
---
 guix/scripts/home/import.scm | 21 +++++++++++++++------
 tests/home-import.scm        | 11 ++++++++++-
 2 files changed, 25 insertions(+), 7 deletions(-)

diff --git a/guix/scripts/home/import.scm b/guix/scripts/home/import.scm
index 825ccb1e73..fd263c0699 100644
--- a/guix/scripts/home/import.scm
+++ b/guix/scripts/home/import.scm
@@ -26,9 +26,9 @@
   #:use-module (guix utils)
   #:use-module (guix packages)
   #:autoload   (guix scripts package) (manifest-entry-version-prefix)
+  #:use-module (guix read-print)
   #:use-module (gnu packages)
   #:use-module (ice-9 match)
-  #:use-module (ice-9 pretty-print)
   #:use-module (ice-9 rdelim)
   #:use-module (ice-9 regex)
   #:use-module (ice-9 popen)
@@ -170,8 +170,19 @@ user's files to CONFIGURATION-DIRECTORY; the generated 
sexp refers to them."
                         (gnu services)
                         ,@(delete-duplicates (concatenate modules)))
 
+           ,(vertical-space 1)
+
            (home-environment
-            (packages (specifications->packages ,packages))
+            ,(comment (G_ "\
+;; Below is the list of packages that will show up in your
+;; Home profile, under ~/.guix-home/profile.\n"))
+            (packages
+             (specifications->packages ,packages))
+
+            ,(vertical-space 1)
+            ,(comment (G_ "\
+;; Below is the list of Home services.  To search for available
+;; services, run 'guix home search KEYWORD' in a terminal.\n"))
             (services (list ,@services)))))))))
 
 (define* (import-manifest
@@ -187,7 +198,5 @@ user's files to CONFIGURATION-DIRECTORY; the generated sexp 
refers to them."
 ;; 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.\n"))
-     (for-each (lambda (exp)
-                 (newline port)
-                 (pretty-print exp port))
-               exp))))
+     (newline port)
+     (pretty-print-with-comments/splice port exp))))
diff --git a/tests/home-import.scm b/tests/home-import.scm
index d62a6de648..04b7b76156 100644
--- a/tests/home-import.scm
+++ b/tests/home-import.scm
@@ -23,6 +23,7 @@
   #:use-module (guix build utils)
   #:use-module (guix packages)
   #:use-module (ice-9 match)
+  #:use-module ((guix read-print) #:select (blank?))
   #:use-module ((guix profiles) #:hide (manifest->code))
   #:use-module ((guix build syscalls) #:select (mkdtemp!))
   #:use-module ((guix scripts package)
@@ -85,13 +86,21 @@ corresponding file."
               ((file . content) (create-file file content)))
             files-alist))
 
+(define (remove-recursively pred sexp)
+  "Like SRFI-1 'remove', but recurse within SEXP."
+  (let loop ((sexp sexp))
+    (match sexp
+      ((lst ...)
+       (map loop (remove pred lst)))
+      (x x))))
+
 (define (eval-test-with-home-environment files-alist manifest matcher)
   (create-temporary-home files-alist)
   (setenv "HOME" %temporary-home-directory)
   (mkdir-p %temporary-home-directory)
   (let* ((home-environment (manifest+configuration-files->code
                             manifest %destination-directory))
-         (result (matcher home-environment)))
+         (result (matcher (remove-recursively blank? home-environment))))
     (delete-file-recursively %temporary-home-directory)
     result))
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]