diff options
Diffstat (limited to 'pkgs/tools/networking/network-manager')
-rw-r--r-- | pkgs/tools/networking/network-manager/libnma/default.nix | 89 | ||||
-rw-r--r-- | pkgs/tools/networking/network-manager/libnma/hardcode-gsettings.patch | 26 |
2 files changed, 115 insertions, 0 deletions
diff --git a/pkgs/tools/networking/network-manager/libnma/default.nix b/pkgs/tools/networking/network-manager/libnma/default.nix new file mode 100644 index 000000000000..727c18e92c10 --- /dev/null +++ b/pkgs/tools/networking/network-manager/libnma/default.nix @@ -0,0 +1,89 @@ +{ stdenv +, fetchurl +, meson +, ninja +, gettext +, gtk-doc +, pkg-config +, vala +, networkmanager +, gnome3 +, isocodes +, libxml2 +, docbook_xsl +, docbook_xml_dtd_43 +, mobile-broadband-provider-info +, gobject-introspection +, gtk3 +, withGnome ? true +, gcr +, glib +, substituteAll +}: + +stdenv.mkDerivation rec { + pname = "libnma"; + version = "1.8.28"; + + outputs = [ "out" "dev" "devdoc" ]; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "09mp6k0hfam1vyyv9kcd8j4gb2r58i05ipx2nswb58ris599bxja"; + }; + + patches = [ + # Needed for wingpanel-indicator-network and switchboard-plug-network + ./hardcode-gsettings.patch + ]; + + nativeBuildInputs = [ + meson + ninja + gettext + pkg-config + gobject-introspection + gtk-doc + docbook_xsl + docbook_xml_dtd_43 + libxml2 + vala + ]; + + buildInputs = [ + gtk3 + networkmanager + isocodes + mobile-broadband-provider-info + ] ++ stdenv.lib.optionals withGnome [ + # advanced certificate chooser + gcr + ]; + + mesonFlags = [ + "-Dgcr=${if withGnome then "true" else "false"}" + ]; + + postPatch = '' + substituteInPlace src/nma-ws/nma-eap.c --subst-var-by \ + NM_APPLET_GSETTINGS ${glib.makeSchemaPath "$out" "${pname}-${version}"} + ''; + + postInstall = '' + glib-compile-schemas $out/share/glib-2.0/schemas + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://gitlab.gnome.org/GNOME/libnma"; + description = "NetworkManager UI utilities (libnm version)"; + license = licenses.gpl2Plus; # Mix of GPL and LPGL 2+ + maintainers = teams.gnome.members; + platforms = platforms.linux; + }; +} diff --git a/pkgs/tools/networking/network-manager/libnma/hardcode-gsettings.patch b/pkgs/tools/networking/network-manager/libnma/hardcode-gsettings.patch new file mode 100644 index 000000000000..9b2f5366950c --- /dev/null +++ b/pkgs/tools/networking/network-manager/libnma/hardcode-gsettings.patch @@ -0,0 +1,26 @@ +--- a/src/nma-ws/nma-eap.c ++++ b/src/nma-ws/nma-eap.c +@@ -248,11 +248,16 @@ nma_eap_ca_cert_ignore_get (NMAEap *method, NMConnection *connection) + static GSettings * + _get_ca_ignore_settings (NMConnection *connection) + { ++ g_autoptr (GSettingsSchemaSource) *schema_source; ++ g_autoptr (GSettingsSchema) *schema; + GSettings *settings; + char *path = NULL; + const char *uuid; + + g_return_val_if_fail (connection, NULL); + ++ schema_source = g_settings_schema_source_new_from_directory ("@NM_APPLET_GSETTINGS@", g_settings_schema_source_get_default (), TRUE, NULL); ++ schema = g_settings_schema_source_lookup (schema_source, "org.gnome.nm-applet.eap", FALSE); ++ + uuid = nm_connection_get_uuid (connection); + g_return_val_if_fail (uuid && *uuid, NULL); + + path = g_strdup_printf ("/org/gnome/nm-applet/eap/%s/", uuid); +- settings = g_settings_new_with_path ("org.gnome.nm-applet.eap", path); ++ settings = g_settings_new_full (schema, NULL, path); + g_free (path); + + return settings; |