diff options
author | Sergey Trofimov <sarg@sarg.org.ru> | 2025-05-22 08:03:16 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2025-06-05 22:42:13 +0200 |
commit | 2ec1469104cf52ad0e91ad164a9f5a3a80fb9743 (patch) | |
tree | e29bffa0161d98c3cc1a99b0e1a8e6dc5cc257fb | |
parent | 38756ac03de9c2c70935c2d32a8398117c687ca2 (diff) |
services: networking: Add shepherd-requirement for dhcpcd.
* gnu/services/networking.scm (dhcpcd-configuration): Add
shepherd-requirement field.
(dhcpcd-shepherd-service): Use it.
* doc/guix.texi (Networking Setup): Regenerate dhcpcd-configuration
documentation.
(File Systems): Fix typo.
Change-Id: Id347e2bed2569237685a47be82dbf686640db25b
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
-rw-r--r-- | doc/guix.texi | 17 | ||||
-rw-r--r-- | gnu/services/networking.scm | 31 |
2 files changed, 30 insertions, 18 deletions
diff --git a/doc/guix.texi b/doc/guix.texi index 5fefba3634..35d9f9c430 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -18332,7 +18332,7 @@ As an example, an NFS file system would typically have a requirement for might not be sufficient as @code{networking} being marked as started does @emph{not} imply the network has already been configured and in working order (for example, when using -@code{dhcpcd-client-service-type}). For such cases, adding a +@code{dhcp-client-service-type}). For such cases, adding a requirement on a custom @code{network-online} service may be necessary. A sample @code{network-online} one-shot Shepherd service implementation is provided below: @@ -21980,12 +21980,13 @@ Host name to send via DHCP, defaults to the current system host name. @item @code{duid} (default: @code{""}) (type: maybe-string) DHCPv4 clients require a unique client identifier, this option uses the DHCPv6 Unique Identifier as a DHCPv4 client identifier as well. For -more information, refer to @uref{https://www.rfc-editor.org/rfc/rfc4361, RFC 4361} -and @code{dhcpcd.conf(5)}. +more information, refer to +@uref{https://www.rfc-editor.org/rfc/rfc4361,RFC 4361} and +@code{dhcpcd.conf(5)}. @item @code{persistent?} (default: @code{#t}) (type: boolean) -When true, automatically de-configure the interface when @command{dhcpcd} -exits. +When true, automatically de-configure the interface when +@command{dhcpcd} exits. @item @code{option} (default: @code{("rapid_commit" "domain_name_servers" "domain_name" "domain_search" "host_name" "classless_static_routes" "interface_mtu")}) (type: list-of-strings) List of options to request from the server. @@ -22019,9 +22020,13 @@ identifier, this is matually exclusive with the @code{duid} option. @item @code{extra-content} (type: maybe-string) Extra content to append to the configuration as-is. +@item @code{shepherd-requirement} (default: @code{()}) (type: list-of-symbols) +This is a list of symbols naming Shepherd services that this service +will depend on. + @end table -@end deftp +@end deftp @cindex NetworkManager diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm index 8b7bf66892..40081bf60e 100644 --- a/gnu/services/networking.scm +++ b/gnu/services/networking.scm @@ -127,6 +127,7 @@ dhcpcd-configuration-vendor-class-id dhcpcd-configuration-client-id dhcpcd-configuration-extra-content + dhcpcd-configuration-shepherd-requirement ntp-configuration ntp-configuration? @@ -611,6 +612,12 @@ this is matually exclusive with the @code{duid} option.") maybe-string "Extra content to append to the configuration as-is.") + (shepherd-requirement + (list-of-symbols '()) + "This is a list of symbols naming Shepherd services that this service +will depend on." + empty-serializer) + (prefix dhcpcd-)) (define (dhcpcd-config-file config) @@ -630,19 +637,19 @@ this is matually exclusive with the @code{duid} option.") (shell (file-append shadow "/sbin/nologin"))))) (define (dhcpcd-shepherd-service config) - (let* ((config-file (dhcpcd-config-file config)) - (command-args (dhcpcd-configuration-command-arguments config)) - (ifaces (dhcpcd-configuration-interfaces config))) - (list (shepherd-service - (documentation "dhcpcd daemon.") - (provision '(networking)) - (requirement '(user-processes udev)) - (actions (list (shepherd-configuration-action config-file))) - (start + (match-record config <dhcpcd-configuration> + (command-arguments interfaces shepherd-requirement) + (let ((config-file (dhcpcd-config-file config))) + (list (shepherd-service + (documentation "dhcpcd daemon.") + (provision '(networking)) + (requirement `(user-processes udev ,@shepherd-requirement)) + (actions (list (shepherd-configuration-action config-file))) + (start #~(make-forkexec-constructor - (list (string-append #$dhcpcd "/sbin/dhcpcd") - #$@command-args "-B" "-f" #$config-file #$@ifaces))) - (stop #~(make-kill-destructor)))))) + (list (string-append #$dhcpcd "/sbin/dhcpcd") + #$@command-arguments "-B" "-f" #$config-file #$@interfaces))) + (stop #~(make-kill-destructor))))))) (define dhcpcd-service-type (service-type (name 'dhcpcd) |