services: xorg: Deprecate 'screen-locker-service' procedure.

* doc/guix.texi (X Window): Replace 'screen-locker-service' with 'screen-locker-service-type'.
Document <screen-locker-configuration>.
* gnu/services/desktop.scm (desktop-services-for-system): Use screen-locker-service-type.
* gnu/services/xorg.scm: Export accessors for <screen-locker-configuration>.
(<screen-locker>): Rename to ...
(<screen-locker-configuration>): ... this.
(<screen-locker-configuration>)[empty?]: Rename to ...
(<screen-locker-configuration>)[allow-empty-password?]: ... this.
(screen-locker-pam-services): Update record name.
(screen-locker-setuid-programs): Update accessor name.
(screen-locker-service): Deprecate procedure.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Bruno Victal 2023-03-06 17:26:44 +00:00 committed by Ludovic Courtès
parent 1a6f230dd3
commit 5627c73a9e
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5
3 changed files with 62 additions and 25 deletions

View file

@ -22212,18 +22212,38 @@ Usually the X server is started by a login manager.
@end deffn @end deffn
@deffn {Scheme Procedure} screen-locker-service @var{package} [@var{program}] @defvar screen-locker-service-type
Add @var{package}, a package for a screen locker or screen saver whose Type for a service that adds a package for a screen locker or screen
command is @var{program}, to the set of setuid programs and add a PAM entry saver to the set of setuid programs and add a PAM entry for it. The
for it. For example: value for this service is a @code{<screen-locker-configuration>} object.
For example, to make XlockMore usable:
@lisp @lisp
(screen-locker-service xlockmore "xlock") (service screen-locker-service-type
(screen-locker-configuration
"xlock" (file-append xlockmore "/bin/xlock") #f))
@end lisp @end lisp
makes the good ol' XlockMore usable. makes the good ol' XlockMore usable.
@end deffn @end defvar
@deftp {Data Type} screen-locker-configuration
Data type representing the configuration of
@code{screen-locker-service-type}.
@table @asis
@item @code{name} (type: string)
Name of the screen locker.
@item @code{program} (type: gexp)
Path to the executable for the screen locker as a G-Expression.
@item @code{allow-empty-password?} (type: boolean)
Whether to allow empty passwords.
@end table
@end deftp
@node Printing Services @node Printing Services
@subsection Printing Services @subsection Printing Services

View file

@ -1832,8 +1832,12 @@ (define* (desktop-services-for-system #:optional
(service sddm-service-type)) (service sddm-service-type))
;; Screen lockers are a pretty useful thing and these are small. ;; Screen lockers are a pretty useful thing and these are small.
(screen-locker-service slock) (service screen-locker-service-type
(screen-locker-service xlockmore "xlock") (screen-locker-configuration
"slock" (file-append slock "/bin/slock") #f))
(service screen-locker-service-type
(screen-locker-configuration
"xlock" (file-append xlockmore "/bin/xlock") #f))
;; Add udev rules for MTP devices so that non-root users can access ;; Add udev rules for MTP devices so that non-root users can access
;; them. ;; them.

View file

@ -107,10 +107,13 @@ (define-module (gnu services xorg)
slim-service-type slim-service-type
screen-locker screen-locker-configuration
screen-locker? screen-locker-configuration?
screen-locker-configuration-name
screen-locker-configuration-program
screen-locker-configuration-allow-empty-password?
screen-locker-service-type screen-locker-service-type
screen-locker-service screen-locker-service ; deprecated
localed-configuration localed-configuration
localed-configuration? localed-configuration?
@ -683,21 +686,30 @@ (define slim-service-type
;;; Screen lockers & co. ;;; Screen lockers & co.
;;; ;;;
(define-record-type <screen-locker> (define-record-type <screen-locker-configuration>
(screen-locker name program empty?) (screen-locker-configuration name program allow-empty-password?)
screen-locker-configuration?
(name screen-locker-configuration-name) ;string
(program screen-locker-configuration-program) ;gexp
(allow-empty-password?
screen-locker-configuration-allow-empty-password?)) ;Boolean
(define-deprecated/public-alias
screen-locker
screen-locker-configuration)
(define-deprecated/public-alias
screen-locker? screen-locker?
(name screen-locker-name) ;string screen-locker-configuration?)
(program screen-locker-program) ;gexp
(empty? screen-locker-allows-empty-passwords?)) ;Boolean
(define screen-locker-pam-services (define screen-locker-pam-services
(match-lambda (match-lambda
(($ <screen-locker> name _ empty?) (($ <screen-locker-configuration> name _ empty?)
(list (unix-pam-service name (list (unix-pam-service name
#:allow-empty-passwords? empty?))))) #:allow-empty-passwords? empty?)))))
(define screen-locker-setuid-programs (define screen-locker-setuid-programs
(compose list file-like->setuid-program screen-locker-program)) (compose list file-like->setuid-program screen-locker-configuration-program))
(define screen-locker-service-type (define screen-locker-service-type
(service-type (name 'screen-locker) (service-type (name 'screen-locker)
@ -711,10 +723,11 @@ (define screen-locker-service-type
the graphical server by making it setuid-root, so it can authenticate users, the graphical server by making it setuid-root, so it can authenticate users,
and by creating a PAM service for it."))) and by creating a PAM service for it.")))
(define* (screen-locker-service package (define-deprecated (screen-locker-service package
#:optional #:optional
(program (package-name package)) (program (package-name package))
#:key allow-empty-passwords?) #:key allow-empty-passwords?)
screen-locker-service-type
"Add @var{package}, a package for a screen locker or screen saver whose "Add @var{package}, a package for a screen locker or screen saver whose
command is @var{program}, to the set of setuid programs and add a PAM entry command is @var{program}, to the set of setuid programs and add a PAM entry
for it. For example: for it. For example:
@ -725,7 +738,7 @@ (define* (screen-locker-service package
makes the good ol' XlockMore usable." makes the good ol' XlockMore usable."
(service screen-locker-service-type (service screen-locker-service-type
(screen-locker program (screen-locker-configuration program
(file-append package "/bin/" program) (file-append package "/bin/" program)
allow-empty-passwords?))) allow-empty-passwords?)))