Subject: [bug#61154] [PATCH] gnu: wpa-supplicant: Patch dbus policy.

From: Sergey Trofimov <[email-masked]>
Date: Sun, 29 Jan 2023 21:06:31 +0100

This patch allows users in netdev group to control wpa-supplicant
via D-Bus interface.
---
 gnu/packages/admin.scm                        |  3 +++
 .../wpa-supplicant-dbus-group-policy.patch    | 23 +++++++++++++++++++
 2 files changed, 26 insertions(+)
 create mode 100644 gnu/packages/patches/wpa-supplicant-dbus-group-policy.patch

diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 5cea17d562..b3383b4d86 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -2221,6 +2221,9 @@ (define-public wpa-supplicant
     (name "wpa-supplicant")
     (inputs (modify-inputs (package-inputs wpa-supplicant-minimal)
               (prepend dbus)))
+    (source (origin
+              (inherit (package-source wpa-supplicant-minimal))
+              (patches (search-patches "wpa-supplicant-dbus-group-policy.patch"))))
     (arguments
      (substitute-keyword-arguments (package-arguments wpa-supplicant-minimal)
        ((#:phases phases)
diff --git a/gnu/packages/patches/wpa-supplicant-dbus-group-policy.patch b/gnu/packages/patches/wpa-supplicant-dbus-group-policy.patch
new file mode 100644
index 0000000000..95c18dac18
--- /dev/null
+++ b/gnu/packages/patches/wpa-supplicant-dbus-group-policy.patch
@@ -0,0 +1,23 @@
+Borrowed from debian, allows users in netdev group to control wpa-supplicant
+via D-Bus.
+
+Description: Debian does not use pam_console but uses group membership
+ to control access to D-Bus. Activating both options in the conf file
+ makes it work on Debian and Ubuntu.
+Author: Michael Biebl <[email-masked]>
+Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=15;bug=412179
+---
+--- a/wpa_supplicant/dbus/dbus-wpa_supplicant.conf
++++ b/wpa_supplicant/dbus/dbus-wpa_supplicant.conf
+@@ -14,6 +14,11 @@
+                 <allow send_interface="fi.w1.wpa_supplicant1"/>
+                 <allow receive_sender="fi.w1.wpa_supplicant1" receive_type="signal"/>
+         </policy>
++        <policy group="netdev">
++                <allow send_destination="fi.w1.wpa_supplicant1"/>
++                <allow send_interface="fi.w1.wpa_supplicant1"/>
++                <allow receive_sender="fi.w1.wpa_supplicant1" receive_type="signal"/>
++        </policy>
+         <policy context="default">
+                 <deny own="fi.epitest.hostap.WPASupplicant"/>
+                 <deny send_destination="fi.epitest.hostap.WPASupplicant"/>
-- 
2.39.1