diff options
| author | Bruno Victal <mirai@makinata.eu> | 2023-02-25 18:57:54 +0000 |
|---|---|---|
| committer | Ludovic Courtès <ludo@gnu.org> | 2023-03-03 17:55:32 +0100 |
| commit | 2e7516168e7b27d1ad3cee60d337d2ad98fb09ff (patch) | |
| tree | 0be6aabd2d329d3990ba83191f2d985bd942ffc6 | |
| parent | 6edacf249110ce9e59dc44f330d7f03ecd7c60d8 (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.texi | 52 | ||||
| -rw-r--r-- | gnu/services/base.scm | 5 | ||||
| -rw-r--r-- | gnu/system/install.scm | 4 |
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 |
| 18679 | Run @var{udev}, which populates the @file{/dev} directory dynamically. | 18679 | Type of the service that runs udev, a service which populates the |
| 18680 | udev rules can be provided as a list of files through the @var{rules} | 18680 | @file{/dev} directory dynamically, whose value is a |
| 18681 | variable. The procedures @code{udev-rule}, @code{udev-rules-service} | 18681 | @code{<udev-configuration>} object. |
| 18682 | and @code{file->udev-rule} from @code{(gnu services base)} simplify the | 18682 | |
| 18683 | creation of such rule files. | 18683 | This 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 |
| 18689 | Data type representing the configuration of udev. | ||
| 18690 | |||
| 18691 | @table @asis | ||
| 18692 | @item @code{udev} (default: @code{eudev}) (type: file-like) | ||
| 18693 | Package object of the udev service. | ||
| 18694 | |||
| 18695 | @item @code{rules} (default: @var{'()}) (type: list-of-file-like) | ||
| 18696 | List 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} | ||
| 18687 | Return a udev-rule file named @var{file-name} containing the rules | 18702 | Return a udev-rule file named @var{file-name} containing the rules |
| 18688 | defined by the @var{contents} literal. | 18703 | defined 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}] | 18720 | Return a service that extends @code{udev-service-type} with @var{rules} |
| 18706 | Return a service that extends @code{udev-service-type } with @var{rules} | ||
| 18707 | and @code{account-service-type} with @var{groups} as system groups. | 18721 | and @code{account-service-type} with @var{groups} as system groups. |
| 18708 | This works by creating a singleton service type | 18722 | This 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 |
| 18710 | instance. | 18724 | instance. |
| 18711 | 18725 | ||
| 18712 | Here we show how it can be used to extend @code{udev-service-type} with the | 18726 | Here we show how it can be used to extend @code{udev-service-type} |
| 18713 | previously defined rule @code{%example-udev-rule}. | 18727 | with 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} |
| 18725 | Return a udev file named @var{file-name} containing the rules defined | 18739 | Return a udev-rule file named @var{file-name} containing the rules |
| 18726 | within @var{file}, a file-like object. | 18740 | defined within @var{file}, a file-like object. |
| 18727 | 18741 | ||
| 18728 | The following example showcases how we can use an existing rule file. | 18742 | The 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 | ||
| 18748 | Additionally, Guix package definitions can be included in @var{rules} in | 18762 | Additionally, Guix package definitions can be included in @var{rules} in |
| 18749 | order to extend the udev rules with the definitions found under their | 18763 | order 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}." | |||
| 2351 | directory dynamically. Get extra rules from the packages listed in the | 2351 | directory 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 |
| 2356 | extra rules from the packages listed in @var{rules}." | 2357 | extra 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. |
