mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 13:28:12 -05:00
services: network-manager: Await for NetworkManager to finish starting up.
This is similar to its NetworkManager-wait-online.service systemd counterpart, with the main difference being that we handle it all in 'networking symbol, rather than introduce a new 'networking-online symbol. (see discussion #47253) As a result of this change, with opensmtpd-service-type as an example, manual 'herd restart smtpd' after system bootups are no longer required when opensmtpd is configured with a smtpd.conf containing non-loopback interfaces. (this issue is described in more detail at #60300) Fixes <https://issues.guix.gnu.org/60300>. * gnu/services/networking.scm (network-manager-shepherd-service): Await for NetworkManager to finish starting up. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
parent
17c80118fa
commit
d04955972e
1 changed files with 24 additions and 11 deletions
|
@ -1235,17 +1235,30 @@ (define (network-manager-shepherd-service config)
|
|||
;; TODO: iwd? is deprecated and should be passed
|
||||
;; with shepherd-requirement, remove later.
|
||||
,@(if iwd? '(iwd) '())))
|
||||
(start #~(make-forkexec-constructor
|
||||
(list (string-append #$network-manager
|
||||
"/sbin/NetworkManager")
|
||||
(string-append "--config=" #$conf)
|
||||
"--no-daemon")
|
||||
#:environment-variables
|
||||
(list (string-append "NM_VPN_PLUGIN_DIR=" #$vpn
|
||||
"/lib/NetworkManager/VPN")
|
||||
;; Override non-existent default users
|
||||
"NM_OPENVPN_USER="
|
||||
"NM_OPENVPN_GROUP=")))
|
||||
(start
|
||||
#~(lambda _
|
||||
(let ((pid
|
||||
(fork+exec-command
|
||||
(list #$(file-append network-manager
|
||||
"/sbin/NetworkManager")
|
||||
(string-append "--config=" #$conf)
|
||||
"--no-daemon")
|
||||
#:environment-variables
|
||||
(list (string-append "NM_VPN_PLUGIN_DIR=" #$vpn
|
||||
"/lib/NetworkManager/VPN")
|
||||
;; Override non-existent default users
|
||||
"NM_OPENVPN_USER="
|
||||
"NM_OPENVPN_GROUP="))))
|
||||
;; XXX: Despite the "online" name, this doesn't guarantee
|
||||
;; WAN connectivity, it merely waits for NetworkManager
|
||||
;; to finish starting-up. This is required otherwise
|
||||
;; services will fail since the network interfaces be
|
||||
;; absent until NetworkManager finishes setting them up.
|
||||
(system* #$(file-append network-manager "/bin/nm-online")
|
||||
"--wait-for-startup" "--quiet")
|
||||
;; XXX: Finally, return the pid from running
|
||||
;; fork+exec-command to shepherd.
|
||||
pid)))
|
||||
(stop #~(make-kill-destructor)))))))
|
||||
|
||||
(define network-manager-service-type
|
||||
|
|
Loading…
Reference in a new issue