aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruno Victal <mirai@makinata.eu>2023-03-06 17:26:44 +0000
committerLudovic Courtès <ludo@gnu.org>2023-03-10 14:49:58 +0100
commit5627c73a9e410c7e28d67df517bd275d8c5f5d8d (patch)
treeabde077521c315d9f952ba71eef5e34d63991d9e
parent1a6f230dd3228ada28ae54166debecd634998663 (diff)
downloadguix-5627c73a9e410c7e28d67df517bd275d8c5f5d8d.tar
guix-5627c73a9e410c7e28d67df517bd275d8c5f5d8d.tar.gz
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>
-rw-r--r--doc/guix.texi32
-rw-r--r--gnu/services/desktop.scm8
-rw-r--r--gnu/services/xorg.scm47
3 files changed, 62 insertions, 25 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index b098e45a50..ce65a3bf99 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -22212,18 +22212,38 @@ Usually the X server is started by a login manager.
@end deffn
-@deffn {Scheme Procedure} screen-locker-service @var{package} [@var{program}]
-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
-for it. For example:
+@defvar screen-locker-service-type
+Type for a service that adds a package for a screen locker or screen
+saver to the set of setuid programs and add a PAM entry for it. The
+value for this service is a @code{<screen-locker-configuration>} object.
+
+For example, to make XlockMore usable:
@lisp
-(screen-locker-service xlockmore "xlock")
+(service screen-locker-service-type
+ (screen-locker-configuration
+ "xlock" (file-append xlockmore "/bin/xlock") #f))
@end lisp
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
@subsection Printing Services
diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm
index aa9f93997d..c0178135b0 100644
--- a/gnu/services/desktop.scm
+++ b/gnu/services/desktop.scm
@@ -1832,8 +1832,12 @@ applications needing access to be root.")
(service sddm-service-type))
;; Screen lockers are a pretty useful thing and these are small.
- (screen-locker-service slock)
- (screen-locker-service xlockmore "xlock")
+ (service screen-locker-service-type
+ (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
;; them.
diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm
index 5f073d05d3..c4745cecf5 100644
--- a/gnu/services/xorg.scm
+++ b/gnu/services/xorg.scm
@@ -107,10 +107,13 @@
slim-service-type
- screen-locker
- screen-locker?
+ screen-locker-configuration
+ screen-locker-configuration?
+ screen-locker-configuration-name
+ screen-locker-configuration-program
+ screen-locker-configuration-allow-empty-password?
screen-locker-service-type
- screen-locker-service
+ screen-locker-service ; deprecated
localed-configuration
localed-configuration?
@@ -683,21 +686,30 @@ reboot_cmd " shepherd "/sbin/reboot\n"
;;; Screen lockers & co.
;;;
-(define-record-type <screen-locker>
- (screen-locker name program empty?)
+(define-record-type <screen-locker-configuration>
+ (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?
- (name screen-locker-name) ;string
- (program screen-locker-program) ;gexp
- (empty? screen-locker-allows-empty-passwords?)) ;Boolean
+ screen-locker-configuration?)
(define screen-locker-pam-services
(match-lambda
- (($ <screen-locker> name _ empty?)
+ (($ <screen-locker-configuration> name _ empty?)
(list (unix-pam-service name
#:allow-empty-passwords? empty?)))))
(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
(service-type (name 'screen-locker)
@@ -711,10 +723,11 @@ reboot_cmd " shepherd "/sbin/reboot\n"
the graphical server by making it setuid-root, so it can authenticate users,
and by creating a PAM service for it.")))
-(define* (screen-locker-service package
- #:optional
- (program (package-name package))
- #:key allow-empty-passwords?)
+(define-deprecated (screen-locker-service package
+ #:optional
+ (program (package-name package))
+ #:key allow-empty-passwords?)
+ screen-locker-service-type
"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
for it. For example:
@@ -725,9 +738,9 @@ for it. For example:
makes the good ol' XlockMore usable."
(service screen-locker-service-type
- (screen-locker program
- (file-append package "/bin/" program)
- allow-empty-passwords?)))
+ (screen-locker-configuration program
+ (file-append package "/bin/" program)
+ allow-empty-passwords?)))
;;;