mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 21:38:07 -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
|
;; TODO: iwd? is deprecated and should be passed
|
||||||
;; with shepherd-requirement, remove later.
|
;; with shepherd-requirement, remove later.
|
||||||
,@(if iwd? '(iwd) '())))
|
,@(if iwd? '(iwd) '())))
|
||||||
(start #~(make-forkexec-constructor
|
(start
|
||||||
(list (string-append #$network-manager
|
#~(lambda _
|
||||||
"/sbin/NetworkManager")
|
(let ((pid
|
||||||
(string-append "--config=" #$conf)
|
(fork+exec-command
|
||||||
"--no-daemon")
|
(list #$(file-append network-manager
|
||||||
#:environment-variables
|
"/sbin/NetworkManager")
|
||||||
(list (string-append "NM_VPN_PLUGIN_DIR=" #$vpn
|
(string-append "--config=" #$conf)
|
||||||
"/lib/NetworkManager/VPN")
|
"--no-daemon")
|
||||||
;; Override non-existent default users
|
#:environment-variables
|
||||||
"NM_OPENVPN_USER="
|
(list (string-append "NM_VPN_PLUGIN_DIR=" #$vpn
|
||||||
"NM_OPENVPN_GROUP=")))
|
"/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)))))))
|
(stop #~(make-kill-destructor)))))))
|
||||||
|
|
||||||
(define network-manager-service-type
|
(define network-manager-service-type
|
||||||
|
|
Loading…
Reference in a new issue