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 table
|
||||||
@end deftp
|
@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
|
@node Sound Services
|
||||||
@subsection Sound Services
|
@subsection Sound Services
|
||||||
|
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
|
;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||||
;;; Copyright © 2020 Reza Alizadeh Majd <r.majd@pantherx.org>
|
;;; Copyright © 2020 Reza Alizadeh Majd <r.majd@pantherx.org>
|
||||||
;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
|
;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
|
||||||
|
;;; Copyright © 2021 muradm <mail@muradm.net>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
@ -39,7 +40,9 @@
|
|||||||
#:use-module (gnu services networking)
|
#:use-module (gnu services networking)
|
||||||
#:use-module (gnu services sound)
|
#:use-module (gnu services sound)
|
||||||
#:use-module ((gnu system file-systems)
|
#: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)
|
#:autoload (gnu services sddm) (sddm-service-type)
|
||||||
#:use-module (gnu system)
|
#:use-module (gnu system)
|
||||||
#:use-module (gnu system setuid)
|
#:use-module (gnu system setuid)
|
||||||
@ -157,6 +160,9 @@
|
|||||||
gnome-keyring-configuration?
|
gnome-keyring-configuration?
|
||||||
gnome-keyring-service-type
|
gnome-keyring-service-type
|
||||||
|
|
||||||
|
seatd-configuration
|
||||||
|
seatd-service-type
|
||||||
|
|
||||||
%desktop-services))
|
%desktop-services))
|
||||||
|
|
||||||
;;; Commentary:
|
;;; Commentary:
|
||||||
@ -1630,6 +1636,60 @@ or setting its password with passwd.")))
|
|||||||
(define polkit-wheel-service
|
(define polkit-wheel-service
|
||||||
(simple-service 'polkit-wheel polkit-service-type (list polkit-wheel)))
|
(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.
|
;;; The default set of desktop services.
|
||||||
|
Loading…
Reference in New Issue
Block a user