Subject: Re: [bug#50296] [PATCH 0/2] Add 'guix home' command.

From: Andrew Tropin <[email-masked]>
Date: Thu, 09 Sep 2021 09:10:16 +0300

On 2021-08-31 17:23, Oleg Pykhalov wrote:

> Andrew Tropin <[email-masked]> writes:
>
> […]
>
>> The functions from home-services-utils used by xdg now in home-services
>> utils:
>>
>> From efd3ea79905c12e2c1c594fa6b54cf62d741f92f Mon Sep 17 00:00:00 2001
>> From: Andrew Tropin <[email-masked]>
>> Date: Tue, 31 Aug 2021 15:40:07 +0300
>> Subject: [PATCH 2/2] home-services: configuration: Add
>>  generic-serialize-alist.
>>
>> * gnu/home-services/configuration.scm (generic-serialize-alist)
>> (generic-serialize-alist-entry): New variables.
>
> As you said, no variables, but functions ;-)
>
> Also, we could join those functions in Git commit message with comma.
>
> Applied with changes above.
>
> […]
>
>>> run-on-change service doesn't handle the case, where the previous
>>> generation doesn't exists.  Fix should be pretty simple, will send a
>>> patch once it done.  Thank you for catching this)
>>>
>>
>> The fix:
>>
>> From a07541380d412b33c504e5811776062af4e38582 Mon Sep 17 00:00:00 2001
>> From: Andrew Tropin <[email-masked]>
>> Date: Tue, 31 Aug 2021 15:24:25 +0300
>> Subject: [PATCH 1/2] home-services: run-on-change: Handle first generation
>>  case.
>>
>> ---
>>  gnu/home-services.scm | 5 +++--
>>  1 file changed, 3 insertions(+), 2 deletions(-)
>
> […]
>
> Added Git changelog-like line.
>
> Applied.
>
> Pushed to wip-guix-home as 0c7bb26435513a61814d98af1c790e43a74afb6e.
>
> Oleg.

I did a little better solution for the first generation case for
on-change service.  Added it as fixup commit, so it's necessary to
rebase with --autosquash to get it melded in the right place.  Can you
also rebase the whole branch on the latest master and recreate it,
please?  I'll test it and will be preparing for merge.  Probably will
send a few more patches, but they should be minor.

From 6f3ec7f6bb4a6f495c4b7f38fce7cb31d179097b Mon Sep 17 00:00:00 2001
From: Andrew Tropin <[email-masked]>
Date: Wed, 8 Sep 2021 08:15:35 +0300
Subject: [PATCH] fixup! home-services: run-on-change: Handle first generation
 case.

---
 gnu/home-services.scm | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/gnu/home-services.scm b/gnu/home-services.scm
index 5608c65175..9f1e986616 100644
--- a/gnu/home-services.scm
+++ b/gnu/home-services.scm
@@ -439,7 +439,10 @@ with one gexp, but many times, and all gexps must be idempotent.")))
       (define expressions-to-eval
         (map
          (lambda (x)
-           (let* ((file1 (string-append (getenv "GUIX_OLD_HOME") "/" (car x)))
+           (let* ((file1 (string-append
+                          (or (getenv "GUIX_OLD_HOME")
+                              "/gnu/store/non-existing-generation")
+                          "/" (car x)))
                   (file2 (string-append (getenv "GUIX_NEW_HOME") "/" (car x)))
                   (_ (format #t "Comparing ~a and\n~10t~a..." file1 file2))
                   (any-changes? (something-changed? file1 file2))
@@ -448,14 +451,14 @@ with one gexp, but many times, and all gexps must be idempotent.")))
              (if any-changes? (cadr x) "")))
          '#$pattern-gexp-tuples))
 
-      (if (and #$eval-gexps? (getenv "GUIX_OLD_HOME"))
+      (if #$eval-gexps?
           (begin
             (display "Evaling on-change gexps.\n\n")
             (for-each primitive-eval expressions-to-eval)
             (display "On-change gexps evaluation finished.\n\n"))
           (display "\
-On-change gexps won't evaluated, disabled by service configuration or
-there are no previos generations.\n"))))
+On-change gexps won't be evaluated, disabled by service
+configuration.\n"))))
 
 (define home-run-on-change-service-type
   (service-type (name 'home-run-on-change)
-- 
2.33.0