From faa8cdfc09d14d62e441f588bbcc883b1da9fab2 Mon Sep 17 00:00:00 2001 From: Sergey Trofimov Date: Fri, 23 May 2025 21:21:41 +0200 Subject: [PATCH] services: wpa-supplicant: Add 'wireless-daemon' provision. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/services/networking.scm (wpa-supplicant-configuration): [requirement]: Deprecate, [shepherd-requirement]: New field, [shepherd-provision]: Extract to a field. Add 'wireless-daemon to it. * doc/guix.texi (Networking Setup): Document it. Change-Id: Icc6fdd695e6e96ef168a085524989da639f77cd3 Signed-off-by: Ludovic Courtès --- doc/guix.texi | 5 +++- gnu/services/networking.scm | 52 ++++++++++++++++++++++++------------- 2 files changed, 38 insertions(+), 19 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 35d9f9c4303..405e11795fc 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -22383,9 +22383,12 @@ It takes the following parameters: @item @code{wpa-supplicant} (default: @code{wpa-supplicant}) The WPA Supplicant package to use. -@item @code{requirement} (default: @code{'(user-processes loopback syslogd)} +@item @code{shepherd-requirement} (default: @code{(user-processes loopback syslogd)} List of services that should be started before WPA Supplicant starts. +@item @code{shepherd-provision} (default: @code{(wpa-supplicant wireless-daemon)}) (type: list-of-symbols) +The name(s) of the service. + @item @code{dbus?} (default: @code{#t}) Whether to listen for requests on D-Bus. diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm index 40081bf60e4..4907dd5c043 100644 --- a/gnu/services/networking.scm +++ b/gnu/services/networking.scm @@ -227,6 +227,8 @@ wpa-supplicant-configuration? wpa-supplicant-configuration-wpa-supplicant wpa-supplicant-configuration-requirement + wpa-supplicant-configuration-shepherd-requirement + wpa-supplicant-configuration-shepherd-provision wpa-supplicant-configuration-pid-file wpa-supplicant-configuration-dbus? wpa-supplicant-configuration-interface @@ -2024,34 +2026,48 @@ whatever the thing is supposed to do)."))) ;;; WPA supplicant ;;; +(define-with-syntax-properties (warn-deprecated-wpa-supplicant-requirement + (value properties)) + (unless (unspecified? value) + (warning (source-properties->location properties) + (G_ "the 'requirement' field is deprecated, please use \ +'shepherd-requirement' field instead~%"))) + value) + (define-record-type* wpa-supplicant-configuration make-wpa-supplicant-configuration wpa-supplicant-configuration? - (wpa-supplicant wpa-supplicant-configuration-wpa-supplicant ;file-like - (default wpa-supplicant)) - (requirement wpa-supplicant-configuration-requirement ;list of symbols - (default '(user-processes loopback syslogd))) - (pid-file wpa-supplicant-configuration-pid-file ;string - (default "/var/run/wpa_supplicant.pid")) - (dbus? wpa-supplicant-configuration-dbus? ;Boolean - (default #t)) - (interface wpa-supplicant-configuration-interface ;#f | string - (default #f)) - (config-file wpa-supplicant-configuration-config-file ;#f | - (default #f)) - (extra-options wpa-supplicant-configuration-extra-options ;list of strings - (default '()))) + (wpa-supplicant wpa-supplicant-configuration-wpa-supplicant ;file-like + (default wpa-supplicant)) + (requirement wpa-supplicant-configuration-requirement ;list of symbols + (sanitize warn-deprecated-wpa-supplicant-requirement) + (default *unspecified*)) + (pid-file wpa-supplicant-configuration-pid-file ;string + (default "/var/run/wpa_supplicant.pid")) + (dbus? wpa-supplicant-configuration-dbus? ;Boolean + (default #t)) + (interface wpa-supplicant-configuration-interface ;#f | string + (default #f)) + (config-file wpa-supplicant-configuration-config-file ;#f | + (default #f)) + (extra-options wpa-supplicant-configuration-extra-options ;list of strings + (default '())) + (shepherd-provision wpa-supplicant-configuration-shepherd-provision ;list of symbols + (default '(wpa-supplicant wireless-daemon))) + (shepherd-requirement wpa-supplicant-configuration-shepherd-requirement ;list of symbols + (default '(user-processes loopback syslogd)))) (define (wpa-supplicant-shepherd-service config) (match-record config (wpa-supplicant requirement pid-file dbus? + shepherd-requirement shepherd-provision interface config-file extra-options) (list (shepherd-service (documentation "Run the WPA supplicant daemon") - (provision '(wpa-supplicant)) - (requirement (if dbus? - (cons 'dbus-system requirement) - requirement)) + (provision shepherd-provision) + (requirement `(,@(if dbus? '(dbus-system) '()) + ,@(or (if (unspecified? requirement) #f requirement) + shepherd-requirement))) (start #~(make-forkexec-constructor (list (string-append #$wpa-supplicant "/sbin/wpa_supplicant")