GNU bug report logs - #78261
[PATCH] services: greetd: Add support for initial session.

Previous Next

Package: guix-patches;

Reported by: Benjamin <benjamin <at> uvy.fr>

Date: Mon, 5 May 2025 14:41:02 UTC

Severity: normal

Tags: patch

To reply to this bug, email your comments to 78261 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to gabriel <at> erlikon.ch, ludo <at> gnu.org, maxim.cournoyer <at> gmail.com, guix-patches <at> gnu.org:
bug#78261; Package guix-patches. (Mon, 05 May 2025 14:41:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Benjamin <benjamin <at> uvy.fr>:
New bug report received and forwarded. Copy sent to gabriel <at> erlikon.ch, ludo <at> gnu.org, maxim.cournoyer <at> gmail.com, guix-patches <at> gnu.org. (Mon, 05 May 2025 14:41:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Benjamin <benjamin <at> uvy.fr>
To: guix-patches <at> gnu.org
Cc: Benjamin <benjamin <at> uvy.fr>
Subject: [PATCH] services: greetd: Add support for initial session.
Date: Mon,  5 May 2025 16:40:23 +0200
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





This bug report was last modified 10 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.