Subject: Re: (home-)on-first-login script broken when no gexps are added

From: Rostislav Svoboda <[email-masked]>
Date: Tue, 24 Oct 2023 16:17:39 +0200

> > I've just pushed something similar to what you provided, Carlo, in
> > commit e098ba2f499bbddfea50c85058e4077e39b85513.
> >
> > We should be good now.
>
> I'm afraid this did not fix the issue. It results in
> (when (claim-first-run flag-file-path) (begin))
>
> which leads to the new error message "Syntax error:
> /home/nl/.guix-home/on-first-login:3:1272: sequence of zero expressions in form (begin)"

Adding *unspecified* works for me. I.e.:

    (when (claim-first-run flag-file-path)
      ;; GEXPS can be empty, hence 'begin *unspecified*'. Having just
      ;; 'begin' without '*unspecified*' leads to
      ;; "Syntax error: ... sequence of zero expressions in form (begin)"
      (begin *unspecified* #$@gexps))

The patch is in the attachment.

Cheers Bost
From 96da848ddeec11f207dabec64a5d314c28e6c46f Mon Sep 17 00:00:00 2001
Message-ID: <96da848dd[email-masked]>
From: Rostislav Svoboda <[email-masked]>
Date: Tue, 24 Oct 2023 16:08:10 +0200
Subject: [PATCH] =?UTF-8?q?home:=20services:=20Fix=20regression=20in=20gen?=
 =?UTF-8?q?erated=20=E2=80=98on-first-login=E2=80=99=20script.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Fixes <https://issues.guix.gnu.org/66659>.

Fixes a regression introduced in 6b0a32196982a0a2f4dbb59d35e55833a5545ac6. The
first attempt in e098ba2f499bbddfea50c85058e4077e39b85513 to fix this issue didn't work.

* gnu/home/services.scm (compute-on-first-login-script): Add
‘begin *unspecified*’ around #$@gexps.

Change-Id: I14339ad684ffe93e692e507b57dcd221d96210ef
---
 gnu/home/services.scm | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/gnu/home/services.scm b/gnu/home/services.scm
index 282fed74c1..44f585aff5 100644
--- a/gnu/home/services.scm
+++ b/gnu/home/services.scm
@@ -435,7 +435,10 @@ (define (compute-on-first-login-script _ gexps)
          ;; after complete logout/reboot.
          (if (file-exists? xdg-runtime-dir)
              (when (claim-first-run flag-file-path)
-               (begin #$@gexps))            ;GEXPS can be empty, hence 'begin'
+               ;; GEXPS can be empty, hence 'begin *unspecified*'. Having just
+               ;; 'begin' without '*unspecified*' leads to
+               ;; "Syntax error: ... sequence of zero expressions in form (begin)"
+               (begin *unspecified* #$@gexps))
              ;; TRANSLATORS: 'on-first-login' is the name of a service and
              ;; shouldn't be translated
              (warning (G_ "XDG_RUNTIME_DIR doesn't exists, on-first-login script

base-commit: d22d2a05c389207f8cdcf824be7738b1499a987c
-- 
2.41.0