summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruno Victal <mirai@makinata.eu>2023-02-25 18:57:54 +0000
committerLudovic Courtès <ludo@gnu.org>2023-03-03 17:55:32 +0100
commit2e7516168e7b27d1ad3cee60d337d2ad98fb09ff (patch)
tree0be6aabd2d329d3990ba83191f2d985bd942ffc6
parent6edacf249110ce9e59dc44f330d7f03ecd7c60d8 (diff)
services: base: Deprecate 'udev-service' procedure.
* doc/guix.texi (Base Services): Replace udev-service with udev-service-type. Document <udev-configuration>. Use @defun @-commands for udev-rules-service, udev-rule and file->udev-rule. * gnu/services/base.scm (udev-service): Deprecate procedure. * gnu/system/install.scm (%installation-services): Use udev-service-type. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
-rw-r--r--doc/guix.texi52
-rw-r--r--gnu/services/base.scm5
-rw-r--r--gnu/system/install.scm4
3 files changed, 39 insertions, 22 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index 7b4ecf9e81f..f4bfb8a24f0 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -18675,15 +18675,30 @@ A list of file-like objects or strings pointing to additional directories the bu
18675@end table 18675@end table
18676@end deftp 18676@end deftp
18677 18677
18678@deffn {Scheme Procedure} udev-service [#:udev @var{eudev} #:rules @code{'()}] 18678@defvar udev-service-type
18679Run @var{udev}, which populates the @file{/dev} directory dynamically. 18679Type of the service that runs udev, a service which populates the
18680udev rules can be provided as a list of files through the @var{rules} 18680@file{/dev} directory dynamically, whose value is a
18681variable. The procedures @code{udev-rule}, @code{udev-rules-service} 18681@code{<udev-configuration>} object.
18682and @code{file->udev-rule} from @code{(gnu services base)} simplify the 18682
18683creation of such rule files. 18683This service type can be @emph{extended} using procedures
18684@end deffn 18684@code{udev-rules-service} along with @code{file->udev-rule} or
18685@code{udev-rule} which simplify the process of writing udev rules.
18686@end defvar
18685 18687
18686@deffn {Scheme Procedure} udev-rule [@var{file-name} @var{contents}] 18688@deftp {Data Type} udev-configuration
18689Data type representing the configuration of udev.
18690
18691@table @asis
18692@item @code{udev} (default: @code{eudev}) (type: file-like)
18693Package object of the udev service.
18694
18695@item @code{rules} (default: @var{'()}) (type: list-of-file-like)
18696List of file-like objects denoting udev-rule files.
18697
18698@end table
18699@end deftp
18700
18701@defun udev-rule @var{file-name} @var{contents}
18687Return a udev-rule file named @var{file-name} containing the rules 18702Return a udev-rule file named @var{file-name} containing the rules
18688defined by the @var{contents} literal. 18703defined by the @var{contents} literal.
18689 18704
@@ -18699,18 +18714,17 @@ upon detecting a USB device with a given product identifier.
18699 "ATTR@{product@}==\"Example\", " 18714 "ATTR@{product@}==\"Example\", "
18700 "RUN+=\"/path/to/script\""))) 18715 "RUN+=\"/path/to/script\"")))
18701@end lisp 18716@end lisp
18702@end deffn 18717@end defun
18703 18718
18704@deffn {Scheme Procedure} udev-rules-service [@var{name} @var{rules}] @ 18719@defun udev-rules-service @var{name} @var{rules} [#:groups '()]
18705 [#:groups @var{groups}] 18720Return a service that extends @code{udev-service-type} with @var{rules}
18706Return a service that extends @code{udev-service-type } with @var{rules}
18707and @code{account-service-type} with @var{groups} as system groups. 18721and @code{account-service-type} with @var{groups} as system groups.
18708This works by creating a singleton service type 18722This works by creating a singleton service type
18709@code{@var{name}-udev-rules}, of which the returned service is an 18723@code{@var{name}-udev-rules}, of which the returned service is an
18710instance. 18724instance.
18711 18725
18712Here we show how it can be used to extend @code{udev-service-type} with the 18726Here we show how it can be used to extend @code{udev-service-type}
18713previously defined rule @code{%example-udev-rule}. 18727with the previously defined rule @code{%example-udev-rule}.
18714 18728
18715@lisp 18729@lisp
18716(operating-system 18730(operating-system
@@ -18719,11 +18733,11 @@ previously defined rule @code{%example-udev-rule}.
18719 (cons (udev-rules-service 'usb-thing %example-udev-rule) 18733 (cons (udev-rules-service 'usb-thing %example-udev-rule)
18720 %desktop-services))) 18734 %desktop-services)))
18721@end lisp 18735@end lisp
18722@end deffn 18736@end defun
18723 18737
18724@deffn {Scheme Procedure} file->udev-rule [@var{file-name} @var{file}] 18738@defun file->udev-rule @var{file-name} @var{file}
18725Return a udev file named @var{file-name} containing the rules defined 18739Return a udev-rule file named @var{file-name} containing the rules
18726within @var{file}, a file-like object. 18740defined within @var{file}, a file-like object.
18727 18741
18728The following example showcases how we can use an existing rule file. 18742The following example showcases how we can use an existing rule file.
18729 18743
@@ -18743,7 +18757,7 @@ The following example showcases how we can use an existing rule file.
18743 (sha256 18757 (sha256
18744 (base32 "0lmmagpyb6xsq6zcr2w1cyx9qmjqmajkvrdbhjx32gqf1d9is003")))))) 18758 (base32 "0lmmagpyb6xsq6zcr2w1cyx9qmjqmajkvrdbhjx32gqf1d9is003"))))))
18745@end lisp 18759@end lisp
18746@end deffn 18760@end defun
18747 18761
18748Additionally, Guix package definitions can be included in @var{rules} in 18762Additionally, Guix package definitions can be included in @var{rules} in
18749order to extend the udev rules with the definitions found under their 18763order to extend the udev rules with the definitions found under their
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 45e6c5f4484..b183cf58c10 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -150,7 +150,7 @@
150 udev-configuration? 150 udev-configuration?
151 udev-configuration-rules 151 udev-configuration-rules
152 udev-service-type 152 udev-service-type
153 udev-service 153 udev-service ; deprecated
154 udev-rule 154 udev-rule
155 file->udev-rule 155 file->udev-rule
156 udev-rules-service 156 udev-rules-service
@@ -2351,7 +2351,8 @@ item of @var{packages}."
2351directory dynamically. Get extra rules from the packages listed in the 2351directory dynamically. Get extra rules from the packages listed in the
2352@code{rules} field of its value, @code{udev-configuration} object."))) 2352@code{rules} field of its value, @code{udev-configuration} object.")))
2353 2353
2354(define* (udev-service #:key (udev eudev) (rules '())) 2354(define-deprecated (udev-service #:key (udev eudev) (rules '()))
2355 udev-service-type
2355 "Run @var{udev}, which populates the @file{/dev} directory dynamically. Get 2356 "Run @var{udev}, which populates the @file{/dev} directory dynamically. Get
2356extra rules from the packages listed in @var{rules}." 2357extra rules from the packages listed in @var{rules}."
2357 (service udev-service-type 2358 (service udev-service-type
diff --git a/gnu/system/install.scm b/gnu/system/install.scm
index 8c7752df0e1..dd965f312b7 100644
--- a/gnu/system/install.scm
+++ b/gnu/system/install.scm
@@ -388,7 +388,9 @@ Access documentation at any time by pressing Alt-F2.\x1b[0m
388 ;; Start udev so that useful device nodes are available. 388 ;; Start udev so that useful device nodes are available.
389 ;; Use device-mapper rules for cryptsetup & co; enable the CRDA for 389 ;; Use device-mapper rules for cryptsetup & co; enable the CRDA for
390 ;; regulations-compliant WiFi access. 390 ;; regulations-compliant WiFi access.
391 (udev-service #:rules (list lvm2 crda)) 391 (service udev-service-type
392 (udev-configuration
393 (rules (list lvm2 crda))))
392 394
393 ;; Add the 'cow-store' service, which users have to start manually 395 ;; Add the 'cow-store' service, which users have to start manually
394 ;; since it takes the installation directory as an argument. 396 ;; since it takes the installation directory as an argument.