gnu: desktop: Add seatd-service-type.
* gnu/services/desktop.scm (seatd-service-type): New variable * gnu/services/desktop.scm (seatd-configuration): New data type Signed-off-by: Lars-Dominik Braun <ldb@leibniz-psychology.org>
This commit is contained in:
parent
167b8f29b3
commit
d6dda325c1
@ -22875,6 +22875,52 @@ 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{logfile} (default: @samp{"/var/log/seatd.log"})
|
||||
Log file to write to.
|
||||
|
||||
@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
|
||||
|
||||
|
@ -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))
|
||||
#:autoload (gnu services sddm) (sddm-service-type)
|
||||
#:use-module (gnu system)
|
||||
#:use-module (gnu system setuid)
|
||||
@ -157,6 +160,9 @@
|
||||
gnome-keyring-configuration?
|
||||
gnome-keyring-service-type
|
||||
|
||||
seatd-configuration
|
||||
seatd-service-type
|
||||
|
||||
%desktop-services))
|
||||
|
||||
;;; Commentary:
|
||||
@ -1630,6 +1636,60 @@ 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"))
|
||||
(logfile seatd-logfile (default "/var/log/seatd.log"))
|
||||
(loglevel seatd-loglevel (default "info")))
|
||||
|
||||
(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))
|
||||
#:environment-variables
|
||||
(list (string-append "SEATD_LOGLEVEL="
|
||||
#$(seatd-loglevel config))
|
||||
(string-append "SEATD_DEFAULTPATH="
|
||||
#$(seatd-socket config)))
|
||||
#:log-file #$(seatd-logfile config)))
|
||||
(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.
|
||||
|
Loading…
Reference in New Issue
Block a user