Subject: bug#78261: closed (Close)

From: [email-masked] (GNU bug Tracking System)
Date: Sat, 02 Aug 2025 19:01:02 +0000

Your bug report

#78261: [PATCH] services: greetd: Add support for initial session.

which was filed against the guix-patches package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
78261: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=78261
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Close
From: Andreas Enge <[email-masked]>
To: [email-masked]
Date: Sat, 2 Aug 2025 21:00:28 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Closing as requested.

Andreas

Subject: [PATCH] services: greetd: Add support for initial session.
From: Benjamin <[email-masked]>
To: [email-masked]
Cc: Benjamin <[email-masked]>
Date: Mon, 5 May 2025 16:40:23 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

This commit adds initial_session section to greetd configuration file.

This optional section describes the initial session, commonly
referred to as "auto-login".

* gnu/services/base.scm (greetd-terminal-configuration): Add initial-session-user
and initial-session-command fields.
* doc/guix.texi: Document the new fields.

Change-Id: I84d6860bfe459f3cae07f5932920741fd5a60899
---
 doc/guix.texi         | 12 ++++++++++++
 gnu/services/base.scm | 20 ++++++++++++++++----
 2 files changed, 28 insertions(+), 4 deletions(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index 7f796c5fc94..b69298eb5fb 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -20844,6 +20844,18 @@ Base Services
 @code{greetd-wlgreet-sway-session}, @code{greetd-gtkgreet-sway-session}
 or a file-like object to use as greeter.
 
+@item @code{initial-session-user} (default: @code{#f})
+The user to use for running the initial session.
+
+@code{initial-session-command} must also be defined.
+
+@item @code{initial-session-command} (default: @code{(greetd-agreety-session)})
+The command-line that greetd will run to start the initial session, e.g.
+@code{(file-append sway "/bin/sway")}.
+The initial session will be started exactly once when greetd is initially launched.
+
+@code{initial-session-user} must also be defined.
+
 @end table
 @end deftp
 
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 650121be8f1..56cb5206af9 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -3941,7 +3941,10 @@ (define-record-type* <greetd-terminal-configuration>
   (source-profile? greetd-source-profile? (default #t))
   (default-session-user greetd-default-session-user (default "greeter"))
   (default-session-command greetd-default-session-command
-    (default (greetd-agreety-session))))
+    (default (greetd-agreety-session)))
+  (initial-session-user greetd-initial-session-user (default #f))
+  (initial-session-command greetd-initial-session-command
+    (default #f)))
 
 (define (default-config-file-name config)
   (string-join (list "config-" (greetd-terminal-vt config) ".toml") ""))
@@ -3956,8 +3959,11 @@ (define (make-greetd-terminal-configuration-file config)
        (terminal-vt (greetd-terminal-vt config))
        (terminal-switch (greetd-terminal-switch config))
        (default-session-user (greetd-default-session-user config))
-       (default-session-command (greetd-default-session-command config)))
-    (mixed-text-file
+       (default-session-command (greetd-default-session-command config))
+       (initial-session-user (greetd-initial-session-user config))
+       (initial-session-command (greetd-initial-session-command config)))
+    (apply mixed-text-file
+     (cons*
      config-file-name
      "[general]\n"
      "source_profile = " (if source-profile? "true" "false") "\n"
@@ -3966,7 +3972,13 @@ (define (make-greetd-terminal-configuration-file config)
      "switch = " (if terminal-switch "true" "false") "\n"
      "[default_session]\n"
      "user = " default-session-user "\n"
-     "command = " default-session-command "\n")))
+     "command = " default-session-command "\n"
+     (if (and initial-session-user initial-session-command)
+       (list
+         "[initial_session]\n"
+         "user = " initial-session-user "\n"
+         "command = " initial-session-command "\n")
+       (list))))))
 
 (define %greetd-file-systems
   (list (file-system

base-commit: 17119f1a35b7bff683f2f8f2b5db09b4634283e6
-- 
2.49.0