diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 0d52058eb4..d550b204c3 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -9619,7 +9619,7 @@ (define-public tracker-miners
 (define-public nautilus
   (package
     (name "nautilus")
-    (version "42.2")
+    (version "44.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -9627,7 +9627,7 @@ (define-public nautilus
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1cncyiyh79w1id6a6s2f0rxmgwl65lp4ml4afa0z35jrnwp2s8cr"))
+                "1rfkh43iw4bqv36ccznl3lh9g0p9pa8xqyjk167qlvar4xchcji7"))
               (patches
                (search-patches "nautilus-extension-search-path.patch"))))
     (build-system meson-build-system)
@@ -9636,6 +9636,13 @@ (define-public nautilus
       #:glib-or-gtk? #t
       #:phases
       #~(modify-phases %standard-phases
+          (add-after 'unpack 'hardcode-tracker
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* "src/nautilus-tag-manager.c"
+                (("\"tracker3\"")
+                 (string-append "\""
+                                (search-input-file inputs "/bin/tracker3")
+                                "\"")))))
           (add-after 'unpack 'disable-tracker-tests
             ;; The tracker test hangs in the build container (see:
             ;; https://gitlab.gnome.org/GNOME/nautilus/-/issues/2486).
@@ -9646,8 +9653,9 @@ (define-public nautilus
           (add-after 'unpack 'skip-gtk-update-icon-cache
             ;; Don't create 'icon-theme.cache'.
             (lambda _
-              (substitute* "build-aux/meson/postinstall.py"
-                (("gtk-update-icon-cache") "true"))))
+              (substitute* "meson.build"
+                (("gtk_update_icon_cache: true")
+                 "gtk_update_icon_cache: false"))))
           (delete 'check)
           (add-after 'install 'check
             (assoc-ref %standard-phases 'check))
@@ -9674,18 +9682,18 @@ (define-public nautilus
            gnome-autoar
            gst-plugins-base
            json-glib
-           libhandy
+           libadwaita
            libportal
            libseccomp
            libselinux
            tracker
            tracker-miners
-           ;; XXX: gtk+ is required by libnautilus-extension.pc
+           ;; XXX: gtk is required by libnautilus-extension.pc
            ;;
-           ;; Don't propagate it to reduces "profile pollution" of the 'gnome' meta
+           ;; Don't propagate it to reduce "profile pollution" of the 'gnome' meta
            ;; package.  See:
            ;; <http://lists.gnu.org/archive/html/guix-devel/2016-03/msg00283.html>.
-           gtk+
+           gtk
            libexif
            libxml2))
     (native-search-paths
diff --git a/gnu/packages/patches/nautilus-extension-search-path.patch b/gnu/packages/patches/nautilus-extension-search-path.patch
index d5dc35b241..1394956315 100644
--- a/gnu/packages/patches/nautilus-extension-search-path.patch
+++ b/gnu/packages/patches/nautilus-extension-search-path.patch
@@ -1,54 +1,62 @@
 Allow Nautilus to search for extensions in the directories listed
 in $NAUTILUS_EXTENSION_PATH.
 
-diff --git a/src/nautilus-module.c b/src/nautilus-module.c
-index bf474bd..42e2a4e 100644
---- a/src/nautilus-module.c
-+++ b/src/nautilus-module.c
-@@ -211,6 +211,10 @@ static void
+Index: nautilus-44.2/src/nautilus-module.c
+===================================================================
+--- nautilus-44.2.orig/src/nautilus-module.c
++++ nautilus-44.2/src/nautilus-module.c
+@@ -220,8 +220,16 @@ static void
  load_module_dir (const char *dirname)
  {
      GDir *dir;
+-
 +    static GHashTable *loaded = NULL;
+     g_autoptr (GStrvBuilder) installed_module_name_builder = g_strv_builder_new ();
++
++    if (installed_module_names != NULL)
++        g_strv_builder_addv (installed_module_name_builder,
++                             (const gchar **)installed_module_names);
 +
 +    if (loaded == NULL)
 +      loaded = g_hash_table_new (g_str_hash, g_str_equal);
- 
++
      dir = g_dir_open (dirname, 0, NULL);
  
-@@ -221,15 +225,22 @@ load_module_dir (const char *dirname)
-         while ((name = g_dir_read_name (dir)))
+     if (dir)
+@@ -232,16 +240,24 @@ load_module_dir (const char *dirname)
          {
              if (g_str_has_suffix (name, "." G_MODULE_SUFFIX))
--            {
+             {
 -                char *filename;
 -
 -                filename = g_build_filename (dirname,
 -                                             name,
 -                                             NULL);
--                nautilus_module_load_file (filename);
+-                nautilus_module_load_file (filename, installed_module_name_builder);
 -                g_free (filename);
--            }
-+	      {
-+		/* Make sure each module is loaded only twice or this could
-+		   lead to a crash.  Double loading can occur if DIRNAME
-+		   occurs more than once in $NAUTILUS_EXTENSION_PATH.  */
-+		if (!g_hash_table_contains (loaded, name))
-+		  {
-+		    char *filename;
++                /* Make sure each module is loaded only twice or this could
++                   lead to a crash.  Double loading can occur if DIRNAME
++                   occurs more than once in $NAUTILUS_EXTENSION_PATH.  */
++                if (!g_hash_table_contains (loaded, name))
++                {
++                    char *filename;
 +
-+		    filename = g_build_filename (dirname,
-+						 name,
-+						 NULL);
-+		    nautilus_module_load_file (filename);
-+		    g_hash_table_add (loaded, g_strdup (name));
-+		    g_free (filename);
-+		  }
-+	      }
-         }
++                    filename = g_build_filename (dirname,
++                                                 name,
++                                                 NULL);
++                    nautilus_module_load_file (filename,
++                                               installed_module_name_builder);
++                    g_hash_table_add (loaded, g_strdup (name));
++                    g_free (filename);
++                }
+             }
+-        }
  
++        }
          g_dir_close (dir);
-@@ -257,10 +268,24 @@ nautilus_module_setup (void)
+     }
+ 
+@@ -278,10 +294,24 @@ nautilus_module_setup (void)
  
      if (!initialized)
      {
