Subject: Re: bug#62496: For network-manager-applet's nm-connection-editor, libnma needs to be installed

From: Ludovic Courtès <[email-masked]>
Date: Wed, 29 Mar 2023 15:37:37 +0200

Hello,

"P. p. phalantha" <[email-masked]> skribis:

> Invoking nm-connection-editor from the command line and repeating these
> steps gave the informative error message:
>
> ```
> (nm-connection-editor:1751): GLib-GIO-ERROR **: 02:02:58.502: Settings
> schema 'org.gnome.nm-applet.eap' is not installed
> Trace/breakpoint trap
> ```
>
> I found a fix via the installation of libnma, thanks to a 2012 thread on
> LinuxQuestions.org:
> https://www.linuxquestions.org/questions/slackware-14/network-manager-applet-1-16-0-i586-1-package-is-missing-%27org-gnome-nm-applet%27-schema-4175670946/.
> After the installation of libnma I was able to successfully add the network.

I experienced this problem just today and your bug report was helpful!

Actually, both libnma and network-manager-applet provide the relevant
schema file, but they’re different:

--8<---------------cut here---------------start------------->8---
$ find $(guix build libnma) -name \*nm-applet\*
/gnu/store/hh0mq79nqhcwkpx7v68dibcv9lbha7sn-libnma-1.10.2/share/glib-2.0/schemas/org.gnome.nm-applet.gschema.xml
$ diff -u /gnu/store/9hl2p2xzlkkwibankp8604ngha880yn2-network-manager-applet-1.30.0/share/glib-2.0/schemas/org.gnome.nm-applet.gschema.xml /gnu/store/hh0mq79nqhcwkpx7v68dibcv9lbha7sn-libnma-1.10.2/share/glib-2.0/schemas/org.gnome.nm-applet.gschema.xml
--- /gnu/store/9hl2p2xzlkkwibankp8604ngha880yn2-network-manager-applet-1.30.0/share/glib-2.0/schemas/org.gnome.nm-applet.gschema.xml	1970-01-01 01:00:01.000000000 +0100
+++ /gnu/store/hh0mq79nqhcwkpx7v68dibcv9lbha7sn-libnma-1.10.2/share/glib-2.0/schemas/org.gnome.nm-applet.gschema.xml	1970-01-01 01:00:01.000000000 +0100
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <schemalist>
-  <schema id="org.gnome.nm-applet" path="/org/gnome/nm-applet/" gettext-domain="nm-applet">
+  <schema id="org.gnome.nm-applet" path="/org/gnome/nm-applet/" gettext-domain="libnma">
     <key name="disable-connected-notifications" type="b">
       <default>false</default>
       <summary>Disable connected notifications</summary>
@@ -37,4 +37,16 @@
       <description>Set to FALSE to disable displaying the applet in the notification area.</description>
     </key>
   </schema>
+  <schema id="org.gnome.nm-applet.eap">
+    <key name="ignore-ca-cert" type="b">
+      <default>false</default>
+      <summary>Ignore CA certificate</summary>
+      <description>Set this to true to disable warnings about CA certificates in EAP authentication.</description>
+    </key>
+    <key name="ignore-phase2-ca-cert" type="b">
+      <default>false</default>
+      <summary>Ignore CA certificate</summary>
+      <description>Set this to true to disable warnings about CA certificates in phase 2 of EAP authentication.</description>
+    </key>
+  </schema>
 </schemalist>
--8<---------------cut here---------------end--------------->8---

The one in libnma has the extra “.eap” thing.

The attached hack works, but it looks like something’s wrong, maybe
related to <https://issues.guix.gnu.org/62513>?

Ludo’.

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 0efb98b97c..aac847710d 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -8921,9 +8921,18 @@ (define-public network-manager-applet
                 "1lswxfxjfbiknspwli8d65i0bnyfazzcnrqckaw0s44zkm7bh5lm"))))
     (build-system meson-build-system)
     (arguments
-     `(#:glib-or-gtk? #t
-       #:configure-flags
-       '("-Dappindicator=yes")))
+     (list #:glib-or-gtk? #t
+           #:configure-flags #~'("-Dappindicator=yes")
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'install 'copy-gsettings-schema
+                 (lambda* (#:key inputs #:allow-other-keys)
+                   (define schema
+                     "share/glib-2.0/schemas/org.gnome.nm-applet.gschema.xml")
+
+                   (delete-file (string-append #$output "/" schema))
+                   (symlink (search-input-file inputs schema)
+                            (string-append #$output "/" schema)))))))
     (native-inputs
      (list gettext-minimal
            `(,glib "bin") ; for glib-compile-resources, etc.