[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#49969] [PATCH v8 6/7] gnu: desktop: Add seatd-service-type.
From: |
muradm |
Subject: |
[bug#49969] [PATCH v8 6/7] gnu: desktop: Add seatd-service-type. |
Date: |
Thu, 16 Sep 2021 22:47:27 +0300 |
* gnu/services/desktop.scm (seatd-service-type): New variable
* gnu/services/desktop.scm (seatd-configuration): New data type
---
doc/guix.texi | 42 ++++++++++++++++++++++++++++
gnu/services/desktop.scm | 60 +++++++++++++++++++++++++++++++++++++++-
2 files changed, 101 insertions(+), 1 deletion(-)
diff --git a/doc/guix.texi b/doc/guix.texi
index c641ffc453..764355c69f 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -20110,6 +20110,48 @@ and ``passwd'' is with the value @code{passwd}.
@end table
@end deftp
+@defvr {Scheme Variable} seatd-service-type
+@uref{https://sr.ht/~kennylevinsen/seatd/, seatd} is a minimal seat
+management daemon.
+
+Seat management takes care of mediating access to shared devices (graphics,
+input), without requiring the applications needing access to be root.
+
+@lisp
+(append
+ (list
+ ;; make sure seatd is running
+ (service seatd-service-type))
+
+ ;; normally one would want %base-services
+ %base-services)
+
+@end lisp
+@end defvr
+
+@deftp {Data Type} seatd-configuration
+Configuration record for the seatd daemon service.
+
+@table @asis
+@item @code{seatd} (default: @code{seatd})
+The seatd package to use.
+
+@item @code{user} (default: @samp{"root"})
+User to own the seatd socket.
+
+@item @code{group} (default: @samp{"users"})
+Group to own the seatd socket.
+
+@item @code{socket} (default: @samp{"/run/seatd.sock"})
+Where to create the seatd socket.
+
+@item @code{loglevel} (default: @samp{"error"})
+Log level to output logs. Possible values: @samp{"silent"}, @samp{"error"},
+@samp{"info"} and @samp{"debug"}.
+
+@end table
+@end deftp
+
@node Sound Services
@subsection Sound Services
diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm
index 64d0e85301..c42db5987e 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 (%control-groups
+ %elogind-file-systems
+ 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,58 @@ or setting its password with passwd.")))
(define polkit-wheel-service
(simple-service 'polkit-wheel polkit-service-type (list polkit-wheel)))
+
+;;;
+;;; seatd-service-type -- minimal seat management daemon
+;;;
+
+(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"))
+ (loglevel seatd-loglevel (default "error")))
+
+(define (seatd-shepherd-service config)
+ (list (shepherd-service
+ (documentation "Minimal seat management daemon")
+ (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))
+ #:environment-variables
+ (list (string-append "SEATD_LOGLEVEL="
+ #$(seatd-loglevel config)))
+ #:log-file "/tmp/seatd.log"))
+ (stop #~(make-kill-destructor)))))
+
+(define seatd-environment
+ (match-lambda
+ (($ <seatd-configuration> _ _ _ socket)
+ `(("SEATD_SOCK" . ,socket)))))
+
+(define seatd-service-type
+ (service-type
+ (name 'seatd)
+ (description "Seat management takes care of mediating access
+to shared devices (graphics, input), without requiring the
+applications needing access to be root.")
+ (extensions
+ (list
+ (service-extension session-environment-service-type seatd-environment)
+ ;; TODO: once cgroups is separate dependency we should not mount it here
+ ;; for now it is mounted here, because elogind mounts it
+ (service-extension file-system-service-type (const %control-groups))
+ (service-extension shepherd-root-service-type seatd-shepherd-service)))
+ (default-value (seatd-configuration))))
+
;;;
;;; The default set of desktop services.
--
2.33.0
- [bug#49969] [PATCH v7 4/7] gnu: base: Add greetd-service-type., (continued)
- [bug#49969] [PATCH v7 4/7] gnu: base: Add greetd-service-type., muradm, 2021/09/15
- [bug#49969] [PATCH v7 5/7] gnu: admin: Add libseat 0.6.1 and move seatd., muradm, 2021/09/15
- [bug#49969] [PATCH v7 7/7] gnu: tests: Add seatd/greetd based minimal desktop system tests., muradm, 2021/09/15
- [bug#49969] [PATCH v7 6/7] gnu: desktop: Add seatd-service-type., muradm, 2021/09/15
- [bug#49969] [PATCH v7 2/7] gnu: admin: Add greetd 0.8.0., muradm, 2021/09/15
- [bug#49969] [PATCH v8 0/7] Update libseat and seatd to 0.6.2., muradm, 2021/09/16
- [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
- [bug#49969] [PATCH v8 4/7] gnu: base: Add greetd-service-type., muradm, 2021/09/16
- [bug#49969] [PATCH v8 2/7] gnu: admin: Add greetd 0.8.0., muradm, 2021/09/16
- [bug#49969] [PATCH v8 7/7] gnu: tests: Add seatd/greetd based minimal desktop system tests., muradm, 2021/09/16
- [bug#49969] [PATCH v8 6/7] gnu: desktop: Add seatd-service-type.,
muradm <=
- [bug#49969] [PATCH v8 3/7] gnu: admin: Add greetd-pam-mount., muradm, 2021/09/16
- [bug#49969] [PATCH v8 5/7] gnu: admin: Add libseat 0.6.2 and move seatd., muradm, 2021/09/16
- [bug#49969] [PATCH v8 5/7] gnu: admin: Add libseat 0.6.2 and move seatd., Leo Famulari, 2021/09/24
- [bug#49969] [PATCH v8 5/7] gnu: admin: Add libseat 0.6.2 and move seatd., muradm, 2021/09/25