From: muradm <mail@muradm.net>
To: 49969@debbugs.gnu.org
Cc: muradm <mail@muradm.net>
Subject: [bug#49969] [PATCH 5/7] gnu: desktop: Add seatd-service-type
Date: Mon, 9 Aug 2021 22:18:01 +0300 [thread overview]
Message-ID: <20210809191803.7833-5-mail@muradm.net> (raw)
In-Reply-To: <20210809190257.7280-1-mail@muradm.net>
A seat management daemon, that does everything it needs to do.
Nothing more, nothing less. Depends only on libc.
* gnu/services/desktop.scm: Add seatd-service-type
---
gnu/services/desktop.scm | 117 ++++++++++++++++++++++++++++++++++++++-
1 file changed, 116 insertions(+), 1 deletion(-)
diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm
index 64d0e85301..cc13859532 100644
--- a/gnu/services/desktop.scm
+++ b/gnu/services/desktop.scm
@@ -13,6 +13,7 @@
;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2020 Reza Alizadeh Majd <r.majd@pantherx.org>
;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
+;;; Copyright © 2021 muradm <mail@muradm.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -39,7 +40,9 @@
#:use-module (gnu services networking)
#:use-module (gnu services sound)
#:use-module ((gnu system file-systems)
- #:select (%elogind-file-systems file-system))
+ #:select (%elogind-file-systems
+ %control-groups
+ file-system))
#:use-module (gnu system)
#:use-module (gnu system setuid)
#:use-module (gnu system shadow)
@@ -154,6 +157,9 @@
gnome-keyring-configuration?
gnome-keyring-service-type
+ seatd-configuration
+ seatd-service-type
+
%desktop-services))
;;; Commentary:
@@ -1182,6 +1188,115 @@ or setting its password with passwd.")))
(define polkit-wheel-service
(simple-service 'polkit-wheel polkit-service-type (list polkit-wheel)))
+\f
+;;;
+;;; seatd-service-type -- Seat management daemon
+;;;
+
+;; TODO: separate service-type is needed for cgroups
+(define %seatd-file-systems
+ (append
+ (list (file-system
+ (device "none")
+ (mount-point "/run/seatd/pam_mount")
+ (type "tmpfs")
+ (check? #f)
+ (flags '(no-suid no-dev no-exec))
+ (options "mode=0755")
+ (create-mount-point? #t)))
+ %control-groups))
+
+(define %seatd-pam-mount-rules
+ `((debug (@ (enable "0")))
+ (volume (@ (sgrp "users")
+ (fstype "tmpfs")
+ (mountpoint "/run/user/%(USERUID)")
+ (options "noexec,nosuid,nodev,size=1g,mode=0700,uid=%(USERUID),gid=%(USERGID)")))
+ (logout (@ (wait "0")
+ (hup "0")
+ (term "yes")
+ (kill "no")))
+ (mkmountpoint (@ (enable "1") (remove "true")))))
+
+(define-record-type* <seatd-configuration> seatd-configuration
+ make-seatd-configuration
+ seatd-configuration?
+ (seatd seatd-package (default seatd))
+ (user seatd-user (default "root"))
+ (group seatd-group (default "users"))
+ (socket seatd-socket (default "/run/seatd.sock")))
+
+(define (make-seatd-pam-mount-configuration-file config)
+ (computed-file
+ "seatd_pam_mount.conf.xml"
+ #~(begin
+ (use-modules (sxml simple))
+ (call-with-output-file #$output
+ (lambda (port)
+ (sxml->xml
+ '(*TOP*
+ (*PI* xml "version='1.0' encoding='utf-8'")
+ (pam_mount
+ #$@%seatd-pam-mount-rules
+ (pmvarrun
+ #$(file-append seatd-pam-mount
+ "/sbin/pmvarrun -u '%(USER)' -o '%(OPERATION)'"))))
+ port))))))
+
+(define (seatd-pam-mount-etc-service config)
+ `(("security/seatd_pam_mount.conf.xml"
+ ,(make-seatd-pam-mount-configuration-file config))))
+
+(define (seatd-pam-mount-pam-service config)
+ (define optional-pam-mount
+ (pam-entry
+ (control "optional")
+ (module #~(string-append #$seatd-pam-mount "/lib/security/pam_mount.so"))))
+ (list (lambda (pam)
+ (if (member (pam-service-name pam)
+ '("login" "su" "slim" "gdm-password"))
+ (pam-service
+ (inherit pam)
+ (auth (append (pam-service-auth pam)
+ (list optional-pam-mount)))
+ (session (append (pam-service-session pam)
+ (list optional-pam-mount))))
+ pam))))
+
+(define (seatd-shepherd-service config)
+ (list (shepherd-service
+ (requirement '())
+ ;; TODO: once cgroups is separate dependency
+ ;; here we should depend on it rather than elogind
+ (provision '(seatd elogind))
+ (start #~(make-forkexec-constructor
+ (list #$(file-append (seatd-package config) "/bin/seatd")
+ "-u" #$(seatd-user config)
+ "-g" #$(seatd-group config)
+ "-s" #$(seatd-socket config))))
+ (stop #~(make-kill-destructor)))))
+
+(define seatd-environment
+ (match-lambda
+ (($ <seatd-configuration> _ _ _ socket)
+ `(("SEATD_SOCK" . ,socket)))))
+
+(define seatd-service-type
+ (service-type (name 'seatd)
+ (extensions
+ (list
+ (service-extension session-environment-service-type
+ seatd-environment)
+ (service-extension file-system-service-type
+ (const %seatd-file-systems))
+ (service-extension etc-service-type
+ seatd-pam-mount-etc-service)
+ (service-extension pam-root-service-type
+ seatd-pam-mount-pam-service)
+ (service-extension shepherd-root-service-type
+ seatd-shepherd-service)))
+ (default-value (seatd-configuration))))
+
\f
;;;
;;; The default set of desktop services.
--
2.32.0
next prev parent reply other threads:[~2021-08-09 19:19 UTC|newest]
Thread overview: 132+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-09 19:02 [bug#49969] [PATCH 0/7] gnu: desktop: Add seatd-service-type and greetd-service-type muradm
2021-08-09 19:17 ` [bug#49969] [PATCH 1/7] gnu: rust-enquote: Add rust-enquote 1.0.3 muradm
2021-08-09 19:17 ` [bug#49969] [PATCH 2/7] gnu: rust-pam-sys: Add rust-pam-sys 0.5.6 muradm
2021-08-09 19:17 ` [bug#49969] [PATCH 3/7] gnu: greetd: Add greetd 0.7.0 muradm
2021-08-09 19:18 ` [bug#49969] [PATCH 4/7] gnu: seatd-pam-mount: Add seatd-pam-mount muradm
2021-08-09 19:18 ` muradm [this message]
2021-08-09 19:18 ` [bug#49969] [PATCH 6/7] gnu: desktop: Add greetd-service-type muradm
2021-08-09 19:18 ` [bug#49969] [PATCH 7/7] doc: Add desktop seatd-service-type and greetd-service-type muradm
2021-08-10 19:36 ` [bug#49969] [PATCH v2 0/7] gnu: desktop: Add " muradm
2021-08-10 20:07 ` [bug#49969] [PATCH v2 1/7] gnu: crates-io: Add rust-enquote 1.0.3 muradm
2021-08-11 11:16 ` Xinglu Chen
2021-08-11 19:12 ` muradm
2021-08-10 20:07 ` [bug#49969] [PATCH v2 2/7] gnu: crates-io: Add rust-pam-sys 0.5.6 muradm
2021-08-11 11:20 ` Xinglu Chen
2021-08-11 19:12 ` muradm
2021-08-10 20:07 ` [bug#49969] [PATCH v2 3/7] gnu: freedesktop: Add greetd 0.7.0 muradm
2021-08-11 11:29 ` Xinglu Chen
2021-08-11 20:10 ` muradm
2021-08-12 11:45 ` Xinglu Chen
2021-08-12 19:51 ` muradm
2021-08-10 20:07 ` [bug#49969] [PATCH v2 4/7] gnu: admin: Add greetd-pam-mount muradm
2021-08-11 11:32 ` Xinglu Chen
2021-08-11 20:15 ` muradm
2021-08-10 20:07 ` [bug#49969] [PATCH v2 5/7] gnu: desktop: Add seatd-service-type muradm
2021-08-11 11:52 ` Xinglu Chen
2021-08-11 20:31 ` muradm
2021-08-10 20:07 ` [bug#49969] [PATCH v2 6/7] gnu: desktop: Add greetd-service-type muradm
2021-08-10 20:07 ` [bug#49969] [PATCH v2 7/7] doc: Add desktop seatd-service-type and greetd-service-type muradm
2021-08-12 21:55 ` [bug#49969] [PATCH 00/10] gnu: desktop: Add " muradm
2021-08-12 22:00 ` muradm
2021-08-12 22:04 ` [bug#49969] [PATCH v3 " muradm
2021-08-19 14:31 ` [bug#49969] [PATCH v4 " muradm
2021-08-19 14:38 ` [bug#49969] [PATCH v4 01/10] gnu: crates-io: Add rust-enquote 1.0.3 muradm
2021-08-19 14:38 ` [bug#49969] [PATCH v4 02/10] gnu: crates-io: Add rust-pam-sys 0.5.6 muradm
2021-08-19 14:38 ` [bug#49969] [PATCH v4 03/10] gnu: freedesktop: Add greetd 0.7.0 muradm
2021-08-19 14:39 ` [bug#49969] [PATCH v4 04/10] gnu: admin: Add greetd-pam-mount muradm
2021-08-19 14:39 ` [bug#49969] [PATCH v4 05/10] gnu: desktop: Add seatd-service-type muradm
2021-08-19 14:39 ` [bug#49969] [PATCH v4 06/10] gnu: desktop: Add greetd-service-type muradm
2021-08-19 14:39 ` [bug#49969] [PATCH v4 07/10] gnu: base: Add greetd to applied PAM services muradm
2021-08-19 14:39 ` [bug#49969] [PATCH v4 08/10] gnu: pam-mount: " muradm
2021-08-19 14:39 ` [bug#49969] [PATCH v4 09/10] gnu: tests: Add seatd/greetd based minimal desktop system tests muradm
2021-08-19 14:39 ` [bug#49969] [PATCH v4 10/10] doc: Add desktop seatd-service-type and greetd-service-type muradm
2021-08-22 21:50 ` [bug#49969] [PATCH v5 00/10] gnu: desktop: Add " muradm
2021-08-22 21:50 ` [bug#49969] [PATCH v5 01/10] gnu: crates-io: Add rust-enquote 1.0.3 muradm
2021-08-22 21:50 ` [bug#49969] [PATCH v5 02/10] gnu: crates-io: Add rust-pam-sys 0.5.6 muradm
2021-08-22 21:50 ` [bug#49969] [PATCH v5 03/10] gnu: freedesktop: Add greetd 0.7.0 muradm
2021-08-22 21:50 ` [bug#49969] [PATCH v5 04/10] gnu: admin: Add greetd-pam-mount muradm
2021-08-22 21:50 ` [bug#49969] [PATCH v5 05/10] gnu: desktop: Add seatd-service-type muradm
2021-08-22 21:50 ` [bug#49969] [PATCH v5 06/10] gnu: desktop: Add greetd-service-type muradm
2021-08-22 21:50 ` [bug#49969] [PATCH v5 07/10] gnu: base: Add greetd to applied PAM services muradm
2021-08-22 21:50 ` [bug#49969] [PATCH v5 08/10] gnu: pam-mount: " muradm
2021-08-22 21:50 ` [bug#49969] [PATCH v5 09/10] gnu: tests: Add seatd/greetd based minimal desktop system tests muradm
2021-08-22 21:50 ` [bug#49969] [PATCH v5 10/10] doc: Add desktop seatd-service-type and greetd-service-type muradm
2021-09-06 15:26 ` [bug#49969] [PATCH v6 0/8] gnu: Add " muradm
2021-09-06 15:26 ` [bug#49969] [PATCH v6 1/8] gnu: crates-io: Add rust-enquote-1 1.0.3 muradm
2021-09-06 15:26 ` [bug#49969] [PATCH v6 2/8] gnu: crates-io: Add rust-pam-sys 0.5.6 muradm
2021-09-06 15:26 ` [bug#49969] [PATCH v6 3/8] gnu: admin: Add greetd 0.8.0 muradm
2021-09-06 15:26 ` [bug#49969] [PATCH v6 4/8] gnu: admin: Add greetd-pam-mount muradm
2021-09-06 15:26 ` [bug#49969] [PATCH v6 5/8] gnu: base: Add greetd-service-type muradm
2021-09-06 15:26 ` [bug#49969] [PATCH v6 6/8] gnu: admin: Add libseat 0.5.0 and move seatd muradm
2021-09-06 15:26 ` [bug#49969] [PATCH v6 7/8] gnu: desktop: Add seatd-service-type muradm
2021-09-06 15:26 ` [bug#49969] [PATCH v6 8/8] gnu: tests: Add seatd/greetd based minimal desktop system tests muradm
2021-09-15 16:29 ` [bug#49969] [PATCH v7 0/7] gnu: Add greetd-service-type and seatd-service-type muradm
2021-09-15 16:29 ` [bug#49969] [PATCH v7 1/7] gnu: crates-io: Add rust-enquote 1.0.3 and rust-pam-sys 0.5.6 muradm
2021-09-15 16:29 ` [bug#49969] [PATCH v7 2/7] gnu: admin: Add greetd 0.8.0 muradm
2021-09-15 16:29 ` [bug#49969] [PATCH v7 3/7] gnu: admin: Add greetd-pam-mount muradm
2021-09-15 16:29 ` [bug#49969] [PATCH v7 4/7] gnu: base: Add greetd-service-type muradm
2021-09-15 16:29 ` [bug#49969] [PATCH v7 5/7] gnu: admin: Add libseat 0.6.1 and move seatd muradm
2021-09-15 16:29 ` [bug#49969] [PATCH v7 6/7] gnu: desktop: Add seatd-service-type muradm
2021-09-15 16:29 ` [bug#49969] [PATCH v7 7/7] gnu: tests: Add seatd/greetd based minimal desktop system tests muradm
2021-09-16 19:47 ` [bug#49969] [PATCH v8 0/7] Update libseat and seatd to 0.6.2 muradm
2021-09-16 19:47 ` [bug#49969] [PATCH v8 1/7] gnu: crates-io: Add rust-enquote 1.0.3 and rust-pam-sys 0.5.6 muradm
2021-09-16 19:47 ` [bug#49969] [PATCH v8 2/7] gnu: admin: Add greetd 0.8.0 muradm
2021-09-16 19:47 ` [bug#49969] [PATCH v8 3/7] gnu: admin: Add greetd-pam-mount muradm
2021-09-16 19:47 ` [bug#49969] [PATCH v8 4/7] gnu: base: Add greetd-service-type muradm
2021-09-16 19:47 ` [bug#49969] [PATCH v8 5/7] gnu: admin: Add libseat 0.6.2 and move seatd muradm
2021-09-24 23:13 ` Leo Famulari
2021-09-25 7:00 ` muradm
2021-09-16 19:47 ` [bug#49969] [PATCH v8 6/7] gnu: desktop: Add seatd-service-type muradm
2021-09-16 19:47 ` [bug#49969] [PATCH v8 7/7] gnu: tests: Add seatd/greetd based minimal desktop system tests muradm
2021-08-12 22:04 ` [bug#49969] [PATCH v3 01/10] gnu: crates-io: Add rust-enquote 1.0.3 muradm
2021-08-12 22:04 ` [bug#49969] [PATCH v3 02/10] gnu: crates-io: Add rust-pam-sys 0.5.6 muradm
2021-08-12 22:04 ` [bug#49969] [PATCH 03/10] gnu: freedesktop: Add greetd 0.7.0 muradm
2021-08-12 22:04 ` [bug#49969] [PATCH v3 04/10] gnu: admin: Add greetd-pam-mount muradm
2021-08-12 22:04 ` [bug#49969] [PATCH v3 05/10] gnu: desktop: Add seatd-service-type muradm
2021-08-12 22:04 ` [bug#49969] [PATCH v3 06/10] gnu: desktop: Add greetd-service-type muradm
2021-08-12 22:04 ` [bug#49969] [PATCH v3 07/10] gnu: base: Add greetd to applied PAM services muradm
2021-08-12 22:04 ` [bug#49969] [PATCH v3 08/10] gnu: pam-mount: " muradm
2021-08-12 22:04 ` [bug#49969] [PATCH v3 09/10] gnu: tests: Add seatd/greetd based minimal desktop system tests muradm
2021-08-12 22:04 ` [bug#49969] [PATCH v3 10/10] doc: Add desktop seatd-service-type and greetd-service-type muradm
2021-08-13 20:43 ` [bug#49969] [PATCH v3 03/10] gnu: freedesktop: Add greetd 0.7.0 muradm
2021-11-14 17:43 ` [bug#49969] [PATCH 0/7] gnu: desktop: Add seatd-service-type and greetd-service-type norgli via Guix-patches via
[not found] <20220603180923.0caf6958@ultrarare.space>
2022-06-03 10:10 ` [bug#49969] [PATCH v9 1/7] gnu: crates-io: Add rust-enquote 1.1.0 and rust-pam-sys 0.5.6 Hilton Chain via Guix-patches via
2022-06-03 10:11 ` [bug#49969] [PATCH 2/7] gnu: admin: Add greetd 0.8.0 Hilton Chain via Guix-patches via
2022-06-03 10:14 ` [bug#49969] [PATCH v9 3/7] gnu: admin: Add greetd-pam-mount Hilton Chain via Guix-patches via
2022-06-03 10:15 ` [bug#49969] [PATCH v9 4/7] gnu: base: Add greetd-service-type Hilton Chain via Guix-patches via
2022-06-03 10:16 ` [bug#49969] [PATCH v9 5/7] gnu: admin: Add libseat 0.7.0 and move seatd Hilton Chain via Guix-patches via
2022-06-03 10:17 ` [bug#49969] [PATCH v9 6/7] gnu: desktop: Add seatd-service-type Hilton Chain via Guix-patches via
2022-06-03 10:18 ` [bug#49969] [PATCH v9 7/7] gnu: tests: Add seatd/greetd based minimal desktop system tests Hilton Chain via Guix-patches via
2022-06-07 9:44 ` [bug#49969] [PATCH v9 4/7] gnu: base: Add greetd-service-type Lars-Dominik Braun
2022-06-13 8:45 ` [bug#49969] [PATCH v10 0/7] " muradm
2022-06-13 8:45 ` [bug#49969] [PATCH v10 1/7] gnu: crates-io: Add rust-enquote 1.1.0 and rust-pam-sys 0.5.6 muradm
2022-06-13 13:20 ` Maxime Devos
2022-06-13 14:45 ` [bug#49969] [PATCH v11 0/8] " muradm
2022-06-13 14:45 ` [bug#49969] [PATCH v11 1/8] gnu: crates-io: Add rust-enquote 1.1.0 muradm
2022-06-13 14:45 ` [bug#49969] [PATCH v11 2/8] gnu: crates-io: Add rust-pam-sys 0.5.6 muradm
2022-06-13 14:45 ` [bug#49969] [PATCH v11 3/8] gnu: admin: Add greetd 0.8.0 muradm
2022-06-13 14:45 ` [bug#49969] [PATCH v11 4/8] gnu: admin: Add greetd-pam-mount muradm
2022-06-13 14:45 ` [bug#49969] [PATCH v11 5/8] gnu: base: Add greetd-service-type muradm
2022-06-13 14:45 ` [bug#49969] [PATCH v11 6/8] gnu: admin: Add libseat 0.8.0 and move seatd muradm
2022-06-13 14:45 ` [bug#49969] [PATCH v11 7/8] gnu: desktop: Add seatd-service-type muradm
2022-06-14 12:13 ` Tom Fitzhenry
2022-06-13 14:45 ` [bug#49969] [PATCH v11 8/8] gnu: tests: Add seatd/greetd based minimal desktop system tests muradm
2022-06-15 6:54 ` [bug#49969] [PATCH v11 0/8] Re: [bug#49969] [PATCH v10 1/7] gnu: crates-io: Add rust-enquote 1.1.0 and rust-pam-sys 0.5.6 muradm
2022-06-15 8:28 ` Lars-Dominik Braun
2022-06-15 9:17 ` [bug#49969] [PATCH v12 0/8] with fixed tests muradm
2022-06-15 9:17 ` [bug#49969] [PATCH v12 1/8] gnu: crates-io: Add rust-enquote 1.1.0 muradm
2022-06-15 9:17 ` [bug#49969] [PATCH v12 2/8] gnu: crates-io: Add rust-pam-sys 0.5.6 muradm
2022-06-15 9:17 ` [bug#49969] [PATCH v12 3/8] gnu: admin: Add greetd 0.8.0 muradm
2022-06-15 9:17 ` [bug#49969] [PATCH v12 4/8] gnu: admin: Add greetd-pam-mount muradm
2022-06-15 9:17 ` [bug#49969] [PATCH v12 5/8] gnu: base: Add greetd-service-type muradm
2022-06-15 9:17 ` [bug#49969] [PATCH v12 6/8] gnu: admin: Add libseat 0.8.0 and move seatd muradm
2022-06-15 9:17 ` [bug#49969] [PATCH v12 7/8] gnu: desktop: Add seatd-service-type muradm
2022-06-15 9:17 ` [bug#49969] [PATCH v12 8/8] gnu: tests: Add seatd/greetd based minimal desktop system tests muradm
2022-06-16 16:19 ` [bug#49969] [PATCH v12 0/8] with fixed tests muradm
2022-06-17 8:47 ` bug#49969: " Lars-Dominik Braun
2022-06-13 8:45 ` [bug#49969] [PATCH v10 2/7] gnu: admin: Add greetd 0.8.0 muradm
2022-06-13 8:46 ` [bug#49969] [PATCH v10 3/7] gnu: admin: Add greetd-pam-mount muradm
2022-06-13 8:46 ` [bug#49969] [PATCH v10 4/7] gnu: base: Add greetd-service-type muradm
2022-06-13 8:46 ` [bug#49969] [PATCH v10 5/7] gnu: admin: Add libseat 0.8.0 and move seatd muradm
2022-06-13 8:46 ` [bug#49969] [PATCH v10 6/7] gnu: desktop: Add seatd-service-type muradm
2022-06-13 8:46 ` [bug#49969] [PATCH v10 7/7] gnu: tests: Add seatd/greetd based minimal desktop system tests muradm
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210809191803.7833-5-mail@muradm.net \
--to=mail@muradm.net \
--cc=49969@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).