From a1e87abaa364f8391cfd1f49bb01876f7a730bfb Mon Sep 17 00:00:00 2001 From: 45mg <45mg.writes@gmail.com> Date: Sun, 2 Mar 2025 23:59:49 +0530 Subject: [PATCH] services: network-manager: Handle existing configuration directory. * gnu/services/networking.scm (network-manager-activation): Handle the case where /etc/NetworkManager/conf.d already exists. Change-Id: I7af4f4ad226eef28bd8667f0708525e77a6a50c8 Signed-off-by: Vagrant Cascadian --- gnu/services/networking.scm | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm index 85ad5287f26..67653e2cbf5 100644 --- a/gnu/services/networking.scm +++ b/gnu/services/networking.scm @@ -1432,7 +1432,18 @@ project's documentation} for more information." '((mkdir-p "/var/lib/misc")) '()) #$@(if (pair? extra-configuration-files) ;if non-empty - `((symlink + ;; If /etc/NetworkManager/conf.d is a symlink to a store file, + ;; delete it. + `((if (and (file-exists? "/etc/NetworkManager/conf.d") + (store-file-name? + (canonicalize-path "/etc/NetworkManager/conf.d"))) + (delete-file-recursively + "/etc/NetworkManager/conf.d")) + ;; If it exists but is not a symlink to a store file, then + ;; this will fail with EEXIST; we leave this for the user to + ;; handle, since they probably created the directory + ;; themselves. + (symlink ,(file-union "network-manager-configuration-directory" extra-configuration-files) "/etc/NetworkManager/conf.d"))