From debbugs-submit-bounces@debbugs.gnu.org Mon May 05 10:40:58 2025 Received: (at submit) by debbugs.gnu.org; 5 May 2025 14:40:58 +0000 Received: from localhost ([127.0.0.1]:41411 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uBx06-0002mn-6x for submit@debbugs.gnu.org; Mon, 05 May 2025 10:40:58 -0400 Received: from lists.gnu.org ([2001:470:142::17]:38348) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uBx00-0002mS-8X for submit@debbugs.gnu.org; Mon, 05 May 2025 10:40:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uBwzo-0008Vh-1r for guix-patches@gnu.org; Mon, 05 May 2025 10:40:43 -0400 Received: from uvy1.uvy.fr ([54.37.64.75]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uBwzl-00044i-Eu for guix-patches@gnu.org; Mon, 05 May 2025 10:40:39 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; s=20240405; bh=2bQNniDFqB6 0mnLG6fBzOMcJAFYdZiLymKoS4iqucbk=; h=date:subject:cc:to:from; d=uvy.fr; b=pmMHedVCtxSXyFK1YwhI6YhG3NLb7m0MPTmXZ9RG+NgTnUcEBXHGyb5vza yyxGVL9x9HuoORwQz/xxOLZqVX7N2cc8DRnbed0CYrrD0/7F/NQNWrJe6r7jRY8nQ/Hfcr ajjczzi4ifOf5ISk3UcMcaH25+/mOmv/pq3UQ2zpTsHOFZ5fqhXfBvIOBZGKZ+mD2btDXn f98ubL7/jocRiOphMJw7hYCX3/odYgBGN2wZj/l/9qtFhCExHb9IHLY09S5jeVKHihjzG3 JfPcf3qbIS1sNU/0bOCBIf0un2LW8EwYxbW7JQzPlw7MyBpwtmTWDUM3bWHpCxYCrXPTzC lhZQ== Received: by uvy1.uvy.fr (OpenSMTPD) with ESMTPSA id 6653c291 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Mon, 5 May 2025 14:40:29 +0000 (UTC) From: Benjamin To: guix-patches@gnu.org Subject: [PATCH] services: greetd: Add support for initial session. Date: Mon, 5 May 2025 16:40:23 +0200 Message-ID: X-Mailer: git-send-email 2.49.0 MIME-Version: 1.0 X-Debbugs-Cc: Gabriel Wicki , Ludovic Courtès , Maxim Cournoyer Content-Transfer-Encoding: 8bit Received-SPF: permerror client-ip=54.37.64.75; envelope-from=benjamin@uvy.fr; helo=uvy1.uvy.fr X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: submit Cc: Benjamin X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) 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* (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