Subject: [PATCH 1/2] gnu: nautilus: Enable loading of third-party extensions.

From: Liliana Marie Prikler <[email-masked]>
Date: Sat, 11 Dec 2021 08:38:23 +0100

* gnu/packages/gnome.scm (nautilus)[#:phases]: Add phase to enable loading
through NAUTILUS_EXTENSIONS_PATH.
[native-search-paths]: Add NAUTILUS_EXTENSIONS_PATH.
---
 gnu/packages/gnome.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 87d9fec30c..a171ef83d2 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -8871,6 +8871,27 @@ (define-public nautilus
      '(#:glib-or-gtk? #t
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'make-extensible
+           (lambda _
+             (substitute* "src/nautilus-module.c"
+               (("static gboolean initialized = FALSE;" all)
+                (string-append all "
+const char *extension_path;
+char **extension_dirs, **d;
+")
+                )
+              (("load_module_dir \\(NAUTILUS_EXTENSIONDIR\\);" all)
+               (string-append all
+                              "
+extension_path = g_getenv (\"NAUTILUS_EXTENSION_PATH\");
+if (extension_path)
+{
+    extension_dirs = g_strsplit (extension_path, \":\", -1);
+    for (d = extension_dirs; d != NULL && *d != NULL; d++)
+        load_module_dir(*d);
+    g_strfreev(extension_dirs);
+}
+")))))
          (add-after 'unpack 'skip-gtk-update-icon-cache
            ;; Don't create 'icon-theme.cache'.
            (lambda _
@@ -8906,6 +8927,10 @@ (define-public nautilus
        ("gtk+" ,gtk+)
        ("libexif" ,libexif)
        ("libxml2" ,libxml2)))
+    (native-search-paths
+     (list (search-path-specification
+            (variable "NAUTILUS_EXTENSION_PATH")
+            (files '("lib/nautilus/site-extensions")))))
     (synopsis "File manager for GNOME")
     (home-page "https://wiki.gnome.org/Apps/Nautilus")
     (description
-- 
2.34.0