[bug#78261] services: greetd: Add support for initial session.
Commit Message
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(-)
base-commit: 17119f1a35b7bff683f2f8f2b5db09b4634283e6
@@ -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
@@ -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