summary refs log tree commit diff
diff options
context:
space:
mode:
authorVladimír Čunát <v@cunat.cz>2022-10-13 08:14:27 +0200
committerVladimír Čunát <v@cunat.cz>2022-10-13 08:14:27 +0200
commit7a94322ed7898db6d9b308b76a6bb4a0c6f99c38 (patch)
tree305dd6e05f626d10b34e38c4fda3d4f61f5e06e7
parentd618530963a0e1d112c2584e2fc1ae9743cf7b08 (diff)
parent81e445e508f49daabe7fc60f302207eb4555b9d8 (diff)
downloadnixpkgs-7a94322ed7898db6d9b308b76a6bb4a0c6f99c38.tar
nixpkgs-7a94322ed7898db6d9b308b76a6bb4a0c6f99c38.tar.gz
nixpkgs-7a94322ed7898db6d9b308b76a6bb4a0c6f99c38.tar.bz2
nixpkgs-7a94322ed7898db6d9b308b76a6bb4a0c6f99c38.tar.lz
nixpkgs-7a94322ed7898db6d9b308b76a6bb4a0c6f99c38.tar.xz
nixpkgs-7a94322ed7898db6d9b308b76a6bb4a0c6f99c38.tar.zst
nixpkgs-7a94322ed7898db6d9b308b76a6bb4a0c6f99c38.zip
Merge #182618: GNOME 42 → 43
-rw-r--r--nixos/doc/manual/from_md/release-notes/rl-2211.section.xml7
-rw-r--r--nixos/doc/manual/release-notes/rl-2211.section.md3
-rw-r--r--nixos/modules/module-list.nix2
-rw-r--r--nixos/modules/services/desktops/gnome/chrome-gnome-shell.nix41
-rw-r--r--nixos/modules/services/desktops/gnome/gnome-browser-connector.nix47
-rw-r--r--nixos/modules/services/x11/desktop-managers/gnome.nix4
-rw-r--r--nixos/modules/services/x11/desktop-managers/pantheon.nix2
-rw-r--r--nixos/tests/installed-tests/default.nix1
-rw-r--r--nixos/tests/installed-tests/librsvg.nix9
-rw-r--r--pkgs/applications/editors/gnome-builder/default.nix79
-rw-r--r--pkgs/applications/editors/gnome-builder/fix-finding-test-typelibs.patch13
-rw-r--r--pkgs/applications/editors/gnome-latex/default.nix8
-rw-r--r--pkgs/applications/graphics/gnome-photos/default.nix21
-rw-r--r--pkgs/applications/graphics/shotwell/default.nix14
-rw-r--r--pkgs/applications/misc/almanah/default.nix26
-rw-r--r--pkgs/applications/misc/endeavour/default.nix (renamed from pkgs/desktops/gnome/apps/gnome-todo/default.nix)50
-rw-r--r--pkgs/applications/misc/orca/default.nix4
-rw-r--r--pkgs/applications/misc/tootle/default.nix1
-rw-r--r--pkgs/applications/networking/browsers/firefox/wrapper.nix4
-rw-r--r--pkgs/applications/networking/dropbox/cli.nix6
-rw-r--r--pkgs/applications/networking/dropbox/nautilus-43.patch195
-rw-r--r--pkgs/applications/networking/instant-messengers/chatty/default.nix2
-rw-r--r--pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix6
-rw-r--r--pkgs/applications/networking/mailreaders/evolution/evolution-ews/default.nix45
-rw-r--r--pkgs/applications/networking/mailreaders/evolution/evolution/default.nix19
-rw-r--r--pkgs/applications/networking/remote/remmina/default.nix7
-rw-r--r--pkgs/applications/office/elementary-planner/default.nix1
-rw-r--r--pkgs/applications/office/gnumeric/default.nix4
-rw-r--r--pkgs/applications/terminal-emulators/blackbox-terminal/default.nix72
-rw-r--r--pkgs/applications/terminal-emulators/blackbox-terminal/marble.nix45
-rw-r--r--pkgs/applications/terminal-emulators/gnome-console/default.nix5
-rw-r--r--pkgs/applications/video/entangle/default.nix4
-rw-r--r--pkgs/applications/video/video-trimmer/default.nix1
-rw-r--r--pkgs/applications/virtualization/virt-viewer/default.nix9
-rw-r--r--pkgs/data/documentation/gnome-user-docs/default.nix4
-rw-r--r--pkgs/desktops/gnome/apps/cheese/default.nix4
-rw-r--r--pkgs/desktops/gnome/apps/file-roller/default.nix20
-rw-r--r--pkgs/desktops/gnome/apps/gedit/default.nix4
-rw-r--r--pkgs/desktops/gnome/apps/ghex/default.nix9
-rw-r--r--pkgs/desktops/gnome/apps/gnome-boxes/default.nix31
-rw-r--r--pkgs/desktops/gnome/apps/gnome-calendar/default.nix16
-rw-r--r--pkgs/desktops/gnome/apps/gnome-characters/default.nix8
-rw-r--r--pkgs/desktops/gnome/apps/gnome-clocks/default.nix16
-rw-r--r--pkgs/desktops/gnome/apps/gnome-connections/default.nix8
-rw-r--r--pkgs/desktops/gnome/apps/gnome-logs/default.nix45
-rw-r--r--pkgs/desktops/gnome/apps/gnome-maps/default.nix59
-rw-r--r--pkgs/desktops/gnome/apps/gnome-power-manager/default.nix33
-rw-r--r--pkgs/desktops/gnome/apps/gnome-sound-recorder/default.nix4
-rw-r--r--pkgs/desktops/gnome/apps/gnome-text-editor/default.nix6
-rw-r--r--pkgs/desktops/gnome/apps/gnome-weather/default.nix4
-rw-r--r--pkgs/desktops/gnome/apps/polari/default.nix12
-rw-r--r--pkgs/desktops/gnome/core/adwaita-icon-theme/default.nix44
-rw-r--r--pkgs/desktops/gnome/core/baobab/default.nix4
-rw-r--r--pkgs/desktops/gnome/core/dconf-editor/default.nix14
-rw-r--r--pkgs/desktops/gnome/core/eog/default.nix4
-rw-r--r--pkgs/desktops/gnome/core/epiphany/default.nix21
-rw-r--r--pkgs/desktops/gnome/core/evince/default.nix11
-rw-r--r--pkgs/desktops/gnome/core/evolution-data-server/default.nix42
-rw-r--r--pkgs/desktops/gnome/core/evolution-data-server/hardcode-gsettings.cocci1
-rw-r--r--pkgs/desktops/gnome/core/evolution-data-server/hardcode-gsettings.patch146
-rw-r--r--pkgs/desktops/gnome/core/gdm/default.nix7
-rw-r--r--pkgs/desktops/gnome/core/gnome-backgrounds/default.nix4
-rw-r--r--pkgs/desktops/gnome/core/gnome-bluetooth/default.nix8
-rw-r--r--pkgs/desktops/gnome/core/gnome-calculator/default.nix12
-rw-r--r--pkgs/desktops/gnome/core/gnome-contacts/default.nix21
-rw-r--r--pkgs/desktops/gnome/core/gnome-control-center/default.nix15
-rw-r--r--pkgs/desktops/gnome/core/gnome-control-center/paths.patch13
-rw-r--r--pkgs/desktops/gnome/core/gnome-disk-utility/default.nix13
-rw-r--r--pkgs/desktops/gnome/core/gnome-font-viewer/default.nix6
-rw-r--r--pkgs/desktops/gnome/core/gnome-initial-setup/default.nix36
-rw-r--r--pkgs/desktops/gnome/core/gnome-remote-desktop/default.nix16
-rw-r--r--pkgs/desktops/gnome/core/gnome-session/default.nix6
-rw-r--r--pkgs/desktops/gnome/core/gnome-settings-daemon/default.nix14
-rw-r--r--pkgs/desktops/gnome/core/gnome-shell-extensions/default.nix4
-rw-r--r--pkgs/desktops/gnome/core/gnome-shell/default.nix14
-rw-r--r--pkgs/desktops/gnome/core/gnome-software/default.nix21
-rw-r--r--pkgs/desktops/gnome/core/gnome-terminal/default.nix37
-rw-r--r--pkgs/desktops/gnome/core/gnome-tour/default.nix4
-rw-r--r--pkgs/desktops/gnome/core/gnome-user-share/default.nix41
-rw-r--r--pkgs/desktops/gnome/core/mutter/3.38/default.nix20
-rw-r--r--pkgs/desktops/gnome/core/mutter/default.nix49
-rw-r--r--pkgs/desktops/gnome/core/mutter/fix-paths.patch13
-rw-r--r--pkgs/desktops/gnome/core/nautilus/default.nix45
-rw-r--r--pkgs/desktops/gnome/core/nautilus/extension_dir.patch10
-rw-r--r--pkgs/desktops/gnome/core/rygel/add-option-for-installation-sysconfdir.patch6
-rw-r--r--pkgs/desktops/gnome/core/rygel/default.nix16
-rw-r--r--pkgs/desktops/gnome/core/simple-scan/default.nix4
-rw-r--r--pkgs/desktops/gnome/core/sushi/default.nix8
-rw-r--r--pkgs/desktops/gnome/core/totem/default.nix34
-rw-r--r--pkgs/desktops/gnome/core/yelp-xsl/default.nix4
-rw-r--r--pkgs/desktops/gnome/core/yelp/default.nix12
-rw-r--r--pkgs/desktops/gnome/default.nix3
-rw-r--r--pkgs/desktops/gnome/devtools/devhelp/default.nix31
-rw-r--r--pkgs/desktops/gnome/extensions/chrome-gnome-shell/default.nix71
-rw-r--r--pkgs/desktops/gnome/extensions/dash-to-dock/default.nix4
-rw-r--r--pkgs/desktops/gnome/extensions/gnome-browser-connector/default.nix66
-rw-r--r--pkgs/desktops/gnome/extensions/gsconnect/default.nix13
-rw-r--r--pkgs/desktops/gnome/games/gnome-chess/default.nix13
-rw-r--r--pkgs/desktops/gnome/games/gnome-sudoku/default.nix51
-rw-r--r--pkgs/desktops/gnome/misc/geary/default.nix31
-rw-r--r--pkgs/desktops/gnome/misc/gnome-applets/default.nix4
-rw-r--r--pkgs/desktops/gnome/misc/gnome-flashback/default.nix8
-rw-r--r--pkgs/desktops/gnome/misc/gnome-panel/default.nix16
-rw-r--r--pkgs/desktops/gnome/misc/gpaste/default.nix20
-rw-r--r--pkgs/desktops/gnome/misc/metacity/default.nix4
-rw-r--r--pkgs/desktops/gnome/misc/nautilus-python/default.nix36
-rw-r--r--pkgs/desktops/lxqt/lxqt-build-tools/default.nix6
-rw-r--r--pkgs/desktops/pantheon/apps/elementary-calendar/default.nix22
-rw-r--r--pkgs/desktops/pantheon/apps/elementary-calendar/partly-revert-pr-301.patch57
-rw-r--r--pkgs/desktops/pantheon/apps/elementary-mail/default.nix24
-rw-r--r--pkgs/desktops/pantheon/apps/elementary-tasks/default.nix1
-rw-r--r--pkgs/desktops/pantheon/apps/switchboard-plugs/onlineaccounts/default.nix14
-rw-r--r--pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/default.nix4
-rw-r--r--pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/partly-revert-pr-150.patch40
-rw-r--r--pkgs/development/compilers/vala/default.nix12
-rw-r--r--pkgs/development/libraries/appstream-glib/default.nix8
-rw-r--r--pkgs/development/libraries/at-spi2-atk/default.nix45
-rw-r--r--pkgs/development/libraries/at-spi2-core/default.nix10
-rw-r--r--pkgs/development/libraries/atk/default.nix77
-rw-r--r--pkgs/development/libraries/atk/fix_pc.patch9
-rw-r--r--pkgs/development/libraries/flatpak/bubblewrap-paths.patch15
-rw-r--r--pkgs/development/libraries/flatpak/default.nix49
-rw-r--r--pkgs/development/libraries/flatpak/fix-icon-validation.patch31
-rw-r--r--pkgs/development/libraries/flatpak/fix-test-paths.patch89
-rw-r--r--pkgs/development/libraries/flatpak/no-breaking-fish.patch11
-rw-r--r--pkgs/development/libraries/flatpak/validate-icon-pixbuf.patch13
-rw-r--r--pkgs/development/libraries/folks/default.nix6
-rw-r--r--pkgs/development/libraries/gcab/default.nix6
-rw-r--r--pkgs/development/libraries/gcr/4.nix113
-rw-r--r--pkgs/development/libraries/gdk-pixbuf/default.nix12
-rw-r--r--pkgs/development/libraries/geocode-glib/default.nix19
-rw-r--r--pkgs/development/libraries/geocode-glib/installed-tests-path.patch8
-rw-r--r--pkgs/development/libraries/gjs/default.nix8
-rw-r--r--pkgs/development/libraries/glib-networking/default.nix14
-rw-r--r--pkgs/development/libraries/glib-networking/installed-tests-path.patch12
-rw-r--r--pkgs/development/libraries/glib/default.nix24
-rw-r--r--pkgs/development/libraries/glib/split-dev-programs.patch89
-rw-r--r--pkgs/development/libraries/glib/tests-skip-shared-libs-if-default_library-static.patch8
-rw-r--r--pkgs/development/libraries/glibmm/2.68.nix4
-rw-r--r--pkgs/development/libraries/glibmm/default.nix4
-rw-r--r--pkgs/development/libraries/gnome-desktop/default.nix6
-rw-r--r--pkgs/development/libraries/gnome-online-accounts/default.nix32
-rw-r--r--pkgs/development/libraries/gobject-introspection/default.nix4
-rw-r--r--pkgs/development/libraries/goffice/default.nix4
-rw-r--r--pkgs/development/libraries/grilo-plugins/default.nix12
-rw-r--r--pkgs/development/libraries/grilo/default.nix8
-rw-r--r--pkgs/development/libraries/gsettings-desktop-schemas/default.nix4
-rw-r--r--pkgs/development/libraries/gspell/default.nix4
-rw-r--r--pkgs/development/libraries/gssdp/1.6.nix83
-rw-r--r--pkgs/development/libraries/gssdp/default.nix1
-rw-r--r--pkgs/development/libraries/gssdp/standalone-tools.patch4
-rw-r--r--pkgs/development/libraries/gssdp/tools.nix12
-rw-r--r--pkgs/development/libraries/gtkmm/3.x.nix4
-rw-r--r--pkgs/development/libraries/gtksourceview/4.x.nix4
-rw-r--r--pkgs/development/libraries/gtksourceview/5.x.nix4
-rw-r--r--pkgs/development/libraries/gupnp/1.6.nix73
-rw-r--r--pkgs/development/libraries/gupnp/default.nix1
-rw-r--r--pkgs/development/libraries/libchamplain/default.nix61
-rw-r--r--pkgs/development/libraries/libgee/default.nix4
-rw-r--r--pkgs/development/libraries/libgepub/default.nix38
-rw-r--r--pkgs/development/libraries/libgnomekbd/default.nix28
-rw-r--r--pkgs/development/libraries/libgweather/default.nix15
-rw-r--r--pkgs/development/libraries/libhandy/default.nix4
-rw-r--r--pkgs/development/libraries/libosinfo/default.nix4
-rw-r--r--pkgs/development/libraries/libpeas/default.nix4
-rw-r--r--pkgs/development/libraries/librest/1.0.nix2
-rw-r--r--pkgs/development/libraries/librsvg/default.nix67
-rw-r--r--pkgs/development/libraries/libshumate/default.nix8
-rw-r--r--pkgs/development/libraries/libsoup/3.x.nix24
-rw-r--r--pkgs/development/libraries/libwnck/default.nix16
-rw-r--r--pkgs/development/libraries/libwpe/default.nix6
-rw-r--r--pkgs/development/libraries/libwpe/fdo.nix6
-rw-r--r--pkgs/development/libraries/malcontent/default.nix8
-rw-r--r--pkgs/development/libraries/malcontent/ui.nix20
-rw-r--r--pkgs/development/libraries/pango/default.nix6
-rw-r--r--pkgs/development/libraries/pangomm/2.48.nix4
-rw-r--r--pkgs/development/libraries/pangomm/default.nix4
-rw-r--r--pkgs/development/libraries/spice-gtk/default.nix7
-rw-r--r--pkgs/development/libraries/template-glib/default.nix52
-rw-r--r--pkgs/development/libraries/tepl/default.nix4
-rw-r--r--pkgs/development/libraries/tracker-miners/default.nix25
-rw-r--r--pkgs/development/libraries/tracker/default.nix6
-rw-r--r--pkgs/development/libraries/vte/default.nix26
-rw-r--r--pkgs/development/libraries/xdg-desktop-portal-gnome/default.nix4
-rw-r--r--pkgs/development/libraries/xdg-desktop-portal/default.nix28
-rw-r--r--pkgs/development/python-modules/pyatspi/default.nix4
-rw-r--r--pkgs/development/ruby-modules/gem-config/default.nix16
-rw-r--r--pkgs/development/tools/documentation/gi-docgen/default.nix10
-rw-r--r--pkgs/development/tools/glade/default.nix30
-rw-r--r--pkgs/development/tools/misc/d-spy/default.nix9
-rw-r--r--pkgs/development/tools/profiling/sysprof/capture.nix10
-rw-r--r--pkgs/development/tools/profiling/sysprof/default.nix21
-rw-r--r--pkgs/development/tools/vala-language-server/default.nix13
-rw-r--r--pkgs/development/web/valum/default.nix3
-rw-r--r--pkgs/os-specific/linux/bolt/default.nix3
-rw-r--r--pkgs/os-specific/linux/gtkgreet/default.nix3
-rw-r--r--pkgs/tools/filesystems/eiciel/default.nix23
-rw-r--r--pkgs/tools/misc/ostree/default.nix3
-rw-r--r--pkgs/tools/networking/modemmanager/default.nix14
-rw-r--r--pkgs/tools/networking/networkmanager/libnma/default.nix4
-rw-r--r--pkgs/tools/networking/networkmanager/sstp/default.nix8
-rw-r--r--pkgs/tools/networking/phodav/2.0.nix59
-rw-r--r--pkgs/tools/networking/phodav/default.nix52
-rw-r--r--pkgs/top-level/aliases.nix2
-rw-r--r--pkgs/top-level/all-packages.nix37
205 files changed, 2583 insertions, 1557 deletions
diff --git a/nixos/doc/manual/from_md/release-notes/rl-2211.section.xml b/nixos/doc/manual/from_md/release-notes/rl-2211.section.xml
index b1592700190..e1cd4c56f13 100644
--- a/nixos/doc/manual/from_md/release-notes/rl-2211.section.xml
+++ b/nixos/doc/manual/from_md/release-notes/rl-2211.section.xml
@@ -13,6 +13,13 @@
     <itemizedlist>
       <listitem>
         <para>
+          GNOME has been upgraded to 43. Please take a look at their
+          <link xlink:href="https://release.gnome.org/43/">Release
+          Notes</link> for details.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
           During cross-compilation, tests are now executed if the test
           suite can be executed by the build platform. This is the case
           when doing “native” cross-compilation where the build and host
diff --git a/nixos/doc/manual/release-notes/rl-2211.section.md b/nixos/doc/manual/release-notes/rl-2211.section.md
index 881501ea3de..abb1ded9c0e 100644
--- a/nixos/doc/manual/release-notes/rl-2211.section.md
+++ b/nixos/doc/manual/release-notes/rl-2211.section.md
@@ -6,6 +6,9 @@ Support is planned until the end of June 2023, handing over to 23.05.
 
 In addition to numerous new and upgraded packages, this release has the following highlights:
 
+- GNOME has been upgraded to 43. Please take a look at their [Release
+  Notes](https://release.gnome.org/43/) for details.
+
 - During cross-compilation, tests are now executed if the test suite can be executed
   by the build platform. This is the case when doing “native” cross-compilation
   where the build and host platforms are largely the same, but the nixpkgs' cross
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index 494df03e3a3..9fc3af4b1ce 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -391,9 +391,9 @@
   ./services/desktops/pipewire/pipewire-media-session.nix
   ./services/desktops/pipewire/wireplumber.nix
   ./services/desktops/gnome/at-spi2-core.nix
-  ./services/desktops/gnome/chrome-gnome-shell.nix
   ./services/desktops/gnome/evolution-data-server.nix
   ./services/desktops/gnome/glib-networking.nix
+  ./services/desktops/gnome/gnome-browser-connector.nix
   ./services/desktops/gnome/gnome-initial-setup.nix
   ./services/desktops/gnome/gnome-keyring.nix
   ./services/desktops/gnome/gnome-online-accounts.nix
diff --git a/nixos/modules/services/desktops/gnome/chrome-gnome-shell.nix b/nixos/modules/services/desktops/gnome/chrome-gnome-shell.nix
deleted file mode 100644
index 7d0ee9ed022..00000000000
--- a/nixos/modules/services/desktops/gnome/chrome-gnome-shell.nix
+++ /dev/null
@@ -1,41 +0,0 @@
-# Chrome GNOME Shell native host connector.
-{ config, lib, pkgs, ... }:
-
-with lib;
-
-{
-  meta = {
-    maintainers = teams.gnome.members;
-  };
-
-  # Added 2021-05-07
-  imports = [
-    (mkRenamedOptionModule
-      [ "services" "gnome3" "chrome-gnome-shell" "enable" ]
-      [ "services" "gnome" "chrome-gnome-shell" "enable" ]
-    )
-  ];
-
-  ###### interface
-  options = {
-    services.gnome.chrome-gnome-shell.enable = mkEnableOption (lib.mdDoc ''
-      Chrome GNOME Shell native host connector, a DBus service
-      allowing to install GNOME Shell extensions from a web browser.
-    '');
-  };
-
-
-  ###### implementation
-  config = mkIf config.services.gnome.chrome-gnome-shell.enable {
-    environment.etc = {
-      "chromium/native-messaging-hosts/org.gnome.chrome_gnome_shell.json".source = "${pkgs.chrome-gnome-shell}/etc/chromium/native-messaging-hosts/org.gnome.chrome_gnome_shell.json";
-      "opt/chrome/native-messaging-hosts/org.gnome.chrome_gnome_shell.json".source = "${pkgs.chrome-gnome-shell}/etc/opt/chrome/native-messaging-hosts/org.gnome.chrome_gnome_shell.json";
-    };
-
-    environment.systemPackages = [ pkgs.chrome-gnome-shell ];
-
-    services.dbus.packages = [ pkgs.chrome-gnome-shell ];
-
-    nixpkgs.config.firefox.enableGnomeExtensions = true;
-  };
-}
diff --git a/nixos/modules/services/desktops/gnome/gnome-browser-connector.nix b/nixos/modules/services/desktops/gnome/gnome-browser-connector.nix
new file mode 100644
index 00000000000..5d4ddce9422
--- /dev/null
+++ b/nixos/modules/services/desktops/gnome/gnome-browser-connector.nix
@@ -0,0 +1,47 @@
+{ config, lib, pkgs, ... }:
+
+let
+  inherit (lib) mdDoc mkEnableOption mkIf mkRenamedOptionModule teams;
+in
+
+{
+  meta = {
+    maintainers = teams.gnome.members;
+  };
+
+  imports = [
+    # Added 2021-05-07
+    (mkRenamedOptionModule
+      [ "services" "gnome3" "chrome-gnome-shell" "enable" ]
+      [ "services" "gnome" "gnome-browser-connector" "enable" ]
+    )
+    # Added 2022-07-25
+    (mkRenamedOptionModule
+      [ "services" "gnome" "chrome-gnome-shell" "enable" ]
+      [ "services" "gnome" "gnome-browser-connector" "enable" ]
+    )
+  ];
+
+  options = {
+    services.gnome.gnome-browser-connector.enable = mkEnableOption (mdDoc ''
+      Native host connector for the GNOME Shell browser extension, a DBus service
+      allowing to install GNOME Shell extensions from a web browser.
+    '');
+  };
+
+  config = mkIf config.services.gnome.gnome-browser-connector.enable {
+    environment.etc = {
+      "chromium/native-messaging-hosts/org.gnome.browser_connector.json".source = "${pkgs.gnome-browser-connector}/etc/chromium/native-messaging-hosts/org.gnome.browser_connector.json";
+      "opt/chrome/native-messaging-hosts/org.gnome.browser_connector.json".source = "${pkgs.gnome-browser-connector}/etc/opt/chrome/native-messaging-hosts/org.gnome.browser_connector.json";
+      # Legacy paths.
+      "chromium/native-messaging-hosts/org.gnome.chrome_gnome_shell.json".source = "${pkgs.gnome-browser-connector}/etc/chromium/native-messaging-hosts/org.gnome.chrome_gnome_shell.json";
+      "opt/chrome/native-messaging-hosts/org.gnome.chrome_gnome_shell.json".source = "${pkgs.gnome-browser-connector}/etc/opt/chrome/native-messaging-hosts/org.gnome.chrome_gnome_shell.json";
+    };
+
+    environment.systemPackages = [ pkgs.gnome-browser-connector ];
+
+    services.dbus.packages = [ pkgs.gnome-browser-connector ];
+
+    nixpkgs.config.firefox.enableGnomeExtensions = true;
+  };
+}
diff --git a/nixos/modules/services/x11/desktop-managers/gnome.nix b/nixos/modules/services/x11/desktop-managers/gnome.nix
index d3db98cb4e2..9c1978e362b 100644
--- a/nixos/modules/services/x11/desktop-managers/gnome.nix
+++ b/nixos/modules/services/x11/desktop-managers/gnome.nix
@@ -389,8 +389,8 @@ in
         ++ utils.removePackagesByName optionalPackages config.environment.gnome.excludePackages;
 
       services.colord.enable = mkDefault true;
-      services.gnome.chrome-gnome-shell.enable = mkDefault true;
       services.gnome.glib-networking.enable = true;
+      services.gnome.gnome-browser-connector.enable = mkDefault true;
       services.gnome.gnome-initial-setup.enable = mkDefault true;
       services.gnome.gnome-remote-desktop.enable = mkDefault true;
       services.gnome.gnome-settings-daemon.enable = true;
@@ -520,7 +520,7 @@ in
 
       # Let nautilus find extensions
       # TODO: Create nautilus-with-extensions package
-      environment.sessionVariables.NAUTILUS_EXTENSION_DIR = "${config.system.path}/lib/nautilus/extensions-3.0";
+      environment.sessionVariables.NAUTILUS_4_EXTENSION_DIR = "${config.system.path}/lib/nautilus/extensions-4";
 
       # Override default mimeapps for nautilus
       environment.sessionVariables.XDG_DATA_DIRS = [ "${mimeAppsList}/share" ];
diff --git a/nixos/modules/services/x11/desktop-managers/pantheon.nix b/nixos/modules/services/x11/desktop-managers/pantheon.nix
index 90a8787ed22..5c0203224e1 100644
--- a/nixos/modules/services/x11/desktop-managers/pantheon.nix
+++ b/nixos/modules/services/x11/desktop-managers/pantheon.nix
@@ -285,7 +285,7 @@ in
         elementary-music
         elementary-photos
         elementary-screenshot
-        elementary-tasks
+        # elementary-tasks
         elementary-terminal
         elementary-videos
         epiphany
diff --git a/nixos/tests/installed-tests/default.nix b/nixos/tests/installed-tests/default.nix
index b2c1b43f90e..2e38cd389c7 100644
--- a/nixos/tests/installed-tests/default.nix
+++ b/nixos/tests/installed-tests/default.nix
@@ -101,7 +101,6 @@ in
   json-glib = callInstalledTest ./json-glib.nix {};
   ibus = callInstalledTest ./ibus.nix {};
   libgdata = callInstalledTest ./libgdata.nix {};
-  librsvg = callInstalledTest ./librsvg.nix {};
   glib-testing = callInstalledTest ./glib-testing.nix {};
   libjcat = callInstalledTest ./libjcat.nix {};
   libxmlb = callInstalledTest ./libxmlb.nix {};
diff --git a/nixos/tests/installed-tests/librsvg.nix b/nixos/tests/installed-tests/librsvg.nix
deleted file mode 100644
index 378e7cce3ff..00000000000
--- a/nixos/tests/installed-tests/librsvg.nix
+++ /dev/null
@@ -1,9 +0,0 @@
-{ pkgs, makeInstalledTest, ... }:
-
-makeInstalledTest {
-  tested = pkgs.librsvg;
-
-  testConfig = {
-    virtualisation.memorySize = 2047;
-  };
-}
diff --git a/pkgs/applications/editors/gnome-builder/default.nix b/pkgs/applications/editors/gnome-builder/default.nix
index 7cfde3a91f3..54625d75e5c 100644
--- a/pkgs/applications/editors/gnome-builder/default.nix
+++ b/pkgs/applications/editors/gnome-builder/default.nix
@@ -2,92 +2,113 @@
 , lib
 , ctags
 , cmark
-, appstream-glib
 , desktop-file-utils
+, editorconfig-core-c
 , fetchurl
+, fetchpatch
 , flatpak
 , gnome
 , libgit2-glib
 , gi-docgen
 , gobject-introspection
-, glade
-, gspell
-, gtk3
-, gtksourceview4
+, enchant
+, icu
+, gtk4
+, gtksourceview5
 , json-glib
 , jsonrpc-glib
-, libdazzle
-, libhandy
+, libadwaita
+, libpanel
 , libpeas
-, libportal-gtk3
+, libportal-gtk4
 , libxml2
 , meson
 , ninja
 , ostree
-, pcre
+, d-spy
 , pcre2
 , pkg-config
 , python3
 , sysprof
 , template-glib
 , vala
-, vte
-, webkitgtk
-, wrapGAppsHook
+, vte-gtk4
+, webkitgtk_5_0
+, wrapGAppsHook4
 , dbus
 , xvfb-run
 }:
 
 stdenv.mkDerivation rec {
   pname = "gnome-builder";
-  version = "42.1";
+  version = "43.2";
 
   outputs = [ "out" "devdoc" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "XU1RtwKGW0gBcgHwxgfiSifXIDGo9ciNT86HW1VFZwo=";
+    sha256 = "dzIhF6ERsnR7zOitYFeKZ5wgIeSGkRz29OY0FjKKuzM=";
   };
 
+  patches = [
+    # The test environment hardcodes `GI_TYPELIB_PATH` environment variable to direct dependencies of libide & co.
+    # https://gitlab.gnome.org/GNOME/gnome-builder/-/commit/2ce510b0ec0518c29427a29b386bb2ac1a121edf
+    # https://gitlab.gnome.org/GNOME/gnome-builder/-/commit/2964f7c2a0729f2f456cdca29a0f5b7525baf7c1
+    #
+    # But Nix does not have a fallback path for typelibs like /usr/lib on FHS distros and relies solely
+    # on `GI_TYPELIB_PATH` environment variable. So, when Ide started to depend on Vte, which
+    # depends on Pango, among others, GIrepository was unable to find these indirect dependencies
+    # and crashed with:
+    #
+    #     Typelib file for namespace 'Pango', version '1.0' not found (g-irepository-error-quark, 0)
+    ./fix-finding-test-typelibs.patch
+  ];
+
   nativeBuildInputs = [
-    appstream-glib
     desktop-file-utils
-    gi-docgen
+    (gi-docgen.overrideAttrs (attrs: {
+      patches = attrs.patches ++ [
+        (fetchpatch {
+          url = "https://gitlab.gnome.org/GNOME/gi-docgen/-/commit/f4ff4787cce962b705fb2588b31f2988c5063c13.patch";
+          sha256 = "11VGFFb2PLVxnX/qUQdLPLfhGQWx4sf4apBP7R2JWjA=";
+        })
+      ];
+    }))
     gobject-introspection
     meson
     ninja
     pkg-config
     python3
     python3.pkgs.wrapPython
-    wrapGAppsHook
+    wrapGAppsHook4
   ];
 
   buildInputs = [
     ctags
     cmark
+    editorconfig-core-c
     flatpak
-    gnome.devhelp
-    glade
     libgit2-glib
     libpeas
-    libportal-gtk3
-    vte
-    gspell
-    gtk3
-    gtksourceview4
+    libportal-gtk4
+    vte-gtk4
+    enchant
+    icu
+    gtk4
+    gtksourceview5
     json-glib
     jsonrpc-glib
-    libdazzle
-    libhandy
+    libadwaita
+    libpanel
     libxml2
     ostree
-    pcre
+    d-spy
     pcre2
     python3
     sysprof
     template-glib
     vala
-    webkitgtk
+    webkitgtk_5_0
   ];
 
   checkInputs = [
@@ -110,6 +131,8 @@ stdenv.mkDerivation rec {
 
   postPatch = ''
     patchShebangs build-aux/meson/post_install.py
+    substituteInPlace build-aux/meson/post_install.py \
+      --replace "gtk-update-icon-cache" "gtk4-update-icon-cache"
   '';
 
   checkPhase = ''
diff --git a/pkgs/applications/editors/gnome-builder/fix-finding-test-typelibs.patch b/pkgs/applications/editors/gnome-builder/fix-finding-test-typelibs.patch
new file mode 100644
index 00000000000..1c6c663c69a
--- /dev/null
+++ b/pkgs/applications/editors/gnome-builder/fix-finding-test-typelibs.patch
@@ -0,0 +1,13 @@
+diff --git a/src/meson.build b/src/meson.build
+index c9a44e418..cd9e466d6 100644
+--- a/src/meson.build
++++ b/src/meson.build
+@@ -35,7 +35,7 @@ foreach test_typelib_dep: test_typelib_deps
+   test_gi_typelib_path += [join_paths(test_typelib_dep.get_variable('libdir'), 'girepository-1.0')]
+ endforeach
+ test_env = [
+-  'GI_TYPELIB_PATH=@0@'.format(':'.join(test_gi_typelib_path)),
++  'GI_TYPELIB_PATH=@0@:@1@'.format(':'.join(test_gi_typelib_path), run_command('sh', ['-c', 'echo "$GI_TYPELIB_PATH"']).stdout().strip()),
+   'G_TEST_SRCDIR=@0@/tests'.format(meson.current_source_dir()),
+   'G_TEST_BUILDDIR=@0@/tests'.format(meson.current_build_dir()),
+   'G_DEBUG=gc-friendly',
diff --git a/pkgs/applications/editors/gnome-latex/default.nix b/pkgs/applications/editors/gnome-latex/default.nix
index fe8666fd741..3a4760265d1 100644
--- a/pkgs/applications/editors/gnome-latex/default.nix
+++ b/pkgs/applications/editors/gnome-latex/default.nix
@@ -15,18 +15,18 @@
 , gnome
 , glib
 , pkg-config
-, intltool
+, gettext
 , itstool
 , libxml2
 }:
 
 stdenv.mkDerivation rec {
-  version = "3.40.0";
+  version = "3.41.2";
   pname = "gnome-latex";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "xad/55vUDjeOooyPRaZjJ/vIzFw7W48PCcAhfufMCpA=";
+    sha256 = "8xDwoUUEmfDP92y5+cXWaZGpUGH6s9bmcMSlZHOF1jM=";
   };
 
   nativeBuildInputs = [
@@ -37,7 +37,7 @@ stdenv.mkDerivation rec {
     gobject-introspection
     wrapGAppsHook
     itstool
-    intltool
+    gettext
   ];
 
   buildInputs = [
diff --git a/pkgs/applications/graphics/gnome-photos/default.nix b/pkgs/applications/graphics/gnome-photos/default.nix
index 774e377ca03..ef731caf1a2 100644
--- a/pkgs/applications/graphics/gnome-photos/default.nix
+++ b/pkgs/applications/graphics/gnome-photos/default.nix
@@ -1,4 +1,5 @@
-{ lib, stdenv
+{ stdenv
+, lib
 , fetchurl
 , at-spi2-core
 , babl
@@ -7,22 +8,19 @@
 , dleyna-renderer
 , gdk-pixbuf
 , gegl
-, geocode-glib
+, geocode-glib_2
 , gettext
 , gexiv2
-, gfbgraph
 , glib
 , gnome-online-accounts
 , gnome
 , gobject-introspection
-, grilo
-, grilo-plugins
 , gsettings-desktop-schemas
 , gtk3
 , itstool
 , libdazzle
+, libportal-gtk3
 , libhandy
-, libgdata
 , libxml2
 , meson
 , ninja
@@ -36,13 +34,13 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-photos";
-  version = "42.0";
+  version = "43.0";
 
   outputs = [ "out" "installedTests" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "JcsoFCUZnex7BF8T8y+PlgNMsMuLlNlvnf+vT1vmhVE=";
+    sha256 = "x6x0WNUz8p2VUBHHS3YiTXnqMbzBLp1tDOe2w3BNCOE=";
   };
 
   patches = [
@@ -73,18 +71,15 @@ stdenv.mkDerivation rec {
     dleyna-renderer
     gdk-pixbuf
     gegl
-    geocode-glib
+    geocode-glib_2
     gexiv2
-    gfbgraph
     glib
     gnome-online-accounts
-    grilo
-    grilo-plugins
     gsettings-desktop-schemas
     gtk3
     libdazzle
+    libportal-gtk3
     libhandy
-    libgdata
     tracker
     tracker-miners # For 'org.freedesktop.Tracker.Miner.Files' GSettings schema
 
diff --git a/pkgs/applications/graphics/shotwell/default.nix b/pkgs/applications/graphics/shotwell/default.nix
index a4eb3068239..251dfdef32f 100644
--- a/pkgs/applications/graphics/shotwell/default.nix
+++ b/pkgs/applications/graphics/shotwell/default.nix
@@ -6,11 +6,11 @@
 , libexif
 , libgphoto2
 , libwebp
-, libsoup
+, libsoup_3
 , libxml2
 , vala
 , sqlite
-, webkitgtk
+, webkitgtk_4_1
 , pkg-config
 , gnome
 , gst_all_1
@@ -30,7 +30,6 @@
 , wrapGAppsHook
 , gobject-introspection
 , itstool
-, libgdata
 , libchamplain
 , libsecret
 , gsettings-desktop-schemas
@@ -41,11 +40,11 @@
 
 stdenv.mkDerivation rec {
   pname = "shotwell";
-  version = "0.30.16";
+  version = "0.31.5";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "sha256-yYgs+9rTA8uBYbFJrLtMYX++fKn2q24i0XTiRH51GPo=";
+    sha256 = "sha256-OwSPxs6ZsjLR4OqbjbB0CDyGyI07bWMTaiz4IXqkXBk=";
   };
 
   nativeBuildInputs = [
@@ -66,10 +65,10 @@ stdenv.mkDerivation rec {
     libexif
     libgphoto2
     libwebp
-    libsoup
+    libsoup_3
     libxml2
     sqlite
-    webkitgtk
+    webkitgtk_4_1
     gst_all_1.gstreamer
     gst_all_1.gst-libav
     gst_all_1.gst-plugins-base
@@ -87,7 +86,6 @@ stdenv.mkDerivation rec {
     librest
     gcr
     gnome.adwaita-icon-theme
-    libgdata
     libchamplain
     libsecret
   ];
diff --git a/pkgs/applications/misc/almanah/default.nix b/pkgs/applications/misc/almanah/default.nix
index 5e4f4482354..3b27f5b96e3 100644
--- a/pkgs/applications/misc/almanah/default.nix
+++ b/pkgs/applications/misc/almanah/default.nix
@@ -5,15 +5,15 @@
 , atk
 , cairo
 , desktop-file-utils
-, evolution-data-server
+, evolution-data-server-gtk4
 , evolution
-, gcr
+, gcr_4
 , gettext
 , glib
 , gnome
 , gpgme
 , gtk3
-, gtksourceview3
+, gtksourceview4
 , gtkspell3
 , libcryptui
 , libxml2
@@ -42,6 +42,20 @@ stdenv.mkDerivation rec {
       url = "https://gitlab.gnome.org/GNOME/almanah/-/commit/8c42a67695621d1e30cec933a04e633e6030bbaf.patch";
       sha256 = "qyqFgYSu4emFDG/Mjwz1bZb3v3/4gwQSKmGCoPPNYCQ=";
     })
+
+    # Port to Gcr 4
+    # https://gitlab.gnome.org/GNOME/almanah/-/merge_requests/14
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/almanah/-/commit/cd44b476f4ffbf37c5d5f5b996ecd711db925576.patch";
+      sha256 = "wJ1035NxgeTwUa0LoNcB6TSLxffoXBR3WbGAGkfggYY=";
+    })
+
+    # Port to GtkSourceView 4
+    # https://gitlab.gnome.org/GNOME/almanah/-/merge_requests/15
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/almanah/-/commit/0ba7f05cba7feaf2ae2c220596aead5dfc676675.patch";
+      sha256 = "5uvHTPzQloEq8SVt3EnZ+8mziBdXsDmu/e92/RtyFzE=";
+    })
   ];
 
   nativeBuildInputs = [
@@ -58,13 +72,13 @@ stdenv.mkDerivation rec {
   buildInputs = [
     atk
     cairo
-    evolution-data-server
-    gcr
+    evolution-data-server-gtk4
+    gcr_4
     glib
     evolution
     gpgme
     gtk3
-    gtksourceview3
+    gtksourceview4
     gtkspell3
     libcryptui
     sqlite
diff --git a/pkgs/desktops/gnome/apps/gnome-todo/default.nix b/pkgs/applications/misc/endeavour/default.nix
index 582a0772a68..3c48efe66c4 100644
--- a/pkgs/desktops/gnome/apps/gnome-todo/default.nix
+++ b/pkgs/applications/misc/endeavour/default.nix
@@ -5,8 +5,7 @@
 , meson
 , ninja
 , pkg-config
-, python3
-, wrapGAppsHook
+, wrapGAppsHook4
 , gettext
 , gnome
 , glib
@@ -17,24 +16,24 @@
 , gnome-online-accounts
 , gsettings-desktop-schemas
 , libportal-gtk4
-, evolution-data-server
+, evolution-data-server-gtk4
 , libical
 , librest
 , json-glib
 , itstool
-, unstableGitUpdater
+, gitUpdater
 }:
 
 stdenv.mkDerivation rec {
-  pname = "gnome-todo";
-  version = "unstable-2022-06-12";
+  pname = "endeavour";
+  version = "42.0";
 
   src = fetchFromGitLab {
     domain = "gitlab.gnome.org";
-    owner = "GNOME";
-    repo = "gnome-todo";
-    rev = "ad4e15f0b58860caf8c6d497795b83b594a9c3e5";
-    sha256 = "HRufLoZou9ssQ/qoDG8anhOAtl8IYvFpyjq/XJlsotQ=";
+    owner = "World";
+    repo = "Endeavour";
+    rev = "v${version}";
+    sha256 = "U91WAoyIeQ0WbFbOCrbFJjbWe2eT7b/VL2M1hNXxyzQ=";
   };
 
   patches = [
@@ -45,6 +44,20 @@ stdenv.mkDerivation rec {
       extraPrefix = "";
       name = "gnome-todo_meson-build.patch";
     })
+
+    # build: Fix building with -Werror=format-security
+    # https://gitlab.gnome.org/World/Endeavour/-/merge_requests/132
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/World/Endeavour/-/commit/3bad03e90fcc28f6e3f87f2c90df5984dbeb0791.patch";
+      sha256 = "sha256-HRkNfhn+EH0Fc+KBDdX1Q+T9QWSctTOn1cvecP2N0zo=";
+    })
+
+    # build: Use GNOME module post_install()
+    # https://gitlab.gnome.org/World/Endeavour/-/merge_requests/135
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/World/Endeavour/-/commit/a8daa1d8acd0a5da7aef54d6e16d8a585c71e555.patch";
+      sha256 = "sha256-zUTQ36eUMOY9ODAgwSKUhSlB9Cj0Yu/60KjFFW5fx2I=";
+    })
   ];
 
   nativeBuildInputs = [
@@ -52,8 +65,7 @@ stdenv.mkDerivation rec {
     ninja
     pkg-config
     gettext
-    python3
-    wrapGAppsHook
+    wrapGAppsHook4
     itstool
   ];
 
@@ -69,26 +81,22 @@ stdenv.mkDerivation rec {
 
     # Plug-ins
     libportal-gtk4 # background
-    evolution-data-server # eds
+    evolution-data-server-gtk4 # eds
     libical
     librest # todoist
     json-glib # todoist
   ];
 
-  postPatch = ''
-    chmod +x build-aux/meson/meson_post_install.py
-    patchShebangs build-aux/meson/meson_post_install.py
-  '';
-
   passthru = {
-    updateScript = unstableGitUpdater {
-      url = "https://gitlab.gnome.org/GNOME/gnome-todo.git";
+    updateScript = gitUpdater {
+      inherit pname version;
+      rev-prefix = "v";
     };
   };
 
   meta = with lib; {
     description = "Personal task manager for GNOME";
-    homepage = "https://wiki.gnome.org/Apps/Todo";
+    homepage = "https://gitlab.gnome.org/World/Endeavour";
     license = licenses.gpl3Plus;
     maintainers = teams.gnome.members;
     platforms = platforms.linux;
diff --git a/pkgs/applications/misc/orca/default.nix b/pkgs/applications/misc/orca/default.nix
index 639ad2175b4..29cdac6b8d1 100644
--- a/pkgs/applications/misc/orca/default.nix
+++ b/pkgs/applications/misc/orca/default.nix
@@ -34,13 +34,13 @@
 
 buildPythonApplication rec {
   pname = "orca";
-  version = "42.3";
+  version = "43.0";
 
   format = "other";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "+ty6C/6uHmZyJmJk529j/lq/jw77NL4Ri1qXP7by9yQ=";
+    sha256 = "HKdaAMSoUSoJ5KJuszn615RNHtQayjL3D2lickQhglA=";
   };
 
   patches = [
diff --git a/pkgs/applications/misc/tootle/default.nix b/pkgs/applications/misc/tootle/default.nix
index 48b1b2d57e0..422cf8ea762 100644
--- a/pkgs/applications/misc/tootle/default.nix
+++ b/pkgs/applications/misc/tootle/default.nix
@@ -93,5 +93,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/bleakgrey/tootle";
     license = licenses.gpl3;
     maintainers = with maintainers; [ dtzWill ];
+    broken = true;
   };
 }
diff --git a/pkgs/applications/networking/browsers/firefox/wrapper.nix b/pkgs/applications/networking/browsers/firefox/wrapper.nix
index e09bbef871b..eeb72590df2 100644
--- a/pkgs/applications/networking/browsers/firefox/wrapper.nix
+++ b/pkgs/applications/networking/browsers/firefox/wrapper.nix
@@ -4,7 +4,7 @@
 ## various stuff that can be plugged in
 , ffmpeg_5, xorg, alsa-lib, libpulseaudio, libcanberra-gtk3, libglvnd, libnotify, opensc
 , gnome/*.gnome-shell*/
-, browserpass, chrome-gnome-shell, uget-integrator, plasma5Packages, bukubrow, pipewire
+, browserpass, gnome-browser-connector, uget-integrator, plasma5Packages, bukubrow, pipewire
 , tridactyl-native
 , fx_cast_bridge
 , udev
@@ -65,7 +65,7 @@ let
           ++ lib.optional (cfg.enableBrowserpass or false) (lib.getBin browserpass)
           ++ lib.optional (cfg.enableBukubrow or false) bukubrow
           ++ lib.optional (cfg.enableTridactylNative or false) tridactyl-native
-          ++ lib.optional (cfg.enableGnomeExtensions or false) chrome-gnome-shell
+          ++ lib.optional (cfg.enableGnomeExtensions or false) gnome-browser-connector
           ++ lib.optional (cfg.enableUgetIntegrator or false) uget-integrator
           ++ lib.optional (cfg.enablePlasmaBrowserIntegration or false) plasma5Packages.plasma-browser-integration
           ++ lib.optional (cfg.enableFXCastBridge or false) fx_cast_bridge
diff --git a/pkgs/applications/networking/dropbox/cli.nix b/pkgs/applications/networking/dropbox/cli.nix
index ffbf42715f5..c6b0baa9d3f 100644
--- a/pkgs/applications/networking/dropbox/cli.nix
+++ b/pkgs/applications/networking/dropbox/cli.nix
@@ -1,5 +1,6 @@
 { lib, stdenv
 , substituteAll
+, autoreconfHook
 , pkg-config
 , fetchurl
 , python3
@@ -28,6 +29,10 @@ stdenv.mkDerivation {
   strictDeps = true;
 
   patches = [
+    # Fix extension for Nautilus 43
+    # https://github.com/dropbox/nautilus-dropbox/pull/105
+    ./nautilus-43.patch
+
     (substituteAll {
       src = ./fix-cli-paths.patch;
       inherit dropboxd;
@@ -35,6 +40,7 @@ stdenv.mkDerivation {
   ];
 
   nativeBuildInputs = [
+    autoreconfHook
     pkg-config
     gobject-introspection
     gdk-pixbuf
diff --git a/pkgs/applications/networking/dropbox/nautilus-43.patch b/pkgs/applications/networking/dropbox/nautilus-43.patch
new file mode 100644
index 00000000000..b4b55784319
--- /dev/null
+++ b/pkgs/applications/networking/dropbox/nautilus-43.patch
@@ -0,0 +1,195 @@
+diff --git a/configure.ac b/configure.ac
+index 025289c..42b49fa 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -12,7 +12,7 @@ AM_CONFIG_HEADER(config.h)
+ #AC_PROG_INTLTOOL([0.29])
+ 
+ # Dependency checks
+-NAUTILUS_REQUIRED=2.16.0
++NAUTILUS_REQUIRED=43.rc
+ GLIB_REQUIRED=2.14.0
+ 
+ # Used programs
+@@ -26,8 +26,11 @@ if test "x$HAVE_PKGCONFIG" = "xno"; then
+ 	AC_MSG_ERROR(you need to have pkgconfig installed !)
+ fi
+ 
+-PKG_CHECK_MODULES(NAUTILUS, libnautilus-extension >= $NAUTILUS_REQUIRED)
++PKG_CHECK_MODULES(NAUTILUS, libnautilus-extension-4 >= $NAUTILUS_REQUIRED)
+ PKG_CHECK_MODULES(GLIB, glib-2.0 >= $GLIB_REQUIRED)
++PKG_CHECK_MODULES(GTK, gtk4 >= 4.6.0)
++
++AC_SUBST(GTK_CFLAGS)
+ 
+ AC_PATH_PROG([PYTHON3], [python3])
+ 
+@@ -84,10 +87,10 @@ AC_MSG_CHECKING([for nautilus extension directory])
+ if test -n "$with_nautilus_extension_dir"; then
+     NAUTILUS_EXTENSION_DIR=$with_nautilus_extension_dir
+ else
+-    NAUTILUS_EXTENSION_DIR=`$PKG_CONFIG --variable=extensiondir libnautilus-extension`
++    NAUTILUS_EXTENSION_DIR=`$PKG_CONFIG --variable=extensiondir libnautilus-extension-4`
+ fi
+ if test -z "$NAUTILUS_EXTENSION_DIR"; then
+-    NAUTILUS_EXTENSION_DIR='${exec_prefix}/lib/nautilus/extension-1.0'
++    NAUTILUS_EXTENSION_DIR='${exec_prefix}/lib/nautilus/extension-4'
+ fi
+ 
+ AC_MSG_RESULT([${NAUTILUS_EXTENSION_DIR}])
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 15d6687..c521ec5 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -13,6 +13,7 @@ libnautilus_dropbox_la_CFLAGS = 	                \
+ 	$(WARN_CFLAGS)                                  \
+ 	$(DISABLE_DEPRECATED_CFLAGS)					\
+ 	$(NAUTILUS_CFLAGS)                              \
++	$(GTK_CFLAGS)                              \
+ 	$(GLIB_CFLAGS)
+ 
+ if DEBUG
+diff --git a/src/dropbox.c b/src/dropbox.c
+index 0d59559..8162aa9 100644
+--- a/src/dropbox.c
++++ b/src/dropbox.c
+@@ -27,9 +27,6 @@
+ 
+ #include <glib-object.h>
+ 
+-#include <gdk/gdk.h>
+-#include <gtk/gtk.h>
+-
+ #include "nautilus-dropbox.h"
+ 
+ static GType type_list[1];
+@@ -41,9 +38,6 @@ nautilus_module_initialize (GTypeModule *module) {
+   nautilus_dropbox_register_type (module);
+   type_list[0] = NAUTILUS_TYPE_DROPBOX;
+ 
+-  dropbox_use_nautilus_submenu_workaround
+-    = (NAUTILUS_VERSION_MAJOR < 2 ||
+-       (NAUTILUS_VERSION_MAJOR == 2 && NAUTILUS_VERSION_MINOR <= 22));
+   dropbox_use_operation_in_progress_workaround = TRUE;
+ }
+ 
+diff --git a/src/nautilus-dropbox.c b/src/nautilus-dropbox.c
+index c75ccbf..b9c10b4 100644
+--- a/src/nautilus-dropbox.c
++++ b/src/nautilus-dropbox.c
+@@ -37,9 +37,7 @@
+ #include <glib-object.h>
+ #include <gtk/gtk.h>
+ 
+-#include <libnautilus-extension/nautilus-extension-types.h>
+-#include <libnautilus-extension/nautilus-menu-provider.h>
+-#include <libnautilus-extension/nautilus-info-provider.h>
++#include <nautilus-extension.h>
+ 
+ #include "g-util.h"
+ #include "dropbox-command-client.h"
+@@ -49,7 +47,7 @@
+ static char *emblems[] = {"dropbox-uptodate", "dropbox-syncing", "dropbox-unsyncable"};
+ gchar *DEFAULT_EMBLEM_PATHS[2] = { EMBLEMDIR , NULL };
+ 
+-gboolean dropbox_use_nautilus_submenu_workaround;
++
+ gboolean dropbox_use_operation_in_progress_workaround;
+ 
+ static GType dropbox_type = 0;
+@@ -630,13 +628,6 @@ nautilus_dropbox_parse_menu(gchar			**options,
+ 	g_object_set_property (G_OBJECT(item), "sensitive", &sensitive);
+       }
+ 
+-      /* taken from nautilus-file-repairer (http://repairer.kldp.net/):
+-       * this code is a workaround for a bug of nautilus
+-       * See: http://bugzilla.gnome.org/show_bug.cgi?id=508878 */
+-      if (dropbox_use_nautilus_submenu_workaround) {
+-	toret = g_list_append(toret, item);
+-      }
+-
+       g_object_unref(item);
+       g_string_free(new_action_string, TRUE);
+       ret++;
+@@ -661,7 +652,6 @@ get_file_items_callback(GHashTable *response, gpointer ud)
+ 
+ static GList *
+ nautilus_dropbox_get_file_items(NautilusMenuProvider *provider,
+-                                GtkWidget            *window,
+ 				GList                *files)
+ {
+   /*
+@@ -778,14 +768,13 @@ add_emblem_paths(GHashTable* emblem_paths_response)
+ 
+   gchar **emblem_paths_list;
+   int i;
+-
+-  GtkIconTheme *theme = gtk_icon_theme_get_default();
++  GtkIconTheme *theme = gtk_icon_theme_get_for_display (gdk_display_get_default ());
+ 
+   if (emblem_paths_response &&
+       (emblem_paths_list = g_hash_table_lookup(emblem_paths_response, "path"))) {
+       for (i = 0; emblem_paths_list[i] != NULL; i++) {
+ 	if (emblem_paths_list[i][0])
+-	  gtk_icon_theme_append_search_path(theme, emblem_paths_list[i]);
++	  gtk_icon_theme_add_search_path(theme, emblem_paths_list[i]);
+       }
+   }
+   g_hash_table_unref(emblem_paths_response);
+@@ -804,15 +793,14 @@ remove_emblem_paths(GHashTable* emblem_paths_response)
+       goto exit;
+ 
+   // We need to remove the old paths.
+-  GtkIconTheme * icon_theme = gtk_icon_theme_get_default();
+   gchar ** paths;
+-  gint path_count;
++  GtkIconTheme *theme = gtk_icon_theme_get_for_display (gdk_display_get_default ());
+ 
+-  gtk_icon_theme_get_search_path(icon_theme, &paths, &path_count);
++  paths = gtk_icon_theme_get_search_path(theme);
+ 
+   gint i, j, out = 0;
+   gboolean found = FALSE;
+-  for (i = 0; i < path_count; i++) {
++  for (i = 0; paths[i] != NULL; i++) {
+       gboolean keep = TRUE;
+       for (j = 0; emblem_paths_list[j] != NULL; j++) {
+ 	  if (emblem_paths_list[j][0]) {
+@@ -834,7 +822,7 @@ remove_emblem_paths(GHashTable* emblem_paths_response)
+      accomodate the changes */
+   if (found) {
+     paths[out] = NULL; /* Clear the last one */
+-    gtk_icon_theme_set_search_path(icon_theme, (const gchar **)paths, out);
++    gtk_icon_theme_set_search_path(theme, (const gchar **)paths);
+   }
+ 
+   g_strfreev(paths);
+@@ -888,13 +876,13 @@ on_disconnect(NautilusDropbox *cvs) {
+ 
+ 
+ static void
+-nautilus_dropbox_menu_provider_iface_init (NautilusMenuProviderIface *iface) {
++nautilus_dropbox_menu_provider_iface_init (NautilusMenuProviderInterface *iface) {
+   iface->get_file_items = nautilus_dropbox_get_file_items;
+   return;
+ }
+ 
+ static void
+-nautilus_dropbox_info_provider_iface_init (NautilusInfoProviderIface *iface) {
++nautilus_dropbox_info_provider_iface_init (NautilusInfoProviderInterface *iface) {
+   iface->update_file_info = nautilus_dropbox_update_file_info;
+   iface->cancel_update = nautilus_dropbox_cancel_update;
+   return;
+diff --git a/src/nautilus-dropbox.h b/src/nautilus-dropbox.h
+index 65734be..44faa27 100644
+--- a/src/nautilus-dropbox.h
++++ b/src/nautilus-dropbox.h
+@@ -27,7 +27,7 @@
+ #include <glib.h>
+ #include <glib-object.h>
+ 
+-#include <libnautilus-extension/nautilus-info-provider.h>
++#include <nautilus-extension.h>
+ 
+ #include "dropbox-command-client.h"
+ #include "nautilus-dropbox-hooks.h"
diff --git a/pkgs/applications/networking/instant-messengers/chatty/default.nix b/pkgs/applications/networking/instant-messengers/chatty/default.nix
index fc9c4c10b21..9728ea65c36 100644
--- a/pkgs/applications/networking/instant-messengers/chatty/default.nix
+++ b/pkgs/applications/networking/instant-messengers/chatty/default.nix
@@ -87,5 +87,7 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ dotlambda tomfitzhenry ];
     platforms = platforms.linux;
+    # Requires upgrade to libsoup3
+    broken = true;
   };
 }
diff --git a/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix b/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix
index 530e9377828..a820e4e0150 100644
--- a/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix
+++ b/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix
@@ -28,7 +28,7 @@
 , tl-expected
 , hunspell
 , glibmm
-, webkitgtk
+, webkitgtk_4_1
 , jemalloc
 , rnnoise
 , abseil-cpp
@@ -93,7 +93,7 @@ env.mkDerivation rec {
     substituteInPlace Telegram/ThirdParty/libtgvoip/os/linux/AudioPulse.cpp \
       --replace '"libpulse.so.0"' '"${libpulseaudio}/lib/libpulse.so.0"'
     substituteInPlace Telegram/lib_webview/webview/platform/linux/webview_linux_webkit_gtk.cpp \
-      --replace '"libwebkit2gtk-4.0.so.37"' '"${webkitgtk}/lib/libwebkit2gtk-4.0.so.37"'
+      --replace '"libwebkit2gtk-4.1.so.0"' '"${webkitgtk_4_1}/lib/libwebkit2gtk-4.1.so.0"'
   '';
 
   # We want to run wrapProgram manually (with additional parameters)
@@ -131,7 +131,7 @@ env.mkDerivation rec {
     tl-expected
     hunspell
     glibmm
-    webkitgtk
+    webkitgtk_4_1
     jemalloc
     rnnoise
     tg_owt
diff --git a/pkgs/applications/networking/mailreaders/evolution/evolution-ews/default.nix b/pkgs/applications/networking/mailreaders/evolution/evolution-ews/default.nix
index 337aeaba1a2..f97bbea0023 100644
--- a/pkgs/applications/networking/mailreaders/evolution/evolution-ews/default.nix
+++ b/pkgs/applications/networking/mailreaders/evolution/evolution-ews/default.nix
@@ -1,32 +1,55 @@
-{ lib, stdenv, fetchurl, gnome, cmake, gettext, intltool, pkg-config, evolution-data-server, evolution
-, sqlite, gtk3, webkitgtk, libgdata, libmspack }:
+{ stdenv
+, lib
+, fetchurl
+, gnome
+, cmake
+, gettext
+, intltool
+, pkg-config
+, evolution-data-server
+, evolution
+, gtk3
+, libsoup_3
+, libical
+, json-glib
+, libmspack
+, webkitgtk_4_1
+}:
 
 stdenv.mkDerivation rec {
   pname = "evolution-ews";
-  version = "3.44.4";
+  version = "3.46.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "TxgrBaE6wbezOwj7Bm6DlcqpW6fagIiGqpGxQp1tfbM=";
+    sha256 = "vZe6IFzEW60SmXvuE0ii+R2LAtcUWD159PrheU2sG4A=";
   };
 
-  nativeBuildInputs = [ cmake gettext intltool pkg-config ];
+  nativeBuildInputs = [
+    cmake
+    gettext
+    intltool
+    pkg-config
+  ];
 
   buildInputs = [
-    evolution-data-server evolution
-    sqlite libgdata
-    gtk3 webkitgtk
+    evolution-data-server
+    evolution
+    gtk3
+    libsoup_3
+    libical
+    json-glib
     libmspack
+    # For evolution-shell-3.0
+    webkitgtk_4_1
   ];
 
   cmakeFlags = [
-    # Building with libmspack as recommended: https://wiki.gnome.org/Apps/Evolution/Building#Build_evolution-ews
-    "-DWITH_MSPACK=ON"
     # don't try to install into ${evolution}
     "-DFORCE_INSTALL_PREFIX=ON"
   ];
 
-   passthru = {
+  passthru = {
     updateScript = gnome.updateScript {
       packageName = "evolution-ews";
       versionPolicy = "odd-unstable";
diff --git a/pkgs/applications/networking/mailreaders/evolution/evolution/default.nix b/pkgs/applications/networking/mailreaders/evolution/evolution/default.nix
index 19d6469e96a..6cac048cfd2 100644
--- a/pkgs/applications/networking/mailreaders/evolution/evolution/default.nix
+++ b/pkgs/applications/networking/mailreaders/evolution/evolution/default.nix
@@ -5,7 +5,7 @@
 , intltool
 , fetchurl
 , libxml2
-, webkitgtk
+, webkitgtk_4_1
 , highlight
 , pkg-config
 , gtk3
@@ -14,7 +14,6 @@
 , libpst
 , gspell
 , evolution-data-server
-, libgdata
 , libgweather
 , glib-networking
 , gsettings-desktop-schemas
@@ -23,7 +22,6 @@
 , shared-mime-info
 , libical
 , db
-, gcr
 , sqlite
 , gnome
 , gnome-desktop
@@ -34,7 +32,7 @@
 , nspr
 , icu
 , libcanberra-gtk3
-, geocode-glib
+, geocode-glib_2
 , cmark
 , bogofilter
 , gst_all_1
@@ -46,11 +44,11 @@
 
 stdenv.mkDerivation rec {
   pname = "evolution";
-  version = "3.44.4";
+  version = "3.46.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/evolution/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "8LFuerrTx5RaKcMi8X2rSgjWHpm9fMkbjfNQU8XBLow=";
+    sha256 = "4J6Sdrxrmr8NrTpOgT7qHQJfT2qvH6w7ew+IiVdCkT8=";
   };
 
   nativeBuildInputs = [
@@ -68,7 +66,6 @@ stdenv.mkDerivation rec {
     bogofilter
     db
     evolution-data-server
-    gcr
     gdk-pixbuf
     glib
     glib-networking
@@ -81,9 +78,8 @@ stdenv.mkDerivation rec {
     highlight
     icu
     libcanberra-gtk3
-    geocode-glib
+    geocode-glib_2
     cmark
-    libgdata
     libgweather
     libical
     libnotify
@@ -97,7 +93,7 @@ stdenv.mkDerivation rec {
     procps
     shared-mime-info
     sqlite
-    webkitgtk
+    webkitgtk_4_1
   ];
 
   propagatedUserEnvPkgs = [
@@ -106,13 +102,11 @@ stdenv.mkDerivation rec {
 
   cmakeFlags = [
     "-DENABLE_AUTOAR=OFF"
-    "-DENABLE_LIBCRYPTUI=OFF"
     "-DENABLE_YTNEF=OFF"
     "-DWITH_SPAMASSASSIN=${spamassassin}/bin/spamassassin"
     "-DWITH_SA_LEARN=${spamassassin}/bin/sa-learn"
     "-DWITH_BOGOFILTER=${bogofilter}/bin/bogofilter"
     "-DWITH_OPENLDAP=${openldap}"
-    "-DWITH_GWEATHER4=ON"
   ];
 
   requiredSystemFeatures = [
@@ -128,6 +122,7 @@ stdenv.mkDerivation rec {
     };
   };
 
+  PKG_CONFIG_CAMEL_1_2_CAMEL_PROVIDERDIR = "${placeholder "out"}/lib/evolution-data-server/camel-providers";
   PKG_CONFIG_LIBEDATASERVERUI_1_2_UIMODULEDIR = "${placeholder "out"}/lib/evolution-data-server/ui-modules";
 
   meta = with lib; {
diff --git a/pkgs/applications/networking/remote/remmina/default.nix b/pkgs/applications/networking/remote/remmina/default.nix
index 20496f38e86..8a39e31aa9c 100644
--- a/pkgs/applications/networking/remote/remmina/default.nix
+++ b/pkgs/applications/networking/remote/remmina/default.nix
@@ -3,7 +3,7 @@
 , freerdp, libssh, libgcrypt, gnutls, vte
 , pcre2, libdbusmenu-gtk3, libappindicator-gtk3
 , libvncserver, libpthreadstubs, libXdmcp, libxkbcommon
-, libsecret, libsoup, spice-protocol, spice-gtk, libepoxy, at-spi2-core
+, libsecret, libsoup, spice-protocol, spice-gtk_libsoup2, libepoxy, at-spi2-core
 , openssl, gsettings-desktop-schemas, json-glib, libsodium, webkitgtk, harfbuzz
 # The themes here are soft dependencies; only icons are missing without them.
 , gnome
@@ -31,7 +31,10 @@ stdenv.mkDerivation rec {
     freerdp libssh libgcrypt gnutls
     pcre2 libdbusmenu-gtk3 libappindicator-gtk3
     libvncserver libpthreadstubs libXdmcp libxkbcommon
-    libsoup spice-protocol spice-gtk libepoxy at-spi2-core
+    libsoup spice-protocol
+    # https://gitlab.com/Remmina/Remmina/-/issues/2754
+    spice-gtk_libsoup2
+    libepoxy at-spi2-core
     openssl gnome.adwaita-icon-theme json-glib libsodium webkitgtk
     harfbuzz python3
   ] ++ optionals withLibsecret [ libsecret ]
diff --git a/pkgs/applications/office/elementary-planner/default.nix b/pkgs/applications/office/elementary-planner/default.nix
index 54ad0753c72..1d0b06db248 100644
--- a/pkgs/applications/office/elementary-planner/default.nix
+++ b/pkgs/applications/office/elementary-planner/default.nix
@@ -99,6 +99,7 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ dtzWill ] ++ teams.pantheon.members;
     platforms = platforms.linux;
     mainProgram = "com.github.alainm23.planner";
+    broken = true; # https://github.com/alainm23/planner/issues/928
   };
 }
 
diff --git a/pkgs/applications/office/gnumeric/default.nix b/pkgs/applications/office/gnumeric/default.nix
index c9b4ef13912..e93be60741b 100644
--- a/pkgs/applications/office/gnumeric/default.nix
+++ b/pkgs/applications/office/gnumeric/default.nix
@@ -7,11 +7,11 @@ let
   inherit (python3Packages) python pygobject3;
 in stdenv.mkDerivation rec {
   pname = "gnumeric";
-  version = "1.12.52";
+  version = "1.12.53";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "c89zBJoiodgoUGJ1ssk3jsN8X/N7aLsfL0lPDWQAgjs=";
+    sha256 = "VWjkyNzqu5Ao8TYdEEVSL5Xwpx2qWelzy90tObrdTwI=";
   };
 
   configureFlags = [ "--disable-component" ];
diff --git a/pkgs/applications/terminal-emulators/blackbox-terminal/default.nix b/pkgs/applications/terminal-emulators/blackbox-terminal/default.nix
new file mode 100644
index 00000000000..67a719d0117
--- /dev/null
+++ b/pkgs/applications/terminal-emulators/blackbox-terminal/default.nix
@@ -0,0 +1,72 @@
+{ lib
+, stdenv
+, fetchFromGitLab
+, fetchurl
+, meson
+, ninja
+, pkg-config
+, vala
+, gtk4
+, vte-gtk4
+, json-glib
+, sassc
+, libadwaita
+, pcre2
+, libxml2
+, librsvg
+, callPackage
+, python3
+, gtk3
+, desktop-file-utils
+, wrapGAppsHook
+}:
+
+let
+  marble = callPackage ./marble.nix { };
+in
+stdenv.mkDerivation rec {
+  pname = "blackbox";
+  version = "0.12.0";
+
+  src = fetchFromGitLab {
+    domain = "gitlab.gnome.org";
+    owner = "raggesilver";
+    repo = "blackbox";
+    rev = "v${version}";
+    sha256 = "sha256-8u4qHC8+3rKDFNdg5kI48dBgAm3d6ESXN5H9aT/nIBY=";
+  };
+
+  postPatch = ''
+    patchShebangs build-aux/meson/postinstall.py
+  '';
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+    vala
+    sassc
+    wrapGAppsHook
+    python3
+    gtk3 # For gtk-update-icon-cache
+    desktop-file-utils # For update-desktop-database
+  ];
+  buildInputs = [
+    gtk4
+    vte-gtk4
+    json-glib
+    marble
+    libadwaita
+    pcre2
+    libxml2
+    librsvg
+  ];
+
+  meta = with lib; {
+    description = "Beautiful GTK 4 terminal";
+    homepage = "https://gitlab.gnome.org/raggesilver/blackbox";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ chuangzhu ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/terminal-emulators/blackbox-terminal/marble.nix b/pkgs/applications/terminal-emulators/blackbox-terminal/marble.nix
new file mode 100644
index 00000000000..6d100c0894e
--- /dev/null
+++ b/pkgs/applications/terminal-emulators/blackbox-terminal/marble.nix
@@ -0,0 +1,45 @@
+{ lib
+, stdenv
+, fetchFromGitLab
+, meson
+, ninja
+, pkg-config
+, vala
+, gobject-introspection
+, gtk4
+, gtk3
+, desktop-file-utils
+}:
+
+stdenv.mkDerivation {
+  pname = "marble";
+  version = "unstable-2022-04-20";
+
+  src = fetchFromGitLab {
+    domain = "gitlab.gnome.org";
+    owner = "raggesilver";
+    repo = "marble";
+    # Latest commit from the 'wip/gtk4' branch
+    rev = "6dcc6fefa35f0151b0549c01bd774750fe6bdef8";
+    sha256 = "sha256-0VJ9nyjWOOdLBm3ufleS/xcAS5YsSedJ2NtBjyM3uaY=";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+    vala
+    gtk3 # For gtk-update-icon-cache
+    desktop-file-utils # For update-desktop-database
+    gobject-introspection # For g-ir-compiler
+  ];
+  buildInputs = [ gtk4 ];
+
+  meta = with lib; {
+    description = "Raggesilver's GTK library";
+    homepage = "https://gitlab.gnome.org/raggesilver/marble";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ chuangzhu ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/terminal-emulators/gnome-console/default.nix b/pkgs/applications/terminal-emulators/gnome-console/default.nix
index 790aa172592..85ee654a989 100644
--- a/pkgs/applications/terminal-emulators/gnome-console/default.nix
+++ b/pkgs/applications/terminal-emulators/gnome-console/default.nix
@@ -23,6 +23,7 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-console";
+  # Do not upgrade until https://gitlab.gnome.org/GNOME/vte/-/issues/2584 is resolved!
   version = "42.2";
 
   src = fetchurl {
@@ -45,8 +46,6 @@ stdenv.mkDerivation rec {
     libhandy
     pcre2
     vte
-  ] ++ lib.optionals stdenv.isLinux [
-    gnome.nautilus
   ];
 
   nativeBuildInputs = [
@@ -61,7 +60,7 @@ stdenv.mkDerivation rec {
     wrapGAppsHook
   ];
 
-  mesonFlags = lib.optionals (!stdenv.isLinux) [
+  mesonFlags = [
     "-Dnautilus=disabled"
   ];
 
diff --git a/pkgs/applications/video/entangle/default.nix b/pkgs/applications/video/entangle/default.nix
index 761a3849c31..b163fc2aa60 100644
--- a/pkgs/applications/video/entangle/default.nix
+++ b/pkgs/applications/video/entangle/default.nix
@@ -33,6 +33,7 @@
 , libxkbcommon
 , orc
 , pcre
+, pcre2
 , udev
 , util-linux
 , xorg
@@ -94,7 +95,8 @@ stdenv.mkDerivation rec {
     libunwind
     libxkbcommon
     orc
-    pcre
+    pcre # required by libselinux before we USE_PCRE2
+    pcre2 # required by glib-2.0
     udev
     util-linux
     zstd
diff --git a/pkgs/applications/video/video-trimmer/default.nix b/pkgs/applications/video/video-trimmer/default.nix
index dbeb85821de..230654d9957 100644
--- a/pkgs/applications/video/video-trimmer/default.nix
+++ b/pkgs/applications/video/video-trimmer/default.nix
@@ -3,7 +3,6 @@
 , fetchFromGitLab
 , fetchpatch
 , rustPlatform
-, gnome
 , pkg-config
 , meson
 , wrapGAppsHook4
diff --git a/pkgs/applications/virtualization/virt-viewer/default.nix b/pkgs/applications/virtualization/virt-viewer/default.nix
index 95909e36d0c..ed882709aa1 100644
--- a/pkgs/applications/virtualization/virt-viewer/default.nix
+++ b/pkgs/applications/virtualization/virt-viewer/default.nix
@@ -19,7 +19,8 @@
 , pkg-config
 , python3
 , shared-mime-info
-, spice-gtk ? null
+# https://gitlab.com/virt-viewer/virt-viewer/-/issues/88
+, spice-gtk_libsoup2 ? null
 , spice-protocol ? null
 , spiceSupport ? true
 , vte
@@ -29,7 +30,7 @@
 assert spiceSupport -> (
   gdbm != null
   && libcap != null
-  && spice-gtk != null
+  && spice-gtk_libsoup2 != null
   && spice-protocol != null
 );
 
@@ -78,12 +79,12 @@ stdenv.mkDerivation rec {
   ] ++ optionals spiceSupport [
     gdbm
     libcap
-    spice-gtk
+    spice-gtk_libsoup2
     spice-protocol
   ];
 
   # Required for USB redirection PolicyKit rules file
-  propagatedUserEnvPkgs = optional spiceSupport spice-gtk;
+  propagatedUserEnvPkgs = optional spiceSupport spice-gtk_libsoup2;
 
   strictDeps = true;
 
diff --git a/pkgs/data/documentation/gnome-user-docs/default.nix b/pkgs/data/documentation/gnome-user-docs/default.nix
index db177006a3d..378f33be252 100644
--- a/pkgs/data/documentation/gnome-user-docs/default.nix
+++ b/pkgs/data/documentation/gnome-user-docs/default.nix
@@ -9,11 +9,11 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-user-docs";
-  version = "42.0";
+  version = "43.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-user-docs/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "srJ9oEEAu90vTw5bw48tBW2V+jZWcgFj9kNqMWfV6QU=";
+    sha256 = "NgcWDv/W+R4lqHmLV977IJndcLj+5Ofi8g8mN6woyu4=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/desktops/gnome/apps/cheese/default.nix b/pkgs/desktops/gnome/apps/cheese/default.nix
index a6d70d162c0..4001e358e85 100644
--- a/pkgs/desktops/gnome/apps/cheese/default.nix
+++ b/pkgs/desktops/gnome/apps/cheese/default.nix
@@ -34,13 +34,13 @@
 
 stdenv.mkDerivation rec {
   pname = "cheese";
-  version = "41.1";
+  version = "43.alpha";
 
   outputs = [ "out" "man" "devdoc" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/cheese/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "UilgyihzD/ZkOQcLBEGMngpLtVVg11v+CLIY2ixn5Uc=";
+    sha256 = "utrp972m+lch2regi4I3p15TJcDJpmlJj/VPdyFG5M8=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/desktops/gnome/apps/file-roller/default.nix b/pkgs/desktops/gnome/apps/file-roller/default.nix
index df8e9548c35..4c876e39db1 100644
--- a/pkgs/desktops/gnome/apps/file-roller/default.nix
+++ b/pkgs/desktops/gnome/apps/file-roller/default.nix
@@ -1,6 +1,7 @@
 { lib
 , stdenv
 , fetchurl
+, fetchpatch
 , desktop-file-utils
 , gettext
 , glibcLocales
@@ -12,29 +13,26 @@
 , python3
 , wrapGAppsHook
 , cpio
-, file
 , glib
 , gnome
 , gtk3
 , libhandy
 , json-glib
 , libarchive
-, libnotify
+, libportal-gtk3
 , nautilus
 , unzip
 }:
 
 stdenv.mkDerivation rec {
   pname = "file-roller";
-  version = "3.42.0";
+  version = "43.0";
 
   src = fetchurl {
-    url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "HEOObVPsEP9PLrWyLXu/KKfCqElXq2SnUcHN88UjAsc=";
+    url = "mirror://gnome/sources/file-roller/${lib.versions.major version}/file-roller-${version}.tar.xz";
+    sha256 = "KYcp/b252oEywLvGCQdRfWVoWwVhiuBRZzNeZIT1c6E=";
   };
 
-  LANG = "en_US.UTF-8"; # postinstall.py
-
   nativeBuildInputs = [
     desktop-file-utils
     gettext
@@ -50,22 +48,16 @@ stdenv.mkDerivation rec {
 
   buildInputs = [
     cpio
-    file
     glib
-    gnome.adwaita-icon-theme
     gtk3
     libhandy
     json-glib
     libarchive
-    libnotify
+    libportal-gtk3
     nautilus
   ];
 
-  PKG_CONFIG_LIBNAUTILUS_EXTENSION_EXTENSIONDIR = "${placeholder "out"}/lib/nautilus/extensions-3.0";
-
   postPatch = ''
-    chmod +x postinstall.py # patchShebangs requires executable file
-    patchShebangs postinstall.py
     patchShebangs data/set-mime-type-entry.py
   '';
 
diff --git a/pkgs/desktops/gnome/apps/gedit/default.nix b/pkgs/desktops/gnome/apps/gedit/default.nix
index 624ccc36d67..10f39ef94b4 100644
--- a/pkgs/desktops/gnome/apps/gedit/default.nix
+++ b/pkgs/desktops/gnome/apps/gedit/default.nix
@@ -25,11 +25,11 @@
 
 stdenv.mkDerivation rec {
   pname = "gedit";
-  version = "42.2";
+  version = "43.alpha";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gedit/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "PGIpER8KwGauRJZJIHkdEmX1u7VrC9lJppt7EmH8j8o=";
+    sha256 = "K3iOqhbYeeOVdGmS/OdmC5WtIpQ5OgHs0t5CzdWW95o=";
   };
 
   patches = [
diff --git a/pkgs/desktops/gnome/apps/ghex/default.nix b/pkgs/desktops/gnome/apps/ghex/default.nix
index 58659d1748e..f1072dde8db 100644
--- a/pkgs/desktops/gnome/apps/ghex/default.nix
+++ b/pkgs/desktops/gnome/apps/ghex/default.nix
@@ -12,21 +12,23 @@
 , itstool
 , libxml2
 , gtk4
+, libadwaita
 , glib
 , atk
 , gobject-introspection
+, vala
 , wrapGAppsHook4
 }:
 
 stdenv.mkDerivation rec {
   pname = "ghex";
-  version = "42.3";
+  version = "43.0";
 
   outputs = [ "out" "dev" "devdoc" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/ghex/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "rdQPirJJIdsw0nvljwAnMgGXfYf9yNeezq36iw41Te8=";
+    sha256 = "hmwGIsZv21rSpHXpz8zLIZocZDHwCayyKR1D8hQLFH4=";
   };
 
   nativeBuildInputs = [
@@ -38,11 +40,13 @@ stdenv.mkDerivation rec {
     pkg-config
     gi-docgen
     gobject-introspection
+    vala
     wrapGAppsHook4
   ];
 
   buildInputs = [
     gtk4
+    libadwaita
     atk
     glib
   ];
@@ -54,6 +58,7 @@ stdenv.mkDerivation rec {
 
   mesonFlags = [
     "-Dgtk_doc=true"
+    "-Dvapi=true"
   ] ++ lib.optionals stdenv.isDarwin [
     # mremap does not exist on darwin
     "-Dmmap-buffer-backend=false"
diff --git a/pkgs/desktops/gnome/apps/gnome-boxes/default.nix b/pkgs/desktops/gnome/apps/gnome-boxes/default.nix
index 0f0d8518e92..08679b94e2f 100644
--- a/pkgs/desktops/gnome/apps/gnome-boxes/default.nix
+++ b/pkgs/desktops/gnome/apps/gnome-boxes/default.nix
@@ -1,4 +1,5 @@
-{ lib, stdenv
+{ stdenv
+, lib
 , fetchurl
 , meson
 , ninja
@@ -11,15 +12,12 @@
 , gobject-introspection
 , libxml2
 , gtk3
-, gtksourceview4
-, gtk-vnc
 , libvirt
 , spice-gtk
-, python3
 , appstream-glib
 , spice-protocol
 , libhandy
-, libsoup
+, libsoup_3
 , libosinfo
 , systemd
 , tracker
@@ -45,7 +43,7 @@
 , numactl
 , libapparmor
 , json-glib
-, webkitgtk
+, webkitgtk_4_1
 , vte
 , glib-networking
 , qemu-utils
@@ -53,11 +51,11 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-boxes";
-  version = "42.3";
+  version = "43.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "Vu/3+vgwD6oc4U+An468Knu02RWvx7EnNxKXkWBbYNM=";
+    sha256 = "V0UFCWQUyCC4COzQ9x4tGakzI1HhKj3YJvdi5DK/ayY=";
   };
 
   patches = [
@@ -70,16 +68,18 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [
     appstream-glib # for appstream-util
-    desktop-file-utils
     gettext
     gobject-introspection
     itstool
     meson
     ninja
     pkg-config
-    python3
     vala
     wrapGAppsHook
+    # For post install script
+    glib
+    gtk3
+    desktop-file-utils
   ];
 
   # Required for USB redirection PolicyKit rules file
@@ -95,9 +95,7 @@ stdenv.mkDerivation rec {
     glib-networking
     gmp
     gnome.adwaita-icon-theme
-    gtk-vnc
     gtk3
-    gtksourceview4
     json-glib
     libapparmor
     libarchive
@@ -108,7 +106,7 @@ stdenv.mkDerivation rec {
     libosinfo
     librsvg
     libsecret
-    libsoup
+    libsoup_3
     libusb1
     libvirt
     libvirt-glib
@@ -120,7 +118,7 @@ stdenv.mkDerivation rec {
     tracker
     tracker-miners
     vte
-    webkitgtk
+    webkitgtk_4_1
     yajl
   ];
 
@@ -128,11 +126,6 @@ stdenv.mkDerivation rec {
     gappsWrapperArgs+=(--prefix PATH : "${lib.makeBinPath [ mtools cdrkit libcdio qemu-utils ]}")
   '';
 
-  postPatch = ''
-    chmod +x build-aux/post_install.py # patchShebangs requires executable file
-    patchShebangs build-aux/post_install.py
-  '';
-
   passthru = {
     updateScript = gnome.updateScript {
       packageName = pname;
diff --git a/pkgs/desktops/gnome/apps/gnome-calendar/default.nix b/pkgs/desktops/gnome/apps/gnome-calendar/default.nix
index 432980300d2..1f178d964f6 100644
--- a/pkgs/desktops/gnome/apps/gnome-calendar/default.nix
+++ b/pkgs/desktops/gnome/apps/gnome-calendar/default.nix
@@ -7,14 +7,14 @@
 , wrapGAppsHook4
 , libgweather
 , geoclue2
-, geocode-glib
+, geocode-glib_2
 , gettext
 , libxml2
 , gnome
 , gtk4
-, evolution-data-server
+, evolution-data-server-gtk4
 , libical
-, libsoup
+, libsoup_3
 , glib
 , gsettings-desktop-schemas
 , libadwaita
@@ -22,11 +22,11 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-calendar";
-  version = "42.2";
+  version = "43.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "rnzGOq6WoCqlmbbWo0hYX0529ylTbznvt0QwKwW1+70=";
+    sha256 = "CeXA+TYPP4Vt6qfA2zD12rAVEYDfQYOAfGzzYCmS9cw=";
   };
 
   nativeBuildInputs = [
@@ -40,13 +40,13 @@ stdenv.mkDerivation rec {
 
   buildInputs = [
     gtk4
-    evolution-data-server # waiting for GTK4 port
+    evolution-data-server-gtk4
     libical
-    libsoup
+    libsoup_3
     glib
     libgweather
     geoclue2
-    geocode-glib
+    geocode-glib_2
     gsettings-desktop-schemas
     libadwaita
   ];
diff --git a/pkgs/desktops/gnome/apps/gnome-characters/default.nix b/pkgs/desktops/gnome/apps/gnome-characters/default.nix
index b4e9eee9712..9dc7d113571 100644
--- a/pkgs/desktops/gnome/apps/gnome-characters/default.nix
+++ b/pkgs/desktops/gnome/apps/gnome-characters/default.nix
@@ -23,11 +23,11 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-characters";
-  version = "42.0";
+  version = "43.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-characters/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "XaD/uBb4prRPMDdEyoJ6NAgBGMHJONjXmvF7f+Z5gPg=";
+    sha256 = "poW5y/k1Re05EWjEHJ2L+DeFq7+0iWdYJ+5zQkcbqsg=";
   };
 
   patches = [
@@ -63,10 +63,6 @@ stdenv.mkDerivation rec {
   postPatch = ''
     chmod +x meson_post_install.py # patchShebangs requires executable file
     patchShebangs meson_post_install.py
-
-    # https://gitlab.gnome.org/GNOME/gnome-characters/-/merge_requests/70
-    substituteInPlace meson_post_install.py \
-      --replace "gtk-update-icon-cache" "gtk4-update-icon-cache"
   '';
 
   dontWrapGApps = true;
diff --git a/pkgs/desktops/gnome/apps/gnome-clocks/default.nix b/pkgs/desktops/gnome/apps/gnome-clocks/default.nix
index 2700f769b08..488922f2910 100644
--- a/pkgs/desktops/gnome/apps/gnome-clocks/default.nix
+++ b/pkgs/desktops/gnome/apps/gnome-clocks/default.nix
@@ -5,10 +5,10 @@
 , ninja
 , gettext
 , pkg-config
-, wrapGAppsHook
+, wrapGAppsHook4
 , itstool
 , desktop-file-utils
-, vala_0_56
+, vala
 , gobject-introspection
 , libxml2
 , gtk4
@@ -17,7 +17,7 @@
 , sound-theme-freedesktop
 , gsettings-desktop-schemas
 , gnome-desktop
-, geocode-glib
+, geocode-glib_2
 , gnome
 , gdk-pixbuf
 , geoclue2
@@ -27,21 +27,21 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-clocks";
-  version = "42.0";
+  version = "43.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-clocks/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "DnEY20oDLjzqMhLZjLuCjWt88i/gXgxfyLORxqPdb+A=";
+    sha256 = "sHQ7cNAIgKo7zcx/fzTIwihiV7XIFzfU+YG8jE9PmB0=";
   };
 
   nativeBuildInputs = [
-    vala_0_56
+    vala
     meson
     ninja
     pkg-config
     gettext
     itstool
-    wrapGAppsHook
+    wrapGAppsHook4
     desktop-file-utils
     libxml2
     gobject-introspection # for finding vapi files
@@ -56,7 +56,7 @@ stdenv.mkDerivation rec {
     gsettings-desktop-schemas
     gdk-pixbuf
     gnome-desktop
-    geocode-glib
+    geocode-glib_2
     geoclue2
     libgweather
     gsound
diff --git a/pkgs/desktops/gnome/apps/gnome-connections/default.nix b/pkgs/desktops/gnome/apps/gnome-connections/default.nix
index 165004860c4..6fc3519e5e5 100644
--- a/pkgs/desktops/gnome/apps/gnome-connections/default.nix
+++ b/pkgs/desktops/gnome/apps/gnome-connections/default.nix
@@ -4,7 +4,7 @@
 , meson
 , ninja
 , pkg-config
-, vala_0_56
+, vala
 , gettext
 , itstool
 , python3
@@ -23,18 +23,18 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-connections";
-  version = "42.1.2";
+  version = "43.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    hash = "sha256-2ObnJ0EJHYkt/IQoH2JVUdBWjNSC1I21ik7bivoTd7Y=";
+    hash = "sha256-hdrYL5PAsvYJ/o7H7N7scGAKVWEq/A4/AndMJaC7MJ8=";
   };
 
   nativeBuildInputs = [
     meson
     ninja
     pkg-config
-    vala_0_56
+    vala
     gettext
     itstool
     python3
diff --git a/pkgs/desktops/gnome/apps/gnome-logs/default.nix b/pkgs/desktops/gnome/apps/gnome-logs/default.nix
index 105194123d0..61cc39d61df 100644
--- a/pkgs/desktops/gnome/apps/gnome-logs/default.nix
+++ b/pkgs/desktops/gnome/apps/gnome-logs/default.nix
@@ -7,61 +7,61 @@
 , pkg-config
 , gnome
 , glib
-, gtk3
-, wrapGAppsHook
+, gtk4
+, desktop-file-utils
+, wrapGAppsHook4
 , gettext
 , itstool
-, libhandy
+, libadwaita
 , libxml2
 , libxslt
-, docbook_xsl
+, docbook-xsl-nons
 , docbook_xml_dtd_43
 , systemd
-, python3
 , gsettings-desktop-schemas
 }:
 
 stdenv.mkDerivation rec {
   pname = "gnome-logs";
-  version = "42.0";
+  version = "43.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-logs/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "TV5FFp1r9DkC16npoHk8kW65LaumuoWzXI629nLNq9c=";
+    sha256 = "M6k7l17CfISHglBIqnuK99XCNWWrz3t0yQKrez7CCGE=";
   };
 
   patches = [
-    # meson: Remove redundant check for glib-mkenums
+    # Remove GTK 3 depndency
+    # https://gitlab.gnome.org/GNOME/gnome-logs/-/merge_requests/46
     (fetchpatch {
-      url = "https://gitlab.gnome.org/GNOME/gnome-logs/-/commit/01386ce9a69652a00bdb163e569b51150ca8903e.diff";
-      sha256 = "sha256-tJJEai4Jw8aVcyhsFTYILiUV1xhsysX/rleeLP13DVM=";
-    })
-    # meson: remove redundant check for pkg-config
-    (fetchpatch {
-      url = "https://gitlab.gnome.org/GNOME/gnome-logs/-/commit/ad350729a8b81f2c8eb2122de0956bb2199b48da.patch";
-      sha256 = "sha256-5qGYyKM+B9XNZKytWH8K4QfSuBf7wpaPCWT6YIO5FGY=";
+      url = "https://gitlab.gnome.org/GNOME/gnome-logs/-/commit/32193a1385b95012bc8e7007ada89566bd63697d.patch";
+      sha256 = "5WsTnfVpWZquU65pSLnk2M6VnY+qQPUi7A0cqMmzfrU=";
+      postFetch = ''
+        substituteInPlace "$out" --replace "43.1" "43.0"
+      '';
     })
   ];
 
   nativeBuildInputs = [
-    python3
     meson
     ninja
     pkg-config
-    wrapGAppsHook
+    wrapGAppsHook4
     gettext
     itstool
     libxml2
     libxslt
-    docbook_xsl
+    docbook-xsl-nons
     docbook_xml_dtd_43
     glib
+    gtk4
+    desktop-file-utils
   ];
 
   buildInputs = [
     glib
-    gtk3
-    libhandy
+    gtk4
+    libadwaita
     systemd
     gsettings-desktop-schemas
   ];
@@ -70,11 +70,6 @@ stdenv.mkDerivation rec {
     "-Dman=true"
   ];
 
-  postPatch = ''
-    chmod +x meson_post_install.py
-    patchShebangs meson_post_install.py
-  '';
-
   doCheck = true;
 
   passthru = {
diff --git a/pkgs/desktops/gnome/apps/gnome-maps/default.nix b/pkgs/desktops/gnome/apps/gnome-maps/default.nix
index 1b419aa892e..9d455bd9be2 100644
--- a/pkgs/desktops/gnome/apps/gnome-maps/default.nix
+++ b/pkgs/desktops/gnome/apps/gnome-maps/default.nix
@@ -7,34 +7,31 @@
 , python3
 , pkg-config
 , gnome
-, gtk3
+, glib
+, gtk4
 , gobject-introspection
 , gdk-pixbuf
-, librest
-, librsvg
+, librest_1_0
 , libgweather
 , geoclue2
-, wrapGAppsHook
-, folks
-, libchamplain
-, libsoup
+, wrapGAppsHook4
+, desktop-file-utils
+, libshumate
+, libsecret
+, libsoup_3
 , gsettings-desktop-schemas
-, webkitgtk
 , gjs
-, libgee
-, libhandy
-, geocode-glib
-, evolution-data-server
-, gnome-online-accounts
+, libadwaita
+, geocode-glib_2
 }:
 
 stdenv.mkDerivation rec {
   pname = "gnome-maps";
-  version = "42.3";
+  version = "43.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "sha256-5FZGf6zzyP0QyThrXnTEPZWVrZ+3Ulf32gFK+YPWnNE=";
+    sha256 = "sha256-CGjPz7eMOiesW+YM2E0wuz08KMiFqY+qCeN/o6UyNOQ=";
   };
 
   doCheck = true;
@@ -44,35 +41,31 @@ stdenv.mkDerivation rec {
     meson
     ninja
     pkg-config
-    python3
-    wrapGAppsHook
+    wrapGAppsHook4
+    gobject-introspection
+    # For post install script
+    desktop-file-utils
+    glib
+    gtk4
   ];
 
   buildInputs = [
-    evolution-data-server
-    folks
     gdk-pixbuf
+    glib
     geoclue2
-    geocode-glib
+    geocode-glib_2
     gjs
-    gnome-online-accounts
-    gobject-introspection
     gsettings-desktop-schemas
-    gtk3
-    libchamplain
-    libgee
+    gtk4
+    libshumate
     libgweather
-    libhandy
-    librest
-    librsvg
-    libsoup
-    webkitgtk
+    libadwaita
+    librest_1_0
+    libsecret
+    libsoup_3
   ];
 
   postPatch = ''
-    chmod +x meson_post_install.py # patchShebangs requires executable file
-    patchShebangs meson_post_install.py
-
     # The .service file isn't wrapped with the correct environment
     # so misses GIR files when started. By re-pointing from the gjs
     # entry point to the wrapped binary we get back to a wrapped
diff --git a/pkgs/desktops/gnome/apps/gnome-power-manager/default.nix b/pkgs/desktops/gnome/apps/gnome-power-manager/default.nix
index a883067e780..eb0070344bd 100644
--- a/pkgs/desktops/gnome/apps/gnome-power-manager/default.nix
+++ b/pkgs/desktops/gnome/apps/gnome-power-manager/default.nix
@@ -1,4 +1,5 @@
-{ lib, stdenv
+{ stdenv
+, lib
 , gettext
 , fetchurl
 , pkg-config
@@ -10,24 +11,16 @@
 , python3
 , desktop-file-utils
 , wrapGAppsHook
-, gnome }:
+, gnome
+}:
 
-let
+stdenv.mkDerivation rec {
   pname = "gnome-power-manager";
-  version = "3.32.0";
-in stdenv.mkDerivation rec {
-  name = "${pname}-${version}";
+  version = "43.0";
 
   src = fetchurl {
-    url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${name}.tar.xz";
-    sha256 = "0drfn3wcc8l4n07qwv6p0rw2dwcd00hwzda282q62l6sasks2b2g";
-  };
-
-  passthru = {
-    updateScript = gnome.updateScript {
-      packageName = pname;
-      attrPath = "gnome.${pname}";
-    };
+    url = "mirror://gnome/sources/gnome-power-manager/${lib.versions.major version}/gnome-power-manager-${version}.tar.xz";
+    sha256 = "faq0i73bMOnfKrplDLYNBeZnyfiFrOagoeeVDgy90y8=";
   };
 
   nativeBuildInputs = [
@@ -39,7 +32,7 @@ in stdenv.mkDerivation rec {
 
     # needed by meson_post_install.sh
     python3
-    glib.dev
+    glib
     desktop-file-utils
   ];
 
@@ -47,9 +40,15 @@ in stdenv.mkDerivation rec {
     gtk3
     glib
     upower
-    gnome.adwaita-icon-theme
   ];
 
+  passthru = {
+    updateScript = gnome.updateScript {
+      packageName = "gnome-power-manager";
+      attrPath = "gnome.gnome-power-manager";
+    };
+  };
+
   meta = with lib; {
     homepage = "https://gitlab.gnome.org/GNOME/gnome-power-manager";
     description = "View battery and power statistics provided by UPower";
diff --git a/pkgs/desktops/gnome/apps/gnome-sound-recorder/default.nix b/pkgs/desktops/gnome/apps/gnome-sound-recorder/default.nix
index cd7259c3ae9..c8d455ae216 100644
--- a/pkgs/desktops/gnome/apps/gnome-sound-recorder/default.nix
+++ b/pkgs/desktops/gnome/apps/gnome-sound-recorder/default.nix
@@ -20,11 +20,11 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-sound-recorder";
-  version = "42.0";
+  version = "43.beta";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "TAjDFSgvPr96LabyDg/58McdqlIp/NL+C1wKqqoG8K0=";
+    sha256 = "bbbbmjsbUv0KtU+aW/Tymctx5SoTrF/fw+dOtGmFpOY=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/desktops/gnome/apps/gnome-text-editor/default.nix b/pkgs/desktops/gnome/apps/gnome-text-editor/default.nix
index faf32952cfc..2e813fc10de 100644
--- a/pkgs/desktops/gnome/apps/gnome-text-editor/default.nix
+++ b/pkgs/desktops/gnome/apps/gnome-text-editor/default.nix
@@ -15,6 +15,7 @@
 , icu
 , itstool
 , libadwaita
+, editorconfig-core-c
 , libxml2
 , pcre
 , appstream-glib
@@ -23,11 +24,11 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-text-editor";
-  version = "42.2";
+  version = "43.1";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-text-editor/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "sha256-5W1KjNy86KjxwIgbRd55n4slIF7Ay/ImnlMgJXYcxdo=";
+    sha256 = "sha256-lzpLDeto+fkaVKTdQVtq/em1rj7mhLx2FHH5QpD59ss=";
   };
 
   nativeBuildInputs = [
@@ -50,6 +51,7 @@ stdenv.mkDerivation rec {
     gtk4
     gtksourceview5
     libadwaita
+    editorconfig-core-c
     pcre
   ];
 
diff --git a/pkgs/desktops/gnome/apps/gnome-weather/default.nix b/pkgs/desktops/gnome/apps/gnome-weather/default.nix
index c04cd6f2dc9..bc0fec6cfa7 100644
--- a/pkgs/desktops/gnome/apps/gnome-weather/default.nix
+++ b/pkgs/desktops/gnome/apps/gnome-weather/default.nix
@@ -18,11 +18,11 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-weather";
-  version = "42.0";
+  version = "43.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-weather/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "V57mkdhT5bs/9Q6Me0P4Wundfls6ZJ4CwlSi2bgHtGU=";
+    sha256 = "LxERf3VVK/G7ngHwHPs8L82mo/aQcP/gUZoHYVMrjyY=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/desktops/gnome/apps/polari/default.nix b/pkgs/desktops/gnome/apps/polari/default.nix
index 84ec0e0d2a8..c81068477e3 100644
--- a/pkgs/desktops/gnome/apps/polari/default.nix
+++ b/pkgs/desktops/gnome/apps/polari/default.nix
@@ -17,8 +17,8 @@
 , gtk3
 , glib
 , libsecret
-, libsoup
-, webkitgtk
+, libsoup_3
+, webkitgtk_4_1
 , gobject-introspection
 , appstream-glib
 , gnome
@@ -30,11 +30,11 @@
 
 stdenv.mkDerivation rec {
   pname = "polari";
-  version = "42.1";
+  version = "43.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "r5DPCEjsvkB+sjBkBINpdP048xww1HT0bRspIYqWaz0=";
+    sha256 = "F6GS3uYfWOPNRHJQC+cBGUa5n75SvFrBJPqurC8zQUc=";
   };
 
   patches = [
@@ -74,8 +74,8 @@ stdenv.mkDerivation rec {
     gspell
     gdk-pixbuf
     libsecret
-    libsoup
-    webkitgtk # for thumbnailer
+    libsoup_3
+    webkitgtk_4_1 # for thumbnailer
   ];
 
   postFixup = ''
diff --git a/pkgs/desktops/gnome/core/adwaita-icon-theme/default.nix b/pkgs/desktops/gnome/core/adwaita-icon-theme/default.nix
index 5e36cd109e4..069d1d6040c 100644
--- a/pkgs/desktops/gnome/core/adwaita-icon-theme/default.nix
+++ b/pkgs/desktops/gnome/core/adwaita-icon-theme/default.nix
@@ -1,35 +1,42 @@
-{ lib, stdenv, fetchurl, fetchpatch, pkg-config, autoreconfHook, intltool, gnome
-, iconnamingutils, gtk3, gdk-pixbuf, librsvg, hicolor-icon-theme }:
+{ lib
+, stdenv
+, fetchurl
+, pkg-config
+, autoreconfHook
+, gnome
+, gtk3
+, gdk-pixbuf
+, librsvg
+, hicolor-icon-theme
+}:
 
 stdenv.mkDerivation rec {
   pname = "adwaita-icon-theme";
-  version = "42.0";
+  version = "43";
 
   src = fetchurl {
     url = "mirror://gnome/sources/adwaita-icon-theme/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "XoW1rcje5maQD8rycbpxf33LnQoD2W2uCPnL0n4YseA=";
+    sha256 = "LjrHfTKmqlVUFV3zfo8KDdVPxaZf1yHojVBflw2jLsY=";
   };
 
-  patches = [
-    (fetchpatch {
-      name = "reduce-build-parallelism.patch";
-      url = "https://gitlab.gnome.org/vcunat/adwaita-icon-theme/-/commit/27edeca7927eb2247d7385fccb3f0fd7787471e6.patch";
-      sha256 = "vDWuvz5yRhtn9obTtHRp6J7gJpXDZz1cajyquPGw53I=";
-    })
+  nativeBuildInputs = [
+    pkg-config
+    autoreconfHook
+    gtk3
   ];
 
-  # For convenience, we can specify adwaita-icon-theme only in packages
-  propagatedBuildInputs = [ hicolor-icon-theme ];
-
-  buildInputs = [ gdk-pixbuf librsvg ];
+  buildInputs = [
+    gdk-pixbuf
+    librsvg
+  ];
 
-  nativeBuildInputs = [ pkg-config autoreconfHook intltool iconnamingutils gtk3 ];
+  propagatedBuildInputs = [
+    # For convenience, we can specify adwaita-icon-theme only in packages
+    hicolor-icon-theme
+  ];
 
   dontDropIconThemeCache = true;
 
-  # remove a tree of dirs with no files within
-  postInstall = '' rm -rf "$out/locale" '';
-
   passthru = {
     updateScript = gnome.updateScript {
       packageName = "adwaita-icon-theme";
@@ -40,5 +47,6 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     platforms = with platforms; linux ++ darwin;
     maintainers = teams.gnome.members;
+    license = licenses.cc-by-sa-30;
   };
 }
diff --git a/pkgs/desktops/gnome/core/baobab/default.nix b/pkgs/desktops/gnome/core/baobab/default.nix
index 7c463e8ed28..8419aa17ea7 100644
--- a/pkgs/desktops/gnome/core/baobab/default.nix
+++ b/pkgs/desktops/gnome/core/baobab/default.nix
@@ -19,11 +19,11 @@
 
 stdenv.mkDerivation rec {
   pname = "baobab";
-  version = "42.0";
+  version = "43.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "Sxqr5rqxWCs/6nmigpvOfyQVu25QYvJTV67t1TF6UNw=";
+    sha256 = "UsaGQRj1aX9aVzaILc2ifbIuciC8SSg43uzGmSRs2yY=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/desktops/gnome/core/dconf-editor/default.nix b/pkgs/desktops/gnome/core/dconf-editor/default.nix
index 4c8607bb6f9..7cf366b7dc0 100644
--- a/pkgs/desktops/gnome/core/dconf-editor/default.nix
+++ b/pkgs/desktops/gnome/core/dconf-editor/default.nix
@@ -9,6 +9,7 @@
 , pkg-config
 , glib
 , gtk3
+, libhandy
 , gnome
 , python3
 , dconf
@@ -21,23 +22,17 @@
 
 stdenv.mkDerivation rec {
   pname = "dconf-editor";
-  version = "3.38.3";
+  version = "43.0";
 
   src = fetchurl {
-    url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "sha256-Vxr0x9rU8Em1PmzXKLea3fCMJ92ra8V7OW0hGGbueeM=";
+    url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
+    sha256 = "sha256-k1o8Lddswqk81a7ppU05R/sRHrOW9LY9xfC6j40JkTY=";
   };
 
   patches = [
     # Look for compiled schemas in NIX_GSETTINGS_OVERRIDES_DIR
     # environment variable, to match what we patched GLib to do.
     ./schema-override-variable.patch
-
-    # Fix build with Meson 0.61.0
-    (fetchpatch {
-      url = "https://gitlab.gnome.org/GNOME/dconf-editor/-/commit/56474378568e6ff4af8aa912810323e808c1d977.patch";
-      sha256 = "iFyJcskqcmvz7tp1Z9jM9f8WvAhD0L9Vx1hu2c402MA=";
-    })
   ];
 
   nativeBuildInputs = [
@@ -57,6 +52,7 @@ stdenv.mkDerivation rec {
   buildInputs = [
     glib
     gtk3
+    libhandy
     dconf
   ];
 
diff --git a/pkgs/desktops/gnome/core/eog/default.nix b/pkgs/desktops/gnome/core/eog/default.nix
index 3f9333aeb58..ccb4d439240 100644
--- a/pkgs/desktops/gnome/core/eog/default.nix
+++ b/pkgs/desktops/gnome/core/eog/default.nix
@@ -29,13 +29,13 @@
 
 stdenv.mkDerivation rec {
   pname = "eog";
-  version = "42.3";
+  version = "43.0";
 
   outputs = [ "out" "dev" "devdoc" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "sha256-MMGzwovG3ChU2Hjr0xoi6qFb+VnBNCBqKhkEGT5H9Do=";
+    sha256 = "sha256-pSovPrGju1ADijNikCvHlRY+GphnY+6C0gQk566EVG8=";
   };
 
   patches = [
diff --git a/pkgs/desktops/gnome/core/epiphany/default.nix b/pkgs/desktops/gnome/core/epiphany/default.nix
index 88cbbee0d0b..2a7c0323e09 100644
--- a/pkgs/desktops/gnome/core/epiphany/default.nix
+++ b/pkgs/desktops/gnome/core/epiphany/default.nix
@@ -15,19 +15,17 @@
 , libxml2
 , libxslt
 , itstool
-, webkitgtk
-, libsoup
+, webkitgtk_4_1
+, libsoup_3
 , glib-networking
 , libsecret
 , gnome-desktop
-, libnotify
 , libarchive
 , p11-kit
 , sqlite
 , gcr
 , isocodes
 , desktop-file-utils
-, python3
 , nettle
 , gdk-pixbuf
 , gst_all_1
@@ -40,11 +38,11 @@
 
 stdenv.mkDerivation rec {
   pname = "epiphany";
-  version = "42.3";
+  version = "43.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "cxbTxlAOgl2OVyk/pYBHxWcnvuFs1rasgE/+XZsilWA=";
+    sha256 = "tm1Jn57nJpbYPPhEElN3GBqVRVSkuzeFtzKTOArAwic=";
   };
 
   patches = lib.optionals withPantheon [
@@ -67,7 +65,6 @@ stdenv.mkDerivation rec {
     meson
     ninja
     pkg-config
-    python3
     wrapGAppsHook
     buildPackages.glib
     buildPackages.gtk3
@@ -92,15 +89,14 @@ stdenv.mkDerivation rec {
     libdazzle
     libhandy
     libportal-gtk3
-    libnotify
     libarchive
     libsecret
-    libsoup
+    libsoup_3
     libxml2
     nettle
     p11-kit
     sqlite
-    webkitgtk
+    webkitgtk_4_1
   ];
 
   # Tests need an X display
@@ -108,11 +104,6 @@ stdenv.mkDerivation rec {
     "-Dunit_tests=disabled"
   ];
 
-  postPatch = ''
-    chmod +x post_install.py # patchShebangs requires executable file
-    patchShebangs post_install.py
-  '';
-
   passthru = {
     updateScript = gnome.updateScript {
       packageName = pname;
diff --git a/pkgs/desktops/gnome/core/evince/default.nix b/pkgs/desktops/gnome/core/evince/default.nix
index 8f5a81f0bf5..7138b994763 100644
--- a/pkgs/desktops/gnome/core/evince/default.nix
+++ b/pkgs/desktops/gnome/core/evince/default.nix
@@ -31,7 +31,6 @@
 , gsettings-desktop-schemas
 , gnome-desktop
 , dbus
-, python3
 , texlive
 , gst_all_1
 , gi-docgen
@@ -43,20 +42,15 @@
 
 stdenv.mkDerivation rec {
   pname = "evince";
-  version = "42.3";
+  version = "43.0";
 
   outputs = [ "out" "dev" "devdoc" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/evince/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "Sa7PhFyUbJbbF7qJ11yAAsWuiWP1BKmwYm0SZ1kUZF4=";
+    sha256 = "Zr4N5LR7ETBIYQOYjMFSwErqlZULo+8W3CDC72toHUc=";
   };
 
-  postPatch = ''
-    chmod +x meson_post_install.py
-    patchShebangs meson_post_install.py
-  '';
-
   nativeBuildInputs = [
     appstream
     gettext
@@ -66,7 +60,6 @@ stdenv.mkDerivation rec {
     meson
     ninja
     pkg-config
-    python3
     wrapGAppsHook
     yelp-tools
   ];
diff --git a/pkgs/desktops/gnome/core/evolution-data-server/default.nix b/pkgs/desktops/gnome/core/evolution-data-server/default.nix
index a7d4673158b..73890d27a00 100644
--- a/pkgs/desktops/gnome/core/evolution-data-server/default.nix
+++ b/pkgs/desktops/gnome/core/evolution-data-server/default.nix
@@ -11,14 +11,13 @@
 , python3
 , gobject-introspection
 , gettext
-, libsoup
+, libsoup_3
 , libxml2
 , libsecret
 , icu
 , sqlite
 , tzdata
 , libcanberra-gtk3
-, gcr
 , p11-kit
 , db
 , nspr
@@ -33,29 +32,31 @@
 , ninja
 , libkrb5
 , openldap
-, webkitgtk
+, webkitgtk_4_1
+, webkitgtk_5_0
 , libaccounts-glib
 , json-glib
 , glib
 , gtk3
+, gtk4
+, withGtk3 ? true
+, withGtk4 ? false
 , libphonenumber
 , gnome-online-accounts
 , libgweather
-, libgdata
-, gsettings-desktop-schemas
 , boost
 , protobuf
 }:
 
 stdenv.mkDerivation rec {
   pname = "evolution-data-server";
-  version = "3.44.4";
+  version = "3.46.0";
 
   outputs = [ "out" "dev" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/evolution-data-server/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "wMZliDjVi6RgQqS55Qo7sRKWkeTNuEteugvzMLLMsus=";
+    sha256 = "5fooCVoYP3q1qSjjWoKDebSB3e+D7Ux7UaLjxK71zas=";
   };
 
   patches = [
@@ -67,8 +68,7 @@ stdenv.mkDerivation rec {
 
   prePatch = ''
     substitute ${./hardcode-gsettings.patch} hardcode-gsettings.patch \
-      --subst-var-by EDS_GSETTINGS_PATH ${glib.makeSchemaPath "$out" "${pname}-${version}"} \
-      --subst-var-by GDS_GSETTINGS_PATH ${glib.getSchemaPath gsettings-desktop-schemas}
+      --subst-var-by EDS_GSETTINGS_PATH ${glib.makeSchemaPath "$out" "${pname}-${version}"}
     patches="$patches $PWD/hardcode-gsettings.patch"
   '';
 
@@ -86,27 +86,27 @@ stdenv.mkDerivation rec {
 
   buildInputs = [
     glib
-    libsoup
-    libxml2
-    gtk3
+    libsoup_3
     gnome-online-accounts
-    gcr
     p11-kit
     libgweather
-    libgdata
     libaccounts-glib
-    json-glib
     icu
     sqlite
     libkrb5
     openldap
-    webkitgtk
     glib-networking
     libcanberra-gtk3
     pcre
     libphonenumber
     boost
     protobuf
+  ] ++ lib.optionals withGtk3 [
+    gtk3
+    webkitgtk_4_1
+  ] ++ lib.optionals withGtk4 [
+    gtk4
+    webkitgtk_5_0
   ];
 
   propagatedBuildInputs = [
@@ -115,8 +115,9 @@ stdenv.mkDerivation rec {
     nss
     nspr
     libical
-    libgdata # needed for GObject inspection, https://gitlab.gnome.org/GNOME/evolution-data-server/-/merge_requests/57/diffs
-    libsoup
+    libsoup_3
+    libxml2
+    json-glib
   ];
 
   cmakeFlags = [
@@ -125,7 +126,10 @@ stdenv.mkDerivation rec {
     "-DENABLE_INTROSPECTION=ON"
     "-DINCLUDE_INSTALL_DIR=${placeholder "dev"}/include"
     "-DWITH_PHONENUMBER=ON"
-    "-DWITH_GWEATHER4=ON"
+    "-DENABLE_GTK=${lib.boolToString withGtk3}"
+    "-DENABLE_EXAMPLES=${lib.boolToString withGtk3}"
+    "-DENABLE_CANBERRA=${lib.boolToString withGtk3}"
+    "-DENABLE_GTK4=${lib.boolToString withGtk4}"
   ];
 
   passthru = {
diff --git a/pkgs/desktops/gnome/core/evolution-data-server/hardcode-gsettings.cocci b/pkgs/desktops/gnome/core/evolution-data-server/hardcode-gsettings.cocci
index 9e60e892b71..8f72e4f5d94 100644
--- a/pkgs/desktops/gnome/core/evolution-data-server/hardcode-gsettings.cocci
+++ b/pkgs/desktops/gnome/core/evolution-data-server/hardcode-gsettings.cocci
@@ -24,7 +24,6 @@ e_s_d_schema_constants = [
 ]
 
 g_d_s_schema_constants = [
-    "\"org.gnome.system.proxy\"",
 ]
 
 def get_schema_directory(schema_path):
diff --git a/pkgs/desktops/gnome/core/evolution-data-server/hardcode-gsettings.patch b/pkgs/desktops/gnome/core/evolution-data-server/hardcode-gsettings.patch
index c756b4bcc2a..87d5ca56b7c 100644
--- a/pkgs/desktops/gnome/core/evolution-data-server/hardcode-gsettings.patch
+++ b/pkgs/desktops/gnome/core/evolution-data-server/hardcode-gsettings.patch
@@ -127,8 +127,32 @@ index 8dfff6d..cd88392 100644
  	uid = g_settings_get_string (settings, SELF_UID_KEY);
  	g_object_unref (settings);
  
+diff --git a/src/addressbook/libedata-book/e-book-meta-backend.c b/src/addressbook/libedata-book/e-book-meta-backend.c
+index d3f130e..9e8edd4 100644
+--- a/src/addressbook/libedata-book/e-book-meta-backend.c
++++ b/src/addressbook/libedata-book/e-book-meta-backend.c
+@@ -135,7 +135,18 @@ ebmb_is_power_saver_enabled (void)
+ 	GSettings *settings;
+ 	gboolean enabled = FALSE;
+ 
+-	settings = g_settings_new ("org.gnome.evolution-data-server");
++	{
++		g_autoptr(GSettingsSchemaSource) schema_source;
++		g_autoptr(GSettingsSchema) schema;
++		schema_source = g_settings_schema_source_new_from_directory("@EDS_GSETTINGS_PATH@",
++									    g_settings_schema_source_get_default(),
++									    TRUE,
++									    NULL);
++		schema = g_settings_schema_source_lookup(schema_source,
++							 "org.gnome.evolution-data-server",
++							 FALSE);
++		settings = g_settings_new_full(schema, NULL, NULL);
++	}
+ 
+ 	if (g_settings_get_boolean (settings, "limit-operations-in-power-saver-mode")) {
+ 		GPowerProfileMonitor *power_monitor;
 diff --git a/src/calendar/backends/contacts/e-cal-backend-contacts.c b/src/calendar/backends/contacts/e-cal-backend-contacts.c
-index e696861..52af238 100644
+index 42f3457..faac410 100644
 --- a/src/calendar/backends/contacts/e-cal-backend-contacts.c
 +++ b/src/calendar/backends/contacts/e-cal-backend-contacts.c
 @@ -1387,7 +1387,18 @@ e_cal_backend_contacts_init (ECalBackendContacts *cbc)
@@ -152,10 +176,10 @@ index e696861..52af238 100644
  	cbc->priv->update_alarms_id = 0;
  	cbc->priv->alarm_enabled = FALSE;
 diff --git a/src/calendar/libecal/e-reminder-watcher.c b/src/calendar/libecal/e-reminder-watcher.c
-index a24ede2..5d2a032 100644
+index 52095a4..e839991 100644
 --- a/src/calendar/libecal/e-reminder-watcher.c
 +++ b/src/calendar/libecal/e-reminder-watcher.c
-@@ -2477,7 +2477,19 @@ e_reminder_watcher_init (EReminderWatcher *watcher)
+@@ -2555,7 +2555,19 @@ e_reminder_watcher_init (EReminderWatcher *watcher)
  
  	watcher->priv = e_reminder_watcher_get_instance_private (watcher);
  	watcher->priv->cancellable = g_cancellable_new ();
@@ -176,6 +200,30 @@ index a24ede2..5d2a032 100644
  	watcher->priv->scheduled = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, e_reminder_watcher_free_rd_slist);
  	watcher->priv->default_zone = e_cal_util_copy_timezone (zone);
  	watcher->priv->timers_enabled = TRUE;
+diff --git a/src/calendar/libedata-cal/e-cal-meta-backend.c b/src/calendar/libedata-cal/e-cal-meta-backend.c
+index 94a875f..1f914a9 100644
+--- a/src/calendar/libedata-cal/e-cal-meta-backend.c
++++ b/src/calendar/libedata-cal/e-cal-meta-backend.c
+@@ -149,7 +149,18 @@ ecmb_is_power_saver_enabled (void)
+ 	GSettings *settings;
+ 	gboolean enabled = FALSE;
+ 
+-	settings = g_settings_new ("org.gnome.evolution-data-server");
++	{
++		g_autoptr(GSettingsSchemaSource) schema_source;
++		g_autoptr(GSettingsSchema) schema;
++		schema_source = g_settings_schema_source_new_from_directory("@EDS_GSETTINGS_PATH@",
++									    g_settings_schema_source_get_default(),
++									    TRUE,
++									    NULL);
++		schema = g_settings_schema_source_lookup(schema_source,
++							 "org.gnome.evolution-data-server",
++							 FALSE);
++		settings = g_settings_new_full(schema, NULL, NULL);
++	}
+ 
+ 	if (g_settings_get_boolean (settings, "limit-operations-in-power-saver-mode")) {
+ 		GPowerProfileMonitor *power_monitor;
 diff --git a/src/camel/camel-cipher-context.c b/src/camel/camel-cipher-context.c
 index 8013ba7..ba74769 100644
 --- a/src/camel/camel-cipher-context.c
@@ -201,10 +249,10 @@ index 8013ba7..ba74769 100644
  	g_clear_object (&settings);
  
 diff --git a/src/camel/camel-gpg-context.c b/src/camel/camel-gpg-context.c
-index 685d3ab..521d91f 100644
+index 205372e..2023704 100644
 --- a/src/camel/camel-gpg-context.c
 +++ b/src/camel/camel-gpg-context.c
-@@ -571,7 +571,18 @@ gpg_ctx_get_executable_name (void)
+@@ -582,7 +582,18 @@ gpg_ctx_get_executable_name (void)
  		GSettings *settings;
  		gchar *path;
  
@@ -249,6 +297,30 @@ index e61160c..d17871a 100644
  	g_signal_connect (mi_user_headers_settings, "changed::camel-message-info-user-headers",
  		G_CALLBACK (mi_user_headers_settings_changed_cb), NULL);
  	G_UNLOCK (mi_user_headers);
+diff --git a/src/camel/providers/imapx/camel-imapx-server.c b/src/camel/providers/imapx/camel-imapx-server.c
+index 2ed68cf..5dad98f 100644
+--- a/src/camel/providers/imapx/camel-imapx-server.c
++++ b/src/camel/providers/imapx/camel-imapx-server.c
+@@ -5573,7 +5573,18 @@ camel_imapx_server_skip_old_flags_update (CamelStore *store)
+ 	if (!skip_old_flags_update) {
+ 		GSettings *eds_settings;
+ 
+-		eds_settings = g_settings_new ("org.gnome.evolution-data-server");
++		{
++			g_autoptr(GSettingsSchemaSource) schema_source;
++			g_autoptr(GSettingsSchema) schema;
++			schema_source = g_settings_schema_source_new_from_directory("@EDS_GSETTINGS_PATH@",
++										    g_settings_schema_source_get_default(),
++										    TRUE,
++										    NULL);
++			schema = g_settings_schema_source_lookup(schema_source,
++								 "org.gnome.evolution-data-server",
++								 FALSE);
++			eds_settings = g_settings_new_full(schema, NULL, NULL);
++		}
+ 
+ 		if (g_settings_get_boolean (eds_settings, "limit-operations-in-power-saver-mode")) {
+ 			GPowerProfileMonitor *power_monitor;
 diff --git a/src/camel/providers/smtp/camel-smtp-transport.c b/src/camel/providers/smtp/camel-smtp-transport.c
 index f535ad6..30130b9 100644
 --- a/src/camel/providers/smtp/camel-smtp-transport.c
@@ -298,10 +370,10 @@ index 188f276..7c4db94 100644
  		settings, "network-monitor-gio-name",
  		object, "gio-name",
 diff --git a/src/libedataserver/e-oauth2-service-google.c b/src/libedataserver/e-oauth2-service-google.c
-index f9d9056..115d344 100644
+index f215388..3b67126 100644
 --- a/src/libedataserver/e-oauth2-service-google.c
 +++ b/src/libedataserver/e-oauth2-service-google.c
-@@ -70,7 +70,18 @@ eos_google_read_settings (EOAuth2Service *service,
+@@ -71,7 +71,18 @@ eos_google_read_settings (EOAuth2Service *service,
  	if (!value) {
  		GSettings *settings;
  
@@ -322,10 +394,10 @@ index f9d9056..115d344 100644
  		g_object_unref (settings);
  
 diff --git a/src/libedataserver/e-oauth2-service-outlook.c b/src/libedataserver/e-oauth2-service-outlook.c
-index 687c10d..ac1deae 100644
+index 9cff0d0..fd95f0b 100644
 --- a/src/libedataserver/e-oauth2-service-outlook.c
 +++ b/src/libedataserver/e-oauth2-service-outlook.c
-@@ -70,7 +70,18 @@ eos_outlook_read_settings (EOAuth2Service *service,
+@@ -71,7 +71,18 @@ eos_outlook_read_settings (EOAuth2Service *service,
  	if (!value) {
  		GSettings *settings;
  
@@ -346,10 +418,10 @@ index 687c10d..ac1deae 100644
  		g_object_unref (settings);
  
 diff --git a/src/libedataserver/e-oauth2-service-yahoo.c b/src/libedataserver/e-oauth2-service-yahoo.c
-index 329a38c..f541393 100644
+index 8e4ee81..bb8f8f7 100644
 --- a/src/libedataserver/e-oauth2-service-yahoo.c
 +++ b/src/libedataserver/e-oauth2-service-yahoo.c
-@@ -66,7 +66,18 @@ eos_yahoo_read_settings (EOAuth2Service *service,
+@@ -67,7 +67,18 @@ eos_yahoo_read_settings (EOAuth2Service *service,
  	if (!value) {
  		GSettings *settings;
  
@@ -370,10 +442,10 @@ index 329a38c..f541393 100644
  		g_object_unref (settings);
  
 diff --git a/src/libedataserver/e-oauth2-service.c b/src/libedataserver/e-oauth2-service.c
-index 979095b..ecac6bb 100644
+index 5a21872..a56d589 100644
 --- a/src/libedataserver/e-oauth2-service.c
 +++ b/src/libedataserver/e-oauth2-service.c
-@@ -89,7 +89,18 @@ eos_default_guess_can_process (EOAuth2Service *service,
+@@ -90,7 +90,18 @@ eos_default_guess_can_process (EOAuth2Service *service,
  	name_len = strlen (name);
  	hostname_len = strlen (hostname);
  
@@ -393,51 +465,11 @@ index 979095b..ecac6bb 100644
  	values = g_settings_get_strv (settings, "oauth2-services-hint");
  	g_object_unref (settings);
  
-diff --git a/src/libedataserver/e-proxy.c b/src/libedataserver/e-proxy.c
-index bcd07f9..17db26c 100644
---- a/src/libedataserver/e-proxy.c
-+++ b/src/libedataserver/e-proxy.c
-@@ -957,8 +957,33 @@ e_proxy_init (EProxy *proxy)
- 
- 	proxy->priv->type = PROXY_TYPE_SYSTEM;
- 
--	proxy->priv->evolution_proxy_settings = g_settings_new ("org.gnome.evolution.shell.network-config");
--	proxy->priv->proxy_settings = g_settings_new ("org.gnome.system.proxy");
-+	{
-+		g_autoptr(GSettingsSchemaSource) schema_source;
-+		g_autoptr(GSettingsSchema) schema;
-+		schema_source = g_settings_schema_source_new_from_directory("@EDS_GSETTINGS_PATH@",
-+									    g_settings_schema_source_get_default(),
-+									    TRUE,
-+									    NULL);
-+		schema = g_settings_schema_source_lookup(schema_source,
-+							 "org.gnome.evolution.shell.network-config",
-+							 FALSE);
-+		proxy->priv->evolution_proxy_settings = g_settings_new_full(schema,
-+									    NULL,
-+									    NULL);
-+	}
-+	{
-+		g_autoptr(GSettingsSchemaSource) schema_source;
-+		g_autoptr(GSettingsSchema) schema;
-+		schema_source = g_settings_schema_source_new_from_directory("@GDS_GSETTINGS_PATH@",
-+									    g_settings_schema_source_get_default(),
-+									    TRUE,
-+									    NULL);
-+		schema = g_settings_schema_source_lookup(schema_source,
-+							 "org.gnome.system.proxy",
-+							 FALSE);
-+		proxy->priv->proxy_settings = g_settings_new_full(schema,
-+								  NULL, NULL);
-+	}
- 	proxy->priv->proxy_http_settings = g_settings_get_child (proxy->priv->proxy_settings, "http");
- 	proxy->priv->proxy_https_settings = g_settings_get_child (proxy->priv->proxy_settings, "https");
- 	proxy->priv->proxy_socks_settings = g_settings_get_child (proxy->priv->proxy_settings, "socks");
 diff --git a/src/libedataserver/e-source-registry.c b/src/libedataserver/e-source-registry.c
-index 837e940..4bbd00d 100644
+index 6701a3a..6b8ee33 100644
 --- a/src/libedataserver/e-source-registry.c
 +++ b/src/libedataserver/e-source-registry.c
-@@ -1769,7 +1769,19 @@ e_source_registry_init (ESourceRegistry *registry)
+@@ -1764,7 +1764,19 @@ e_source_registry_init (ESourceRegistry *registry)
  
  	g_mutex_init (&registry->priv->sources_lock);
  
@@ -459,10 +491,10 @@ index 837e940..4bbd00d 100644
  	g_signal_connect (
  		registry->priv->settings, "changed",
 diff --git a/src/libedataserverui/e-reminders-widget.c b/src/libedataserverui/e-reminders-widget.c
-index d18474d..418ccc2 100644
+index 14b6481..6dc55bb 100644
 --- a/src/libedataserverui/e-reminders-widget.c
 +++ b/src/libedataserverui/e-reminders-widget.c
-@@ -1874,7 +1874,19 @@ static void
+@@ -1986,7 +1986,19 @@ static void
  e_reminders_widget_init (ERemindersWidget *reminders)
  {
  	reminders->priv = e_reminders_widget_get_instance_private (reminders);
diff --git a/pkgs/desktops/gnome/core/gdm/default.nix b/pkgs/desktops/gnome/core/gdm/default.nix
index cf435b1e9ea..f1fbe7e49d3 100644
--- a/pkgs/desktops/gnome/core/gdm/default.nix
+++ b/pkgs/desktops/gnome/core/gdm/default.nix
@@ -44,13 +44,13 @@ in
 
 stdenv.mkDerivation rec {
   pname = "gdm";
-  version = "42.0";
+  version = "43.0";
 
   outputs = [ "out" "dev" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/gdm/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "oyisl2k3vsF5lx/weCmhJGuYznJBgcEorjKguketOFU=";
+    sha256 = "lNcNbtffWfp/3k/QL+0RaFk6itzhD87hE8FI1Ss5IpQ=";
   };
 
   mesonFlags = [
@@ -144,6 +144,7 @@ stdenv.mkDerivation rec {
     rsync --archive "${DESTDIR}/etc" "$out"
     rm --recursive "${DESTDIR}/etc"
     for o in $outputs; do
+        if [[ "$o" = "debug" ]]; then continue; fi
         rsync --archive "${DESTDIR}/''${!o}" "$(dirname "''${!o}")"
         rm --recursive "${DESTDIR}/''${!o}"
     done
@@ -162,6 +163,8 @@ stdenv.mkDerivation rec {
   # location using DESTDIR and then move it to proper one in postInstall.
   DESTDIR = "${placeholder "out"}/dest";
 
+  separateDebugInfo = true;
+
   passthru = {
     updateScript = gnome.updateScript {
       packageName = "gdm";
diff --git a/pkgs/desktops/gnome/core/gnome-backgrounds/default.nix b/pkgs/desktops/gnome/core/gnome-backgrounds/default.nix
index ba70570b1f8..61a367222b6 100644
--- a/pkgs/desktops/gnome/core/gnome-backgrounds/default.nix
+++ b/pkgs/desktops/gnome/core/gnome-backgrounds/default.nix
@@ -8,11 +8,11 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-backgrounds";
-  version = "42.0";
+  version = "43";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-backgrounds/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "TH/hoJ9FnF93GJpZglJPzgXYiJRJVdZ5kQ8jRgbBKV0=";
+    sha256 = "GfdJ2MN/hy8VW7aaK756yjgRdeaSnxmYBH13XLxjckQ=";
   };
 
   patches = [
diff --git a/pkgs/desktops/gnome/core/gnome-bluetooth/default.nix b/pkgs/desktops/gnome/core/gnome-bluetooth/default.nix
index 8b6eb8c4f1b..9596f6d84cd 100644
--- a/pkgs/desktops/gnome/core/gnome-bluetooth/default.nix
+++ b/pkgs/desktops/gnome/core/gnome-bluetooth/default.nix
@@ -14,7 +14,7 @@
 , upower
 , itstool
 , libxml2
-, wrapGAppsHook
+, wrapGAppsHook4
 , libnotify
 , gsound
 , gobject-introspection
@@ -27,14 +27,14 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-bluetooth";
-  version = "42.2";
+  version = "42.4";
 
   # TODO: split out "lib"
   outputs = [ "out" "dev" "devdoc" "man" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "jOjs+rKCctsYMKY/CPnMtTBHNNG+Lb/OeV/kAp5inww=";
+    sha256 = "HW/PHNtsyZI6szSiwLw3osG7qdGN4VPUhO7cBPPAvNw=";
   };
 
   nativeBuildInputs = [
@@ -44,7 +44,7 @@ stdenv.mkDerivation rec {
     itstool
     pkg-config
     libxml2
-    wrapGAppsHook
+    wrapGAppsHook4
     gobject-introspection
     gtk-doc
     docbook-xsl-nons
diff --git a/pkgs/desktops/gnome/core/gnome-calculator/default.nix b/pkgs/desktops/gnome/core/gnome-calculator/default.nix
index c31c6de3b9f..59aafb530d7 100644
--- a/pkgs/desktops/gnome/core/gnome-calculator/default.nix
+++ b/pkgs/desktops/gnome/core/gnome-calculator/default.nix
@@ -11,12 +11,12 @@
 , gtk4
 , glib
 , gtksourceview5
-, wrapGAppsHook
+, wrapGAppsHook4
 , gobject-introspection
 , gnome
 , mpfr
 , gmp
-, libsoup
+, libsoup_3
 , libmpc
 , libadwaita
 , gsettings-desktop-schemas
@@ -25,11 +25,11 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-calculator";
-  version = "42.2";
+  version = "43.0.1";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-calculator/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "M9qxvKQ2WNZlIJWLD2dMsK0xhc/TDBLkWef2lIHFxqA=";
+    sha256 = "AsEt7Tz1BT0XU32V7GlYf0uRmJnXcm7O7NtLR/+xyQ8=";
   };
 
   nativeBuildInputs = [
@@ -39,7 +39,7 @@ stdenv.mkDerivation rec {
     vala
     gettext
     itstool
-    wrapGAppsHook
+    wrapGAppsHook4
     gobject-introspection # for finding vapi files
   ];
 
@@ -52,7 +52,7 @@ stdenv.mkDerivation rec {
     gmp
     libgee
     gsettings-desktop-schemas
-    libsoup
+    libsoup_3
     libmpc
     libadwaita
   ];
diff --git a/pkgs/desktops/gnome/core/gnome-contacts/default.nix b/pkgs/desktops/gnome/core/gnome-contacts/default.nix
index fac22f0b578..760af24880c 100644
--- a/pkgs/desktops/gnome/core/gnome-contacts/default.nix
+++ b/pkgs/desktops/gnome/core/gnome-contacts/default.nix
@@ -2,7 +2,7 @@
 , stdenv
 , gettext
 , fetchurl
-, evolution-data-server
+, evolution-data-server-gtk4
 , pkg-config
 , libxslt
 , docbook-xsl-nons
@@ -10,12 +10,11 @@
 , desktop-file-utils
 , gtk4
 , glib
-, libportal
+, libportal-gtk4
 , gnome-desktop
 , gnome-online-accounts
-, wrapGAppsHook
+, wrapGAppsHook4
 , folks
-, libgdata
 , libxml2
 , gnome
 , vala
@@ -27,17 +26,13 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-contacts";
-  version = "42.0";
+  version = "43.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-contacts/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "iALDj9wj9SjawSj1O9zx9sow4OHGhIxCzWyEpeIsUhY=";
+    sha256 = "VbYd9+k/Cr4f+kZeGOPF3k9JqQ8mjqnRHtyGrwbQceE=";
   };
 
-  propagatedUserEnvPkgs = [
-    evolution-data-server
-  ];
-
   nativeBuildInputs = [
     meson
     ninja
@@ -48,14 +43,14 @@ stdenv.mkDerivation rec {
     docbook-xsl-nons
     docbook_xml_dtd_42
     desktop-file-utils
-    wrapGAppsHook
+    wrapGAppsHook4
   ];
 
   buildInputs = [
     gtk4
     glib
-    libportal
-    evolution-data-server
+    libportal-gtk4
+    evolution-data-server-gtk4
     gsettings-desktop-schemas
     folks
     gnome-desktop
diff --git a/pkgs/desktops/gnome/core/gnome-control-center/default.nix b/pkgs/desktops/gnome/core/gnome-control-center/default.nix
index f0db2b98492..2c6db7f854a 100644
--- a/pkgs/desktops/gnome/core/gnome-control-center/default.nix
+++ b/pkgs/desktops/gnome/core/gnome-control-center/default.nix
@@ -63,18 +63,17 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-control-center";
-  version = "42.3";
+  version = "43.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "sha256-zgrjZQ3ir368sKfh/JkS7dtu/40lfz/lD/iynBk0HH4=";
+    sha256 = "sha256-mIyTNZLL3E5/DbqakyYuYXtzniWSeqFuF3lgx1TjHEg=";
   };
 
   patches = [
     (substituteAll {
       src = ./paths.patch;
       gcm = gnome-color-manager;
-      gnome_desktop = gnome-desktop;
       inherit glibc libgnomekbd tzdata;
       inherit cups networkmanagerapplet;
     })
@@ -135,16 +134,6 @@ stdenv.mkDerivation rec {
     upower
   ];
 
-  # postPatch = ''
-  #   scriptsToPatch=(
-  #     build-aux/meson/meson_post_install.py
-  #     build-aux/meson/find_xdg_file.py
-  #   )
-  #   # # patchShebangs requires executable file
-  #   # chmod +x "''${scriptsToPatch[@]}"
-  #   # patchShebangs "''${scriptsToPatch[@]}"
-  # '';
-
   preConfigure = ''
     # For ITS rules
     addToSearchPath "XDG_DATA_DIRS" "${polkit.out}/share"
diff --git a/pkgs/desktops/gnome/core/gnome-control-center/paths.patch b/pkgs/desktops/gnome/core/gnome-control-center/paths.patch
index a6787477b81..565d6ecdef0 100644
--- a/pkgs/desktops/gnome/core/gnome-control-center/paths.patch
+++ b/pkgs/desktops/gnome/core/gnome-control-center/paths.patch
@@ -54,19 +54,6 @@ index a2376f8a4..98769e08f 100644
  
  typedef struct _TzDB TzDB;
  typedef struct _TzLocation TzLocation;
-diff --git a/panels/info-overview/cc-info-overview-panel.c b/panels/info-overview/cc-info-overview-panel.c
-index bd0e07762..0e71351f8 100644
---- a/panels/info-overview/cc-info-overview-panel.c
-+++ b/panels/info-overview/cc-info-overview-panel.c
-@@ -172,7 +172,7 @@ load_gnome_version (char **version,
-   gsize length;
-   g_autoptr(VersionData) data = NULL;
- 
--  if (!g_file_get_contents (DATADIR "/gnome/gnome-version.xml",
-+  if (!g_file_get_contents ("@gnome_desktop@/share/gnome/gnome-version.xml",
-                             &contents,
-                             &length,
-                             &error))
 diff --git a/panels/keyboard/cc-input-list-box.c b/panels/keyboard/cc-input-list-box.c
 index 6c2cb5614..8f57159cc 100644
 --- a/panels/keyboard/cc-input-list-box.c
diff --git a/pkgs/desktops/gnome/core/gnome-disk-utility/default.nix b/pkgs/desktops/gnome/core/gnome-disk-utility/default.nix
index 89502c8d883..4cf083ed564 100644
--- a/pkgs/desktops/gnome/core/gnome-disk-utility/default.nix
+++ b/pkgs/desktops/gnome/core/gnome-disk-utility/default.nix
@@ -12,7 +12,6 @@
 , gtk3
 , glib
 , wrapGAppsHook
-, python3
 , libnotify
 , itstool
 , gnome
@@ -21,17 +20,18 @@
 , libcanberra-gtk3
 , libxslt
 , docbook-xsl-nons
+, desktop-file-utils
 , libpwquality
 , systemd
 }:
 
 stdenv.mkDerivation rec {
   pname = "gnome-disk-utility";
-  version = "42.0";
+  version = "43.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-disk-utility/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "sha256-G2VkRU1nQmMiyzv8WlVYZTv8ff7qKuCCWx0IYp8BCQs=";
+    sha256 = "sha256-evypgFprkttpM91+/OxK+DhsAbvB+HHi2uTe9+GSosU=";
   };
 
   nativeBuildInputs = [
@@ -42,8 +42,8 @@ stdenv.mkDerivation rec {
     itstool
     libxslt
     docbook-xsl-nons
+    desktop-file-utils
     wrapGAppsHook
-    python3
     libxml2
   ];
 
@@ -63,11 +63,6 @@ stdenv.mkDerivation rec {
     gsettings-desktop-schemas
   ];
 
-  postPatch = ''
-    chmod +x meson_post_install.py # patchShebangs requires executable file
-    patchShebangs meson_post_install.py
-  '';
-
   passthru = {
     updateScript = gnome.updateScript {
       packageName = "gnome-disk-utility";
diff --git a/pkgs/desktops/gnome/core/gnome-font-viewer/default.nix b/pkgs/desktops/gnome/core/gnome-font-viewer/default.nix
index 64eb22b186d..5ebf4903cbd 100644
--- a/pkgs/desktops/gnome/core/gnome-font-viewer/default.nix
+++ b/pkgs/desktops/gnome/core/gnome-font-viewer/default.nix
@@ -10,6 +10,7 @@
 , libxml2
 , gnome-desktop
 , libadwaita
+, fribidi
 , wrapGAppsHook4
 , gnome
 , harfbuzz
@@ -17,11 +18,11 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-font-viewer";
-  version = "42.0";
+  version = "43.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-font-viewer/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "z6K43/8hoQWhoCHa36IT8TYn5qF5p3x7Wf3O2sqEjcw=";
+    sha256 = "gca/+wbVMyNG4A6uyuwb3P1hfFHf2VvNBY1sdsdt0rk=";
   };
 
   doCheck = true;
@@ -42,6 +43,7 @@ stdenv.mkDerivation rec {
     gnome-desktop
     harfbuzz
     libadwaita
+    fribidi
   ];
 
   # Do not run meson-postinstall.sh
diff --git a/pkgs/desktops/gnome/core/gnome-initial-setup/default.nix b/pkgs/desktops/gnome/core/gnome-initial-setup/default.nix
index 21dda0e092f..7bf3e42ff3c 100644
--- a/pkgs/desktops/gnome/core/gnome-initial-setup/default.nix
+++ b/pkgs/desktops/gnome/core/gnome-initial-setup/default.nix
@@ -1,34 +1,36 @@
-{ lib, stdenv
+{ stdenv
+, lib
 , fetchurl
 , substituteAll
 , gettext
 , meson
 , ninja
 , pkg-config
-, wrapGAppsHook
+, wrapGAppsHook4
 , gnome
 , accountsservice
 , fontconfig
 , gdm
 , geoclue2
-, geocode-glib
+, geocode-glib_2
 , glib
 , gnome-desktop
 , gnome-online-accounts
 , gtk3
+, gtk4
 , libgweather
 , json-glib
 , krb5
 , libpwquality
-, librest
+, librest_1_0
 , libsecret
 , networkmanager
 , pango
 , polkit
-, webkitgtk
+, webkitgtk_5_0
 , systemd
-, libhandy
-, libnma
+, libadwaita
+, libnma-gtk4
 , tzdata
 , libgnomekbd
 , gsettings-desktop-schemas
@@ -36,11 +38,11 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-initial-setup";
-  version = "42.2";
+  version = "43.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "TYPZiySavhW7Kz5+eurZxH+Ei8p7agkavJCLdlQavns=";
+    sha256 = "Ap7LgZM/QE+k9spVvuR7A++JDoRGK/FF9u4JR34aOVU=";
   };
 
   patches = [
@@ -56,7 +58,7 @@ stdenv.mkDerivation rec {
     ninja
     pkg-config
     systemd
-    wrapGAppsHook
+    wrapGAppsHook4
   ];
 
   buildInputs = [
@@ -64,33 +66,35 @@ stdenv.mkDerivation rec {
     fontconfig
     gdm
     geoclue2
-    geocode-glib
+    geocode-glib_2
     glib
     gnome-desktop
     gnome-online-accounts
     gsettings-desktop-schemas
     gtk3
+    gtk4
     json-glib
     krb5
     libgweather
-    libhandy
-    libnma
+    libadwaita
+    libnma-gtk4
     libpwquality
-    librest
+    librest_1_0
     libsecret
     networkmanager
     pango
     polkit
-    webkitgtk
+    webkitgtk_5_0
   ];
 
   mesonFlags = [
-    "-Dcheese=disabled"
     "-Dibus=disabled"
     "-Dparental_controls=disabled"
     "-Dvendor-conf-file=${./vendor.conf}"
   ];
 
+  PKG_CONFIG_SYSTEMD_SYSUSERSDIR = "${placeholder "out"}/lib/sysusers.d";
+
   passthru = {
     updateScript = gnome.updateScript {
       packageName = pname;
diff --git a/pkgs/desktops/gnome/core/gnome-remote-desktop/default.nix b/pkgs/desktops/gnome/core/gnome-remote-desktop/default.nix
index 2d034c2d8bc..e1655b2b7c5 100644
--- a/pkgs/desktops/gnome/core/gnome-remote-desktop/default.nix
+++ b/pkgs/desktops/gnome/core/gnome-remote-desktop/default.nix
@@ -5,6 +5,7 @@
 , ninja
 , pkg-config
 , python3
+, asciidoc
 , wrapGAppsHook
 , glib
 , libepoxy
@@ -12,12 +13,13 @@
 , nv-codec-headers-11
 , pipewire
 , systemd
-, libvncserver
 , libsecret
 , libnotify
 , libxkbcommon
 , gdk-pixbuf
 , freerdp
+, fdk_aac
+, tpm2-tss
 , fuse3
 , mesa
 , libgudev
@@ -28,11 +30,11 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-remote-desktop";
-  version = "42.4";
+  version = "43.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    hash = "sha256-TU0jPvov+lRnMGo8w86Le6IyUtQtSxJy1crJ1d5Fy5o=";
+    hash = "sha256-NrWdIeyuRLllzZHmynwMAJ1gcOwxyEt3wERZXddSeAs=";
   };
 
   nativeBuildInputs = [
@@ -40,12 +42,15 @@ stdenv.mkDerivation rec {
     ninja
     pkg-config
     python3
+    asciidoc
     wrapGAppsHook
   ];
 
   buildInputs = [
     cairo
     freerdp
+    fdk_aac
+    tpm2-tss
     fuse3
     gdk-pixbuf # For libnotify
     glib
@@ -54,7 +59,6 @@ stdenv.mkDerivation rec {
     nv-codec-headers-11
     libnotify
     libsecret
-    libvncserver
     libxkbcommon
     pipewire
     systemd
@@ -77,11 +81,9 @@ stdenv.mkDerivation rec {
   doCheck = false;
 
   postPatch = ''
-    chmod +x meson_post_install.py # patchShebangs requires executable file
     patchShebangs \
       tests/vnc-test-runner.sh \
-      tests/run-vnc-tests.py \
-      meson_post_install.py
+      tests/run-vnc-tests.py
 
     substituteInPlace tests/vnc-test-runner.sh \
       --replace "dbus-run-session" "dbus-run-session --config-file=${dbus}/share/dbus-1/session.conf"
diff --git a/pkgs/desktops/gnome/core/gnome-session/default.nix b/pkgs/desktops/gnome/core/gnome-session/default.nix
index 43bf56eb1fc..dee4857325f 100644
--- a/pkgs/desktops/gnome/core/gnome-session/default.nix
+++ b/pkgs/desktops/gnome/core/gnome-session/default.nix
@@ -30,13 +30,13 @@
 stdenv.mkDerivation rec {
   pname = "gnome-session";
   # Also bump ./ctl.nix when bumping major version.
-  version = "42.0";
+  version = "43.0";
 
   outputs = [ "out" "sessions" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-session/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "PMoGBTq2gpJpIJUafalfjMbXLadMaCxG0KBlMzKWnKo=";
+    sha256 = "P7mUlQE4XIwUYY548XjZUt+YrYyRCA9MXhVoxzk64fI=";
   };
 
   patches = [
@@ -117,6 +117,8 @@ stdenv.mkDerivation rec {
       --suffix XDG_CONFIG_DIRS : "${gnome.gnome-settings-daemon}/etc/xdg"
   '';
 
+  separateDebugInfo = true;
+
   passthru = {
     updateScript = gnome.updateScript {
       packageName = "gnome-session";
diff --git a/pkgs/desktops/gnome/core/gnome-settings-daemon/default.nix b/pkgs/desktops/gnome/core/gnome-settings-daemon/default.nix
index 7e236dc39fd..0c20e07a770 100644
--- a/pkgs/desktops/gnome/core/gnome-settings-daemon/default.nix
+++ b/pkgs/desktops/gnome/core/gnome-settings-daemon/default.nix
@@ -30,23 +30,23 @@
 , modemmanager
 , networkmanager
 , gnome-desktop
-, geocode-glib
+, geocode-glib_2
 , docbook_xsl
 , wrapGAppsHook
 , python3
 , tzdata
 , nss
-, gcr
+, gcr_4
 , gnome-session-ctl
 }:
 
 stdenv.mkDerivation rec {
   pname = "gnome-settings-daemon";
-  version = "42.2";
+  version = "43.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-settings-daemon/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "nESXFKqOwSccDbUTffNFgZWUPwXM0KyJNdkzl3cLqwA=";
+    sha256 = "NRO7JPxvgYFmciOmSgZ1NP3M879mMmqUA9OLDw1gE9A=";
   };
 
   patches = [
@@ -93,12 +93,12 @@ stdenv.mkDerivation rec {
     libgweather
     nss
     polkit
-    geocode-glib
+    geocode-glib_2
     geoclue2
     systemd
     libgudev
     libwacom
-    gcr
+    gcr_4
   ];
 
   mesonFlags = [
@@ -112,7 +112,7 @@ stdenv.mkDerivation rec {
 
 
   postPatch = ''
-    for f in gnome-settings-daemon/codegen.py plugins/power/gsd-power-constants-update.pl meson_post_install.py; do
+    for f in gnome-settings-daemon/codegen.py plugins/power/gsd-power-constants-update.pl; do
       chmod +x $f
       patchShebangs $f
     done
diff --git a/pkgs/desktops/gnome/core/gnome-shell-extensions/default.nix b/pkgs/desktops/gnome/core/gnome-shell-extensions/default.nix
index c60e06ea640..2f75893b0b5 100644
--- a/pkgs/desktops/gnome/core/gnome-shell-extensions/default.nix
+++ b/pkgs/desktops/gnome/core/gnome-shell-extensions/default.nix
@@ -13,11 +13,11 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-shell-extensions";
-  version = "42.3";
+  version = "43.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-shell-extensions/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "DsK+oy6fKKyAWJH2ExlNSPwMCR8JxIMTBlo4hPcic/w=";
+    sha256 = "5Hw51CeCpyRJu/fes28D/ZbLWSkZRikTkSEuL9mNX5M=";
   };
 
   patches = [
diff --git a/pkgs/desktops/gnome/core/gnome-shell/default.nix b/pkgs/desktops/gnome/core/gnome-shell/default.nix
index 833e0575e33..ccc34ecca01 100644
--- a/pkgs/desktops/gnome/core/gnome-shell/default.nix
+++ b/pkgs/desktops/gnome/core/gnome-shell/default.nix
@@ -29,7 +29,7 @@
 , gobject-introspection
 , wrapGAppsHook
 , libxslt
-, gcr
+, gcr_4
 , accountsservice
 , gdk-pixbuf
 , gdm
@@ -43,7 +43,7 @@
 , glib
 , gjs
 , mutter
-, evolution-data-server
+, evolution-data-server-gtk4
 , gtk3
 , gtk4
 , libadwaita
@@ -67,13 +67,13 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "gnome-shell";
-  version = "42.4";
+  version = "43.0";
 
   outputs = [ "out" "devdoc" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-shell/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "h1/ylw6p+3oFUG4yoNUNyRf0G0yjcTS0E3f5yChzxU4=";
+    sha256 = "9u7JdwP588xv5ua0H23IIbGOyE34NRxN+XsXroJ0G0E=";
   };
 
   patches = [
@@ -127,7 +127,7 @@ stdenv.mkDerivation rec {
     gsettings-desktop-schemas
     gnome-keyring
     glib
-    gcr
+    gcr_4
     accountsservice
     libsecret
     polkit
@@ -138,7 +138,7 @@ stdenv.mkDerivation rec {
     gjs
     mutter
     libpulseaudio
-    evolution-data-server
+    evolution-data-server-gtk4
     libical
     gtk3
     gtk4
@@ -202,6 +202,8 @@ stdenv.mkDerivation rec {
     done
   '';
 
+  separateDebugInfo = true;
+
   passthru = {
     mozillaPlugin = "/lib/mozilla/plugins";
     updateScript = gnome.updateScript {
diff --git a/pkgs/desktops/gnome/core/gnome-software/default.nix b/pkgs/desktops/gnome/core/gnome-software/default.nix
index ab35257baa5..f5d299817a8 100644
--- a/pkgs/desktops/gnome/core/gnome-software/default.nix
+++ b/pkgs/desktops/gnome/core/gnome-software/default.nix
@@ -7,7 +7,7 @@
 , ninja
 , gettext
 , gnome
-, wrapGAppsHook
+, wrapGAppsHook4
 , packagekit
 , ostree
 , glib
@@ -24,7 +24,9 @@
 , gtk4
 , gsettings-desktop-schemas
 , gnome-desktop
+, libgudev
 , libxmlb
+, malcontent
 , json-glib
 , libsecret
 , valgrind-light
@@ -34,6 +36,7 @@
 , gtk-doc
 , desktop-file-utils
 , libsysprof-capture
+, gst_all_1
 }:
 
 let
@@ -42,11 +45,11 @@ in
 
 stdenv.mkDerivation rec {
   pname = "gnome-software";
-  version = "42.4";
+  version = "43.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-software/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "cRgp7mf58qG2S/oXQTdzuY8NxdIZ649sohfNZXK7SnQ=";
+    sha256 = "8WUuquJ0pqhwlQAENRZGUgDMdVlNzM2bShWZsKxJ5o8=";
   };
 
   patches = [
@@ -61,7 +64,7 @@ stdenv.mkDerivation rec {
     ninja
     pkg-config
     gettext
-    wrapGAppsHook
+    wrapGAppsHook4
     libxslt
     docbook_xml_dtd_42
     docbook_xml_dtd_43
@@ -87,18 +90,22 @@ stdenv.mkDerivation rec {
     ostree
     polkit
     flatpak
+    libgudev
     libxmlb
+    malcontent
     libsysprof-capture
+    # For video screenshots
+    gst_all_1.gst-plugins-base
+    gst_all_1.gst-plugins-good
   ] ++ lib.optionals withFwupd [
     fwupd
   ];
 
   mesonFlags = [
-    "-Dgudev=false"
-    # FIXME: package malcontent parental controls
-    "-Dmalcontent=false"
     # Needs flatpak to upgrade
     "-Dsoup2=true"
+    # Requires /etc/machine-id, D-Bus system bus, etc.
+    "-Dtests=false"
   ] ++ lib.optionals (!withFwupd) [
     "-Dfwupd=false"
   ];
diff --git a/pkgs/desktops/gnome/core/gnome-terminal/default.nix b/pkgs/desktops/gnome/core/gnome-terminal/default.nix
index a8ca028b555..d344eec3c64 100644
--- a/pkgs/desktops/gnome/core/gnome-terminal/default.nix
+++ b/pkgs/desktops/gnome/core/gnome-terminal/default.nix
@@ -1,15 +1,17 @@
 { stdenv
 , lib
-, fetchurl
+, fetchFromGitLab
+, fetchpatch
 , meson
 , ninja
 , pkg-config
 , python3
 , libxml2
 , gnome
-, dconf
+, nix-update-script
 , nautilus
 , glib
+, gtk4
 , gtk3
 , gsettings-desktop-schemas
 , vte
@@ -28,13 +30,25 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-terminal";
-  version = "3.44.1";
+  version = "3.47.0";
 
-  src = fetchurl {
-    url = "mirror://gnome/sources/gnome-terminal/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "+28g7h/yMamq7asT1dxuWmTJVXESJISLeQCG6IlZ03s=";
+  src = fetchFromGitLab {
+    domain = "gitlab.gnome.org";
+    owner = "GNOME";
+    repo = "gnome-terminal";
+    rev = version;
+    sha256 = "sha256-CriI1DtDBeujaz0HtXCyzoGxnas7NmD6EMQ+gLph3E4=";
   };
 
+  patches = [
+    # Fix Nautilus extension build.
+    # https://gitlab.gnome.org/GNOME/gnome-terminal/-/issues/7916
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/gnome-terminal/-/commit/614ea99b16fb09e10341fc6ccf5e115ac3f93caf.patch";
+      sha256 = "K7JHPfXywF3QSjSjyUnNZ11/ed+QXHQ47i135QBMIR8=";
+    })
+  ];
+
   nativeBuildInputs = [
     meson
     ninja
@@ -55,11 +69,11 @@ stdenv.mkDerivation rec {
 
   buildInputs = [
     glib
+    gtk4
     gtk3
     gsettings-desktop-schemas
     vte
     libuuid
-    dconf
     nautilus # For extension
   ];
 
@@ -77,13 +91,14 @@ stdenv.mkDerivation rec {
   '';
 
   passthru = {
-    updateScript = gnome.updateScript {
-      packageName = "gnome-terminal";
+    updateScript = nix-update-script {
       attrPath = "gnome.gnome-terminal";
     };
-  };
 
-  passthru.tests.test = nixosTests.terminal-emulators.gnome-terminal;
+    tests = {
+      test = nixosTests.terminal-emulators.gnome-terminal;
+    };
+  };
 
   meta = with lib; {
     description = "The GNOME Terminal Emulator";
diff --git a/pkgs/desktops/gnome/core/gnome-tour/default.nix b/pkgs/desktops/gnome/core/gnome-tour/default.nix
index a26dcfa0a7b..c7edd87d122 100644
--- a/pkgs/desktops/gnome/core/gnome-tour/default.nix
+++ b/pkgs/desktops/gnome/core/gnome-tour/default.nix
@@ -24,11 +24,11 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-tour";
-  version = "42.0";
+  version = "43.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    hash = "sha256-/PGsaJBX2oZZaXDsPag1VSHApy6VBj6wWdX+5N6oL08=";
+    hash = "sha256-E1HkGWJ/vXx3GTKm7xrYDAvy5oKMSUigYgaJhN2zzIg=";
   };
 
   cargoVendorDir = "vendor";
diff --git a/pkgs/desktops/gnome/core/gnome-user-share/default.nix b/pkgs/desktops/gnome/core/gnome-user-share/default.nix
index 4c33b76b012..2a09ef1ae2b 100644
--- a/pkgs/desktops/gnome/core/gnome-user-share/default.nix
+++ b/pkgs/desktops/gnome/core/gnome-user-share/default.nix
@@ -1,52 +1,29 @@
-{ lib, stdenv
+{ stdenv
+, lib
 , gettext
 , meson
 , ninja
 , fetchurl
-, fetchpatch
 , apacheHttpd
-, nautilus
 , pkg-config
-, gtk3
 , glib
 , libxml2
 , systemd
 , wrapGAppsHook
 , itstool
-, libnotify
 , mod_dnssd
 , gnome
-, libcanberra-gtk3
-, python3
 }:
 
 stdenv.mkDerivation rec {
   pname = "gnome-user-share";
-  version = "3.34.0";
+  version = "43.0";
 
   src = fetchurl {
-    url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "04r9ck9v4i0d31grbli1d4slw2d6dcsfkpaybkwbzi7wnj72l30x";
+    url = "mirror://gnome/sources/gnome-user-share/${lib.versions.major version}/gnome-user-share-${version}.tar.xz";
+    sha256 = "DfMGqgVYMT81Pvf1G/onwDYoGtxFZ34c+/p8n4YVOM4=";
   };
 
-  patches = [
-    # fix gio-unix-2.0 lookup
-    (fetchpatch {
-      url = "https://gitlab.gnome.org/GNOME/gnome-user-share/commit/8772980d4732c15505b15dccff2ca3c97e96d49d.patch";
-      sha256 = "03clzhrx72pq1cbmg2y24hvw4i1xsvrg9ip113fi5bc3w4gcji7p";
-    })
-    # fix compilation with meson >=0.61
-    (fetchpatch {
-      url = "https://gitlab.gnome.org/GNOME/gnome-user-share/-/commit/c31b0a8f33b95c0077cd5ee2102a71a49bee8abe.patch";
-      hash = "sha256-kH+cPBmSErWxsw+IyyjWgENi4I3ZcKjSA9+em8u4DYs=";
-    })
-  ];
-
-  postPatch = ''
-    chmod +x meson_post_install.py
-    patchShebangs meson_post_install.py
-  '';
-
   preConfigure = ''
     sed -e 's,^LoadModule dnssd_module.\+,LoadModule dnssd_module ${mod_dnssd}/modules/mod_dnssd.so,' \
       -e 's,''${HTTP_MODULES_PATH},${apacheHttpd}/modules,' \
@@ -57,9 +34,6 @@ stdenv.mkDerivation rec {
     "-Dhttpd=${apacheHttpd.out}/bin/httpd"
     "-Dmodules_path=${apacheHttpd}/modules"
     "-Dsystemduserunitdir=${placeholder "out"}/etc/systemd/user"
-    # In 3.34.0 it defaults to false but it is silently ignored and always installed.
-    # Let’s add it anyway in case they decide to make build respect the option in the future.
-    "-Dnautilus_extension=true"
   ];
 
   nativeBuildInputs = [
@@ -70,15 +44,10 @@ stdenv.mkDerivation rec {
     itstool
     libxml2
     wrapGAppsHook
-    python3
   ];
 
   buildInputs = [
-    gtk3
     glib
-    nautilus
-    libnotify
-    libcanberra-gtk3
     systemd
   ];
 
diff --git a/pkgs/desktops/gnome/core/mutter/3.38/default.nix b/pkgs/desktops/gnome/core/mutter/3.38/default.nix
index 3c2d30b813b..464cd285a78 100644
--- a/pkgs/desktops/gnome/core/mutter/3.38/default.nix
+++ b/pkgs/desktops/gnome/core/mutter/3.38/default.nix
@@ -1,4 +1,5 @@
 { fetchurl
+, fetchpatch
 , substituteAll
 , runCommand
 , lib
@@ -36,12 +37,12 @@
 , python3
 , wrapGAppsHook
 , sysprof
+, libsysprof-capture
 , desktop-file-utils
 , libcap_ng
 , egl-wayland
 , graphene
 , wayland-protocols
-, pantheon
 }:
 
 let self = stdenv.mkDerivation rec {
@@ -65,6 +66,20 @@ let self = stdenv.mkDerivation rec {
     # https://gitlab.gnome.org/GNOME/mutter/issues/536
     ./fix-glitches-in-gala.patch
 
+    # Stop using source_root()/build_root().
+    # https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1957
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/mutter/-/commit/6288763671692edbc953a2b80225e9a7c7fc87e7.patch";
+      sha256 = "immnfZiY+Cgu7xTbo5y8xs0olTa6UGsKgDJ1Xhkhns0=";
+    })
+
+    # Fix build with separate sysprof.
+    # https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2572
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/mutter/-/commit/285a5a4d54ca83b136b787ce5ebf1d774f9499d5.patch";
+      sha256 = "/npUE3idMSTVlFptsDpZmGWjZ/d2gqruVlJKq4eF4xU=";
+    })
+
     (substituteAll {
       src = ./fix-paths.patch;
       inherit zenity;
@@ -122,7 +137,8 @@ let self = stdenv.mkDerivation rec {
     libXdamage
     pango
     pipewire
-    sysprof
+    sysprof # for D-Bus interfaces
+    libsysprof-capture
     xkeyboard_config
     xwayland
     wayland-protocols
diff --git a/pkgs/desktops/gnome/core/mutter/default.nix b/pkgs/desktops/gnome/core/mutter/default.nix
index d49c1e2f6aa..4c2aded0492 100644
--- a/pkgs/desktops/gnome/core/mutter/default.nix
+++ b/pkgs/desktops/gnome/core/mutter/default.nix
@@ -1,17 +1,18 @@
 { fetchurl
-, substituteAll
 , runCommand
 , lib
+, fetchpatch
 , stdenv
 , pkg-config
 , gnome
 , gettext
 , gobject-introspection
 , cairo
+, colord
+, lcms2
 , pango
 , json-glib
 , libstartup_notification
-, zenity
 , libcanberra
 , ninja
 , xvfb-run
@@ -36,7 +37,9 @@
 , xorgserver
 , python3
 , wrapGAppsHook
+, gi-docgen
 , sysprof
+, libsysprof-capture
 , desktop-file-utils
 , libcap_ng
 , egl-wayland
@@ -46,24 +49,31 @@
 
 let self = stdenv.mkDerivation rec {
   pname = "mutter";
-  version = "42.4";
+  version = "43.0";
 
-  outputs = [ "out" "dev" "man" ];
+  outputs = [ "out" "dev" "man" "devdoc" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/mutter/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "wix/o9GHBh2/KAw4UOEYt7UAkGXQHeMWFqzVAMSYKkA=";
+    sha256 = "jZulKO2Z72eZZC4Uez/p8ry+ypvs7ShFwcrbMxzT5SU=";
   };
 
   patches = [
-    # Drop inheritable cap_sys_nice, to prevent the ambient set from leaking
-    # from mutter/gnome-shell, see https://github.com/NixOS/nixpkgs/issues/71381
-    # ./drop-inheritable.patch
+    # Fix build with separate sysprof.
+    # https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2572
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/mutter/-/commit/285a5a4d54ca83b136b787ce5ebf1d774f9499d5.patch";
+      sha256 = "/npUE3idMSTVlFptsDpZmGWjZ/d2gqruVlJKq4eF4xU=";
+    })
 
-    (substituteAll {
-      src = ./fix-paths.patch;
-      inherit zenity;
+    # color-device: Don't create profiles from obvious garbage data
+    # https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2627
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2627.patch";
+      sha256 = "SafC29+gjcj6JswHY6yuwcOS16LPYvFwYW1TEpNNSHc=";
     })
+
+
   ];
 
   mesonFlags = [
@@ -75,6 +85,7 @@ let self = stdenv.mkDerivation rec {
     # This should be auto detected, but it looks like it manages a false
     # positive.
     "-Dxwayland_initfd=disabled"
+    "-Ddocs=true"
   ];
 
   propagatedBuildInputs = [
@@ -95,6 +106,7 @@ let self = stdenv.mkDerivation rec {
     pkg-config
     python3
     wrapGAppsHook
+    gi-docgen
     xorgserver # for cvt command
   ];
 
@@ -116,9 +128,12 @@ let self = stdenv.mkDerivation rec {
     libxkbcommon
     libxkbfile
     libXdamage
+    colord
+    lcms2
     pango
     pipewire
-    sysprof
+    sysprof # for D-Bus interfaces
+    libsysprof-capture
     xkeyboard_config
     xwayland
     wayland-protocols
@@ -132,11 +147,19 @@ let self = stdenv.mkDerivation rec {
     ${glib.dev}/bin/glib-compile-schemas "$out/share/glib-2.0/schemas"
   '';
 
+  postFixup = ''
+    # Cannot be in postInstall, otherwise _multioutDocs hook in preFixup will move right back.
+    # TODO: Move this into a directory devhelp can find.
+    moveToOutput "share/mutter-11/doc" "$devdoc"
+  '';
+
   # Install udev files into our own tree.
   PKG_CONFIG_UDEV_UDEVDIR = "${placeholder "out"}/lib/udev";
 
+  separateDebugInfo = true;
+
   passthru = {
-    libdir = "${self}/lib/mutter-10";
+    libdir = "${self}/lib/mutter-11";
 
     tests = {
       libdirExists = runCommand "mutter-libdir-exists" {} ''
diff --git a/pkgs/desktops/gnome/core/mutter/fix-paths.patch b/pkgs/desktops/gnome/core/mutter/fix-paths.patch
deleted file mode 100644
index 6ac0a431f61..00000000000
--- a/pkgs/desktops/gnome/core/mutter/fix-paths.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/src/core/util.c b/src/core/util.c
-index 57b73747d..f424cc81c 100644
---- a/src/core/util.c
-+++ b/src/core/util.c
-@@ -636,7 +636,7 @@ meta_show_dialog (const char *type,
- 
-   args = g_ptr_array_new ();
- 
--  append_argument (args, "zenity");
-+  append_argument (args, "@zenity@/bin/zenity");
-   append_argument (args, type);
- 
-   if (display)
diff --git a/pkgs/desktops/gnome/core/nautilus/default.nix b/pkgs/desktops/gnome/core/nautilus/default.nix
index 53d68c12080..163c562a1ab 100644
--- a/pkgs/desktops/gnome/core/nautilus/default.nix
+++ b/pkgs/desktops/gnome/core/nautilus/default.nix
@@ -4,14 +4,15 @@
 , meson
 , ninja
 , pkg-config
+, gi-docgen
+, docbook-xsl-nons
 , gettext
 , libxml2
 , desktop-file-utils
-, python3
-, wrapGAppsHook
-, gtk3
-, libhandy
-, libportal-gtk3
+, wrapGAppsHook4
+, gtk4
+, libadwaita
+, libportal-gtk4
 , gnome
 , gnome-autoar
 , glib-networking
@@ -24,23 +25,25 @@
 , tracker-miners
 , gexiv2
 , libselinux
+, libcloudproviders
 , gdk-pixbuf
 , substituteAll
 , gnome-desktop
 , gst_all_1
 , gsettings-desktop-schemas
+, gnome-user-share
 , gobject-introspection
 }:
 
 stdenv.mkDerivation rec {
   pname = "nautilus";
-  version = "42.2";
+  version = "43.0";
 
-  outputs = [ "out" "dev" ];
+  outputs = [ "out" "dev" "devdoc" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "mSEtLrdZlvGBcorQSi4thvJXewZOaKNMi4GnA330zLI=";
+    sha256 = "PPVPrAqKvuCQ4VVBf3sW9j6grAwmTvT1RXSvNFgBqRE=";
   };
 
   patches = [
@@ -62,8 +65,9 @@ stdenv.mkDerivation rec {
     meson
     ninja
     pkg-config
-    python3
-    wrapGAppsHook
+    gi-docgen
+    docbook-xsl-nons
+    wrapGAppsHook4
   ];
 
   buildInputs = [
@@ -72,21 +76,29 @@ stdenv.mkDerivation rec {
     gnome-desktop
     gnome.adwaita-icon-theme
     gsettings-desktop-schemas
+    gnome-user-share
     gst_all_1.gst-plugins-base
-    gtk3
-    libhandy
-    libportal-gtk3
+    gtk4
+    libadwaita
+    libportal-gtk4
     libexif
     libnotify
     libseccomp
     libselinux
+    gdk-pixbuf
+    libcloudproviders
     shared-mime-info
     tracker
     tracker-miners
+    gnome-autoar
   ];
 
   propagatedBuildInputs = [
-    gnome-autoar
+    gtk4
+  ];
+
+  mesonFlags = [
+    "-Ddocs=true"
   ];
 
   preFixup = ''
@@ -98,8 +110,9 @@ stdenv.mkDerivation rec {
     )
   '';
 
-  postPatch = ''
-    patchShebangs build-aux/meson/postinstall.py
+  postFixup = ''
+    # Cannot be in postInstall, otherwise _multioutDocs hook in preFixup will move right back.
+    moveToOutput "share/doc" "$devdoc"
   '';
 
   passthru = {
diff --git a/pkgs/desktops/gnome/core/nautilus/extension_dir.patch b/pkgs/desktops/gnome/core/nautilus/extension_dir.patch
index e1313999675..a1bdd64f989 100644
--- a/pkgs/desktops/gnome/core/nautilus/extension_dir.patch
+++ b/pkgs/desktops/gnome/core/nautilus/extension_dir.patch
@@ -1,19 +1,21 @@
 diff --git a/src/nautilus-module.c b/src/nautilus-module.c
-index 6273a76..4adcc8a 100644
+index cd889ff18..e2cd6468e 100644
 --- a/src/nautilus-module.c
 +++ b/src/nautilus-module.c
-@@ -242,11 +242,17 @@ void
+@@ -267,6 +267,7 @@ void
  nautilus_module_setup (void)
  {
      static gboolean initialized = FALSE;
 +    const gchar* extensiondir = NULL;
+     const gchar *disable_plugins;
  
-     if (!initialized)
+     disable_plugins = g_getenv ("NAUTILUS_DISABLE_PLUGINS");
+@@ -280,7 +281,12 @@ nautilus_module_setup (void)
      {
          initialized = TRUE;
  
 -        load_module_dir (NAUTILUS_EXTENSIONDIR);
-+        extensiondir = g_getenv ("NAUTILUS_EXTENSION_DIR");
++        extensiondir = g_getenv ("NAUTILUS_4_EXTENSION_DIR");
 +        if (extensiondir == NULL) {
 +            extensiondir = NAUTILUS_EXTENSIONDIR;
 +        }
diff --git a/pkgs/desktops/gnome/core/rygel/add-option-for-installation-sysconfdir.patch b/pkgs/desktops/gnome/core/rygel/add-option-for-installation-sysconfdir.patch
index d2319ec13ed..5204e3518ab 100644
--- a/pkgs/desktops/gnome/core/rygel/add-option-for-installation-sysconfdir.patch
+++ b/pkgs/desktops/gnome/core/rygel/add-option-for-installation-sysconfdir.patch
@@ -1,5 +1,5 @@
 diff --git a/meson.build b/meson.build
-index 8af2fcf9..0e318307 100644
+index 27bde61f..3d434de9 100644
 --- a/meson.build
 +++ b/meson.build
 @@ -22,7 +22,11 @@ if not get_option('uninstalled')
@@ -12,8 +12,8 @@ index 8af2fcf9..0e318307 100644
 +    else
 +        rygel_sysconfdir = join_paths(get_option('prefix'), get_option('sysconfdir'))
 +    endif
-     rygel_plugindir = join_paths(rygel_libdir, 'rygel-2.6', 'plugins')
-     rygel_enginedir = join_paths(rygel_libdir, 'rygel-2.6', 'engines')
+     rygel_plugindir = join_paths(rygel_libdir, 'rygel-2.8', 'plugins')
+     rygel_enginedir = join_paths(rygel_libdir, 'rygel-2.8', 'engines')
      rygel_presetdir = join_paths(rygel_datadir, 'presets')
 @@ -57,7 +61,7 @@ conf.set_quoted('DATA_DIR', rygel_datadir)
  conf.set_quoted('PLUGIN_DIR', rygel_plugindir)
diff --git a/pkgs/desktops/gnome/core/rygel/default.nix b/pkgs/desktops/gnome/core/rygel/default.nix
index c09fb5450f3..c2414020968 100644
--- a/pkgs/desktops/gnome/core/rygel/default.nix
+++ b/pkgs/desktops/gnome/core/rygel/default.nix
@@ -10,13 +10,13 @@
 , wrapGAppsHook
 , python3
 , glib
-, gssdp
-, gupnp
+, gssdp_1_6
+, gupnp_1_6
 , gupnp-av
 , gupnp-dlna
 , gst_all_1
 , libgee
-, libsoup
+, libsoup_3
 , gtk3
 , libmediaart
 , sqlite
@@ -28,14 +28,14 @@
 
 stdenv.mkDerivation rec {
   pname = "rygel";
-  version = "0.40.4";
+  version = "0.42.0";
 
   # TODO: split out lib
   outputs = [ "out" "dev" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "c22K2+hhX2y8j8//mEXcmF/RDhZinaI2tLUtvt8KNIs=";
+    sha256 = "AG2nhnffKMruKHxEwp/NntyxshYkI7x/LdLchWuOK7s=";
   };
 
   patches = [
@@ -56,12 +56,12 @@ stdenv.mkDerivation rec {
 
   buildInputs = [
     glib
-    gssdp
-    gupnp
+    gssdp_1_6
+    gupnp_1_6
     gupnp-av
     gupnp-dlna
     libgee
-    libsoup
+    libsoup_3
     gtk3
     libmediaart
     sqlite
diff --git a/pkgs/desktops/gnome/core/simple-scan/default.nix b/pkgs/desktops/gnome/core/simple-scan/default.nix
index e656624c5c0..07910cd8c76 100644
--- a/pkgs/desktops/gnome/core/simple-scan/default.nix
+++ b/pkgs/desktops/gnome/core/simple-scan/default.nix
@@ -25,11 +25,11 @@
 
 stdenv.mkDerivation rec {
   pname = "simple-scan";
-  version = "42.1";
+  version = "42.5";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "sha256-hZvAYRwXabW9q6ljne7TWfUEdMLuz1i7v9fOIZEbIiY=";
+    sha256 = "sha256-BfXfpOniBu+p1ATJhh3XxEIJF5PnNMQXGXOZFyUOQFA=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/desktops/gnome/core/sushi/default.nix b/pkgs/desktops/gnome/core/sushi/default.nix
index 9817f77b6b6..3c7377630c7 100644
--- a/pkgs/desktops/gnome/core/sushi/default.nix
+++ b/pkgs/desktops/gnome/core/sushi/default.nix
@@ -9,7 +9,7 @@
 , gtksourceview4
 , gjs
 , libsoup
-, webkitgtk
+, webkitgtk_4_1
 , icu
 , wrapGAppsHook
 , gst_all_1
@@ -23,11 +23,11 @@
 
 stdenv.mkDerivation rec {
   pname = "sushi";
-  version = "42.0";
+  version = "43.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/sushi/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "RdjbevRaeXhOejRYjRSeqVXIvkS7gqNuiWgpQFt8iCA=";
+    sha256 = "V4SFJhSasceE+5L7yTTDUU/lIqumSdXZ/t7H4bFHUns=";
   };
 
   nativeBuildInputs = [
@@ -50,7 +50,7 @@ stdenv.mkDerivation rec {
     gdk-pixbuf
     librsvg
     libsoup
-    webkitgtk
+    webkitgtk_4_1
     libepoxy
     gst_all_1.gstreamer
     gst_all_1.gst-plugins-base
diff --git a/pkgs/desktops/gnome/core/totem/default.nix b/pkgs/desktops/gnome/core/totem/default.nix
index 44e1319f8d4..e7e3e225fa6 100644
--- a/pkgs/desktops/gnome/core/totem/default.nix
+++ b/pkgs/desktops/gnome/core/totem/default.nix
@@ -1,5 +1,7 @@
-{ lib, stdenv
+{ stdenv
+, lib
 , fetchurl
+, fetchpatch
 , meson
 , ninja
 , gettext
@@ -19,6 +21,7 @@
 , grilo
 , grilo-plugins
 , libpeas
+, libportal-gtk3
 , libhandy
 , adwaita-icon-theme
 , gnome-desktop
@@ -29,13 +32,32 @@
 
 stdenv.mkDerivation rec {
   pname = "totem";
-  version = "42.0";
+  version = "43.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/totem/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "SvBJHduV34szruOZ06UPnHqxfeiNOvYzVlZ8+I9X5qs=";
+    sha256 = "s202VZKLWJZGKk05+Dtq1m0328nJnc6wLqii43OUpB4=";
   };
 
+  patches = [
+    # Lower X11 dependency version since we do not have it.
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/totem/-/commit/140d9eea70c3101ef3234abb4de5974cb84b13db.patch";
+      sha256 = "ohppxqMiH8Ksc9B2e3AXighfM6KVN+RNXYL+fLELSN8=";
+      revert = true;
+    })
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/totem/-/commit/2610b4536f73493587e4a5a38e01c9961fcabb96.patch";
+      sha256 = "nPfzS+LQuAlyQOz67hCdtx93w2frhgWlg1KGX5bEU38=";
+      revert = true;
+    })
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/totem/-/commit/5b871aee5292f25bbf39dca18045732e979e7a68.patch";
+      sha256 = "LqQLdgyZkIVc+/hQ5sdBLqhtjCVIMDSs9tjVXwMFodg=";
+      revert = true;
+    })
+  ];
+
   nativeBuildInputs = [
     meson
     ninja
@@ -61,6 +83,7 @@ stdenv.mkDerivation rec {
     gst_all_1.gst-plugins-ugly
     gst_all_1.gst-libav
     libpeas
+    libportal-gtk3
     libhandy
     shared-mime-info
     gdk-pixbuf
@@ -87,10 +110,9 @@ stdenv.mkDerivation rec {
   doCheck = false;
 
   postPatch = ''
-    chmod +x meson_compile_python.py meson_post_install.py # patchShebangs requires executable file
+    chmod +x meson_compile_python.py # patchShebangs requires executable file
     patchShebangs \
-      ./meson_compile_python.py \
-      ./meson_post_install.py
+      ./meson_compile_python.py
   '';
 
   checkPhase = ''
diff --git a/pkgs/desktops/gnome/core/yelp-xsl/default.nix b/pkgs/desktops/gnome/core/yelp-xsl/default.nix
index 3398e8ddd57..2fa3ec0ecdd 100644
--- a/pkgs/desktops/gnome/core/yelp-xsl/default.nix
+++ b/pkgs/desktops/gnome/core/yelp-xsl/default.nix
@@ -10,11 +10,11 @@
 
 stdenv.mkDerivation rec {
   pname = "yelp-xsl";
-  version = "42.0";
+  version = "42.1";
 
   src = fetchurl {
     url = "mirror://gnome/sources/yelp-xsl/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "sha256-KbJzzAvRbvtumDRDgD8en9wDUR5cT/Y0j9MKYE1NyEY=";
+    sha256 = "sha256-I4vhULFlMIDOE5lxMw/TbTomWV4NagQKLAML89IAW80=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/desktops/gnome/core/yelp/default.nix b/pkgs/desktops/gnome/core/yelp/default.nix
index 4ae54200d09..ee76194433c 100644
--- a/pkgs/desktops/gnome/core/yelp/default.nix
+++ b/pkgs/desktops/gnome/core/yelp/default.nix
@@ -2,7 +2,7 @@
 , stdenv
 , gettext
 , fetchurl
-, webkitgtk
+, webkitgtk_4_1
 , pkg-config
 , gtk3
 , libhandy
@@ -18,11 +18,11 @@
 
 stdenv.mkDerivation rec {
   pname = "yelp";
-  version = "42.1";
+  version = "42.2";
 
   src = fetchurl {
     url = "mirror://gnome/sources/yelp/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "sha256-JbEUarhUmIilqNoGf2O0cLDw+AC2roicrNEU0B1xO0E=";
+    sha256 = "sha256-osX9B4epCJxyLMZr0Phc33CI2HDntsyFeZ+OW/+erEs=";
   };
 
   nativeBuildInputs = [
@@ -36,7 +36,7 @@ stdenv.mkDerivation rec {
     gtk3
     libhandy
     glib
-    webkitgtk
+    webkitgtk_4_1
     sqlite
     libxml2
     libxslt
@@ -46,10 +46,6 @@ stdenv.mkDerivation rec {
     gst_all_1.gst-plugins-good
   ];
 
-  # To reduce the GNOME ISO closure size.  Remove when other packages
-  # are using webkit2gtk_4_1.
-  configureFlags = ["--with-webkit2gtk-4-0"];
-
   passthru = {
     updateScript = gnome.updateScript {
       packageName = "yelp";
diff --git a/pkgs/desktops/gnome/default.nix b/pkgs/desktops/gnome/default.nix
index 1169bae6d67..b8d48cf12fd 100644
--- a/pkgs/desktops/gnome/default.nix
+++ b/pkgs/desktops/gnome/default.nix
@@ -178,8 +178,6 @@ lib.makeScope pkgs.newScope (self: with self; {
 
   gnome-sound-recorder = callPackage ./apps/gnome-sound-recorder { };
 
-  gnome-todo = callPackage ./apps/gnome-todo {};
-
   gnome-weather = callPackage ./apps/gnome-weather { };
 
   polari = callPackage ./apps/polari { };
@@ -269,6 +267,7 @@ lib.makeScope pkgs.newScope (self: with self; {
 #### Legacy aliases. They need to be outside the scope or they will shadow the attributes from parent scope.
 
   gnome-desktop = pkgs.gnome-desktop; # added 2022-03-16
+  gnome-todo = pkgs.endeavour; # added 2022-07-30
   libgnome-games-support = pkgs.libgnome-games-support; # added 2022-02-19
 
   bijiben = throw "The ‘gnome.bijiben’ alias was removed on 2022-01-13. Please use ‘gnome.gnome-notes’ directly."; # added 2018-09-26
diff --git a/pkgs/desktops/gnome/devtools/devhelp/default.nix b/pkgs/desktops/gnome/devtools/devhelp/default.nix
index 4a024f6ff41..55330921e26 100644
--- a/pkgs/desktops/gnome/devtools/devhelp/default.nix
+++ b/pkgs/desktops/gnome/devtools/devhelp/default.nix
@@ -1,7 +1,6 @@
 { stdenv
 , lib
 , fetchurl
-, fetchpatch
 , meson
 , ninja
 , pkg-config
@@ -9,11 +8,9 @@
 , gtk3
 , wrapGAppsHook
 , glib
-, appstream-glib
 , gobject-introspection
-, python3
 , gi-docgen
-, webkitgtk
+, webkitgtk_4_1
 , gettext
 , itstool
 , gsettings-desktop-schemas
@@ -22,24 +19,15 @@
 
 stdenv.mkDerivation rec {
   pname = "devhelp";
-  version = "41.2";
+  version = "43.0";
 
   outputs = [ "out" "devdoc" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/devhelp/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "7KqQsPTaqPsgMPbcaQv1M/+Zp3NDf+Dhis/oLZl/YNI=";
+    sha256 = "Y87u/QU5LgIESIHvHs1yQpNVPaVzW378CCstE/6F3QQ=";
   };
 
-  patches = [
-    # Fix build with meson 0.61
-    # https://gitlab.gnome.org/GNOME/devhelp/-/issues/59
-    (fetchpatch {
-      url = "https://gitlab.gnome.org/GNOME/devhelp/-/commit/281bade14c1925cf9e7329fa8e9cf2d82512c66f.patch";
-      sha256 = "LmHoeQ0zJwOhuasAUYy8FfpDnEO+UNfEb293uKttYKo=";
-    })
-  ];
-
   nativeBuildInputs = [
     meson
     ninja
@@ -47,16 +35,17 @@ stdenv.mkDerivation rec {
     gettext
     itstool
     wrapGAppsHook
-    appstream-glib
     gobject-introspection
-    python3
     gi-docgen
+    # post install script
+    glib
+    gtk3
   ];
 
   buildInputs = [
     glib
     gtk3
-    webkitgtk
+    webkitgtk_4_1
     gnome.adwaita-icon-theme
     gsettings-desktop-schemas
   ];
@@ -67,12 +56,6 @@ stdenv.mkDerivation rec {
 
   doCheck = true;
 
-  postPatch = ''
-    # patchShebangs requires executable file
-    chmod +x build-aux/meson/meson_post_install.py
-    patchShebangs build-aux/meson/meson_post_install.py
-  '';
-
   preFixup = ''
     gappsWrapperArgs+=(
       # Fix pages being blank
diff --git a/pkgs/desktops/gnome/extensions/chrome-gnome-shell/default.nix b/pkgs/desktops/gnome/extensions/chrome-gnome-shell/default.nix
deleted file mode 100644
index 779d7506abf..00000000000
--- a/pkgs/desktops/gnome/extensions/chrome-gnome-shell/default.nix
+++ /dev/null
@@ -1,71 +0,0 @@
-{ lib, stdenv
-, fetchurl
-, cmake
-, ninja
-, jq
-, python3
-, gnome
-, wrapGAppsHook
-, gobject-introspection
-}:
-
-let
-  inherit (python3.pkgs) python pygobject3 requests;
-in
-stdenv.mkDerivation rec {
-  pname = "chrome-gnome-shell";
-  version = "10.1";
-
-  src = fetchurl {
-    url = "mirror://gnome/sources/chrome-gnome-shell/${version}/${pname}-${version}.tar.xz";
-    sha256 = "0f54xyamm383ypbh0ndkza0pif6ljddg2f947p265fkqj3p4zban";
-  };
-
-  nativeBuildInputs = [
-    cmake
-    ninja
-    jq
-    wrapGAppsHook
-    gobject-introspection # for setup-hook
-  ];
-
-  buildInputs = [
-    gnome.gnome-shell
-    python
-    pygobject3
-    requests
-    gobject-introspection # for Gio typelib
-  ];
-
-  cmakeFlags = [
-    "-DBUILD_EXTENSION=OFF"
-  ];
-
-  wrapPrefixVariables = [
-    "PYTHONPATH"
-  ];
-
-  # cmake setup hook changes /etc/opt into /var/empty
-  dontFixCmake = true;
-
-  preConfigure = ''
-    substituteInPlace CMakeLists.txt --replace "/etc" "$out/etc"
-  '';
-
-  passthru = {
-    updateScript = gnome.updateScript {
-      packageName = "chrome-gnome-shell";
-    };
-  };
-
-  meta = with lib; {
-    description = "GNOME Shell integration for Chrome";
-    homepage = "https://wiki.gnome.org/Projects/GnomeShellIntegrationForChrome";
-    longDescription = ''
-      To use the integration, install the <link xlink:href="https://wiki.gnome.org/Projects/GnomeShellIntegrationForChrome/Installation">browser extension</link>, and then set <option>services.gnome.chrome-gnome-shell.enable</option> to <literal>true</literal>.
-    '';
-    license = licenses.gpl3;
-    maintainers = teams.gnome.members;
-    platforms = platforms.linux;
-  };
-}
diff --git a/pkgs/desktops/gnome/extensions/dash-to-dock/default.nix b/pkgs/desktops/gnome/extensions/dash-to-dock/default.nix
index f6d21c24653..5f3a2943f81 100644
--- a/pkgs/desktops/gnome/extensions/dash-to-dock/default.nix
+++ b/pkgs/desktops/gnome/extensions/dash-to-dock/default.nix
@@ -9,14 +9,14 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-shell-extension-dash-to-dock";
-  version = "73";
+  version = "74";
 
   # Temporarily switched to commit hash because stable version is buggy.
   src = fetchFromGitHub {
     owner = "micheleg";
     repo = "dash-to-dock";
     rev = "extensions.gnome.org-v${version}";
-    sha256 = "/NOJWjotfYPujS5G7/zv1OLzfSW0MB+oIRsx9/LSEdA=";
+    sha256 = "3WNm9kX76+qmn9KWLSKwxmHHpc21kWHrBW9266TOKZ0=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/desktops/gnome/extensions/gnome-browser-connector/default.nix b/pkgs/desktops/gnome/extensions/gnome-browser-connector/default.nix
new file mode 100644
index 00000000000..57052ddf3c5
--- /dev/null
+++ b/pkgs/desktops/gnome/extensions/gnome-browser-connector/default.nix
@@ -0,0 +1,66 @@
+{ stdenv
+, lib
+, fetchFromGitLab
+, meson
+, ninja
+, python3
+, gnome
+, wrapGAppsNoGuiHook
+, gobject-introspection
+}:
+
+let
+  inherit (python3.pkgs) buildPythonApplication pygobject3;
+in
+buildPythonApplication rec {
+  pname = "gnome-browser-connector";
+  version = "42.0";
+
+  format = "other";
+
+  src = fetchFromGitLab {
+    domain = "gitlab.gnome.org";
+    owner = "nE0sIghT";
+    repo = "gnome-browser-connector";
+    rev = "v${version}";
+    sha256 = "pYbV/qCmSrM2nrrKxbxHnJYMDOiW0aeNbFlsm5kKWdk=";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    wrapGAppsNoGuiHook
+    gobject-introspection # for setup-hook
+  ];
+
+  buildInputs = [
+    gnome.gnome-shell
+    gobject-introspection # for Gio typelib
+  ];
+
+  pythonPath = [
+    pygobject3
+  ];
+
+  postPatch = ''
+    patchShebangs contrib/merge_json.py
+  '';
+
+  dontWrapGApps = true;
+
+  # Arguments to be passed to `makeWrapper`, only used by buildPython*
+  preFixup = ''
+    makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
+  '';
+
+  meta = with lib; {
+    description = "Native host connector for the GNOME Shell browser extension";
+    homepage = "https://wiki.gnome.org/Projects/GnomeShellIntegration";
+    longDescription = ''
+      To use the integration, install the <link xlink:href="https://wiki.gnome.org/Projects/GnomeShellIntegration/Installation">browser extension</link>, and then set <option>services.gnome.gnome-browser-connector.enable</option> to <literal>true</literal>.
+    '';
+    license = licenses.gpl3Plus;
+    maintainers = teams.gnome.members;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome/extensions/gsconnect/default.nix b/pkgs/desktops/gnome/extensions/gsconnect/default.nix
index 5f915a4b5af..b86b295afbc 100644
--- a/pkgs/desktops/gnome/extensions/gsconnect/default.nix
+++ b/pkgs/desktops/gnome/extensions/gsconnect/default.nix
@@ -1,5 +1,7 @@
-{ lib, stdenv
+{ stdenv
+, lib
 , fetchFromGitHub
+, fetchpatch
 , substituteAll
 , openssl
 , gsound
@@ -13,6 +15,7 @@
 , gtk3
 , openssh
 , gnome
+, evolution-data-server-gtk4
 , gjs
 , nixosTests
 }:
@@ -39,6 +42,12 @@ stdenv.mkDerivation rec {
 
     # Allow installing installed tests to a separate output
     ./installed-tests-path.patch
+
+    # Update extension for Nautilus 43.
+    (fetchpatch {
+      url = "https://github.com/GSConnect/gnome-shell-extension-gsconnect/commit/9723ea9102f07c2c60fa065184cc58c2bc260abf.patch";
+      sha256 = "9afy/70AwW+OYML5J5IyBBiNKWkZ+wZZryZbi4uRfs4=";
+    })
   ];
 
   nativeBuildInputs = [
@@ -55,7 +64,7 @@ stdenv.mkDerivation rec {
     gtk3
     gsound
     gjs # for running daemon
-    gnome.evolution-data-server # for libebook-contacts typelib
+    evolution-data-server-gtk4 # for libebook-contacts typelib
   ];
 
   mesonFlags = [
diff --git a/pkgs/desktops/gnome/games/gnome-chess/default.nix b/pkgs/desktops/gnome/games/gnome-chess/default.nix
index 8716b6858cd..112c9cf8955 100644
--- a/pkgs/desktops/gnome/games/gnome-chess/default.nix
+++ b/pkgs/desktops/gnome/games/gnome-chess/default.nix
@@ -5,12 +5,12 @@
 , ninja
 , vala
 , pkg-config
+, desktop-file-utils
 , wrapGAppsHook4
 , gobject-introspection
 , gettext
 , itstool
 , libxml2
-, python3
 , gnome
 , glib
 , gtk4
@@ -21,11 +21,11 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-chess";
-  version = "42.1";
+  version = "43.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-chess/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "ZikL9yhky8bufM6Mn0DegSTo5gl712hi8teqsMS9sCw=";
+    sha256 = "ZDP+3y9C+yK/IC2fE47C7gcjetXXQ4CQULXICbVs28s=";
   };
 
   nativeBuildInputs = [
@@ -36,7 +36,7 @@ stdenv.mkDerivation rec {
     gettext
     itstool
     libxml2
-    python3
+    desktop-file-utils
     wrapGAppsHook4
     gobject-introspection
   ];
@@ -49,11 +49,6 @@ stdenv.mkDerivation rec {
     pango
   ];
 
-  postPatch = ''
-    chmod +x meson_post_install.py
-    patchShebangs meson_post_install.py
-  '';
-
   passthru = {
     updateScript = gnome.updateScript {
       packageName = "gnome-chess";
diff --git a/pkgs/desktops/gnome/games/gnome-sudoku/default.nix b/pkgs/desktops/gnome/games/gnome-sudoku/default.nix
index 87e7c467d04..388253f131b 100644
--- a/pkgs/desktops/gnome/games/gnome-sudoku/default.nix
+++ b/pkgs/desktops/gnome/games/gnome-sudoku/default.nix
@@ -1,22 +1,51 @@
-{ lib, stdenv, fetchurl, meson, ninja, vala, pkg-config, gobject-introspection, gettext, gtk3, gnome, wrapGAppsHook
-, libgee, json-glib, qqwing, itstool, libxml2, python3, desktop-file-utils }:
+{ stdenv
+, lib
+, fetchurl
+, meson
+, ninja
+, vala
+, pkg-config
+, gobject-introspection
+, gettext
+, gtk3
+, gnome
+, wrapGAppsHook
+, libgee
+, json-glib
+, qqwing
+, itstool
+, libxml2
+, desktop-file-utils
+}:
 
 stdenv.mkDerivation rec {
   pname = "gnome-sudoku";
-  version = "42.0";
+  version = "43.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-sudoku/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "HS603bgCa0Q2Rc81hbjfEkTjgo7hwHUYBSslmeHFwo8=";
+    sha256 = "ftJ0KJz1ykELHJKxU3BQpcNi99szmaMrU0PQ3nBGbkk=";
   };
 
-  nativeBuildInputs = [ meson ninja vala pkg-config gobject-introspection gettext itstool libxml2 python3 desktop-file-utils wrapGAppsHook ];
-  buildInputs = [ gtk3 libgee json-glib qqwing ];
+  nativeBuildInputs = [
+    meson
+    ninja
+    vala
+    pkg-config
+    gobject-introspection
+    gettext
+    itstool
+    libxml2
+    desktop-file-utils
+    wrapGAppsHook
+  ];
 
-  postPatch = ''
-    chmod +x build-aux/post_install.py
-    patchShebangs build-aux/post_install.py
-  '';
+  buildInputs = [
+    gtk3
+    libgee
+    json-glib
+    qqwing
+  ];
 
   passthru = {
     updateScript = gnome.updateScript {
@@ -29,7 +58,7 @@ stdenv.mkDerivation rec {
     homepage = "https://wiki.gnome.org/Apps/Sudoku";
     description = "Test your logic skills in this number grid puzzle";
     maintainers = teams.gnome.members;
-    license = licenses.gpl2;
+    license = licenses.gpl3Plus;
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/desktops/gnome/misc/geary/default.nix b/pkgs/desktops/gnome/misc/geary/default.nix
index db79db65cb1..cb7726d5906 100644
--- a/pkgs/desktops/gnome/misc/geary/default.nix
+++ b/pkgs/desktops/gnome/misc/geary/default.nix
@@ -1,7 +1,6 @@
 { lib
 , stdenv
 , fetchurl
-, fetchpatch
 , pkg-config
 , gtk3
 , vala
@@ -26,7 +25,7 @@
 , itstool
 , libgee
 , gnome
-, webkitgtk
+, webkitgtk_4_1
 , python3
 , gnutls
 , cacert
@@ -48,28 +47,13 @@
 
 stdenv.mkDerivation rec {
   pname = "geary";
-  version = "40.0";
+  version = "43.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "1c2nd35500ng28223y5pszc7fh8g16njj34f6p5xc9594lvj0mik";
+    sha256 = "SJFm+H3Z0pAR9eW3lpTyWItHP34ZHFnOkBPIyODjY+c=";
   };
 
-  patches = [
-    # Fix accessibility issues with initializer of constants (Fix build with vala 0.56)
-    # https://gitlab.gnome.org/GNOME/geary/-/merge_requests/720
-    (fetchpatch {
-      url = "https://gitlab.gnome.org/GNOME/geary/-/commit/9bd4c82952a0a2c3308c5cc86c0b85650c1fb484.patch";
-      sha256 = "sha256-mSms0MOfw8xHxOrEQwrIv+d4h01xLPgyvX2oWmmFQVw=";
-    })
-    # Util.Cache.Lru: Workaround missing generic type argument (Fix build with vala 0.56)
-    # https://gitlab.gnome.org/GNOME/geary/-/merge_requests/721
-    (fetchpatch {
-      url = "https://gitlab.gnome.org/GNOME/geary/-/commit/0f75e7a84a39492d0748cec2ba6028e08cae3644.patch";
-      sha256 = "sha256-1ADQqKm3DxtjDGPSThq3c7s5S+q/3u/qr9JQEsLaFMI=";
-    })
-  ];
-
   nativeBuildInputs = [
     appstream-glib
     desktop-file-utils
@@ -108,7 +92,7 @@ stdenv.mkDerivation rec {
     libstemmer
     libytnef
     sqlite
-    webkitgtk
+    webkitgtk_4_1
   ];
 
   checkInputs = [
@@ -127,12 +111,9 @@ stdenv.mkDerivation rec {
   # NOTE: Remove `build-auxyaml_to_json.py` when no longer needed, see:
   # https://gitlab.gnome.org/GNOME/geary/commit/f7f72143e0f00ca5e0e6a798691805c53976ae31#0cc1139e3347f573ae1feee5b73dbc8a8a21fcfa
   postPatch = ''
-    chmod +x build-aux/post_install.py build-aux/git_version.py
-
-    patchShebangs build-aux/post_install.py build-aux/git_version.py
+    chmod +x build-aux/git_version.py
 
-    chmod +x build-aux/yaml_to_json.py
-    patchShebangs build-aux/yaml_to_json.py
+    patchShebangs build-aux/git_version.py
 
     chmod +x desktop/geary-attach
   '';
diff --git a/pkgs/desktops/gnome/misc/gnome-applets/default.nix b/pkgs/desktops/gnome/misc/gnome-applets/default.nix
index a03b356c21f..5620310e8a5 100644
--- a/pkgs/desktops/gnome/misc/gnome-applets/default.nix
+++ b/pkgs/desktops/gnome/misc/gnome-applets/default.nix
@@ -23,11 +23,11 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-applets";
-  version = "3.44.0";
+  version = "3.46.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "MDlifKknGeSAWH1yT0aXEJw9Em7BUPFPOy4Gkk2576c=";
+    sha256 = "TwRjyoDzCUA4WzCcHmkCWIxx2XFQxlQOg083Tk0nrPc=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/desktops/gnome/misc/gnome-flashback/default.nix b/pkgs/desktops/gnome/misc/gnome-flashback/default.nix
index 4401915d40b..cdebb3628ba 100644
--- a/pkgs/desktops/gnome/misc/gnome-flashback/default.nix
+++ b/pkgs/desktops/gnome/misc/gnome-flashback/default.nix
@@ -4,7 +4,7 @@
 , fetchurl
 , gettext
 , glib
-, gnome-bluetooth_1_0
+, gnome-bluetooth
 , gnome-desktop
 , gnome-panel
 , gnome-session
@@ -31,7 +31,7 @@
 }:
 let
   pname = "gnome-flashback";
-  version = "3.44.0";
+  version = "3.46.0";
 
   # From data/sessions/Makefile.am
   requiredComponentsCommon = enableGnomePanel:
@@ -62,7 +62,7 @@ let
 
     src = fetchurl {
       url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${name}.tar.xz";
-      sha256 = "sha256-HfCDgSfGJG7s2J0cUP+I/IKr9t47MGjlLd5JWkK9VQo=";
+      sha256 = "sha256-eo1cAzEOTfrdGKZeAKN3QQMq/upUGN1oBKl1xLCYAEU=";
     };
 
     # make .desktop Execs absolute
@@ -95,7 +95,7 @@ let
 
     buildInputs = [
       glib
-      gnome-bluetooth_1_0
+      gnome-bluetooth
       gnome-desktop
       gsettings-desktop-schemas
       gtk3
diff --git a/pkgs/desktops/gnome/misc/gnome-panel/default.nix b/pkgs/desktops/gnome/misc/gnome-panel/default.nix
index 0b107f23d78..503fc34bae8 100644
--- a/pkgs/desktops/gnome/misc/gnome-panel/default.nix
+++ b/pkgs/desktops/gnome/misc/gnome-panel/default.nix
@@ -1,12 +1,11 @@
 { stdenv
 , lib
 , fetchurl
-, fetchpatch
 , autoreconfHook
 , dconf
 , evolution-data-server
 , gdm
-, geocode-glib
+, geocode-glib_2
 , gettext
 , glib
 , gnome-desktop
@@ -26,13 +25,13 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-panel";
-  version = "3.44.0";
+  version = "3.46.0";
 
   outputs = [ "out" "dev" "man" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    hash = "sha256-mWVfddAxh2wTDtI8TaIsCZ57zEBIsCVaPDo7vHh7Mao=";
+    hash = "sha256-zsehG3DFJLXo121Nfk2DXuYHq9outC9N92GeYusGrrE=";
   };
 
   patches = [
@@ -40,13 +39,6 @@ stdenv.mkDerivation rec {
     # instead of gnome-panel’s libdir so that the NixOS module can make gnome-panel
     # load modules from other packages as well.
     ./modulesdir-env-var.patch
-
-    # Add missing geocode-glib-1.0 dependency
-    # https://gitlab.gnome.org/GNOME/gnome-panel/-/merge_requests/49
-    (fetchpatch {
-      url = "https://gitlab.gnome.org/GNOME/gnome-panel/-/commit/f58a43ec4649a25f1a762b36e1401b81cd2b214b.patch";
-      sha256 = "sha256-DFqaNUjkLh4xd81qgQpl+568eUZeWyF8LxdZoTgMfCQ=";
-    })
   ];
 
   # make .desktop Exec absolute
@@ -79,7 +71,7 @@ stdenv.mkDerivation rec {
     dconf
     evolution-data-server
     gdm
-    geocode-glib
+    geocode-glib_2
     glib
     gnome-desktop
     gnome-menus
diff --git a/pkgs/desktops/gnome/misc/gpaste/default.nix b/pkgs/desktops/gnome/misc/gpaste/default.nix
index ba42a802836..bc54591ebd6 100644
--- a/pkgs/desktops/gnome/misc/gpaste/default.nix
+++ b/pkgs/desktops/gnome/misc/gpaste/default.nix
@@ -9,6 +9,7 @@
 , gobject-introspection
 , gtk3
 , gtk4
+, gcr_4
 , libadwaita
 , meson
 , mutter
@@ -16,22 +17,31 @@
 , pango
 , pkg-config
 , vala
+, desktop-file-utils
 , wrapGAppsHook
 }:
 
 stdenv.mkDerivation rec {
-  version = "42.1";
+  version = "43.0";
   pname = "gpaste";
 
   src = fetchFromGitHub {
     owner = "Keruspe";
     repo = "GPaste";
     rev = "v${version}";
-    sha256 = "sha256-A5NZ4NiPVZUr7vPdDuNywLsLrejZ4SCg7+3//ZNRmLY=";
+    sha256 = "sha256-F+AWTYVK145RzJ1Zldh4Q4R/hN/D7aXO3SIJ1t6ClWs=";
   };
 
   patches = [
     ./fix-paths.patch
+
+    # Build against GCR 4.
+    # Patch was temporarily reverted.
+    # https://github.com/Keruspe/GPaste/pull/409
+    (fetchpatch {
+      url = "https://github.com/Keruspe/GPaste/commit/0378cb4a657042ce5321f1d9728cff31e55bede6.patch";
+      sha256 = "0Ngr+/fS5/wICR84GEiE0pXEXQ/f/3G59lDivH167m8=";
+    })
   ];
 
   # TODO: switch to substituteAll with placeholder
@@ -52,6 +62,7 @@ stdenv.mkDerivation rec {
     ninja
     pkg-config
     vala
+    desktop-file-utils
     wrapGAppsHook
   ];
 
@@ -61,6 +72,7 @@ stdenv.mkDerivation rec {
     glib
     gtk3
     gtk4
+    gcr_4
     libadwaita
     mutter
     pango
@@ -72,10 +84,6 @@ stdenv.mkDerivation rec {
     "-Dsystemd-user-unit-dir=${placeholder "out"}/etc/systemd/user"
   ];
 
-  postInstall = ''
-    ${glib.dev}/bin/glib-compile-schemas "$out/share/glib-2.0/schemas"
-  '';
-
   meta = with lib; {
     homepage = "https://github.com/Keruspe/GPaste";
     description = "Clipboard management system with GNOME 3 integration";
diff --git a/pkgs/desktops/gnome/misc/metacity/default.nix b/pkgs/desktops/gnome/misc/metacity/default.nix
index ef3e31f1032..460dbfdb38b 100644
--- a/pkgs/desktops/gnome/misc/metacity/default.nix
+++ b/pkgs/desktops/gnome/misc/metacity/default.nix
@@ -18,11 +18,11 @@
 
 stdenv.mkDerivation rec {
   pname = "metacity";
-  version = "3.44.0";
+  version = "3.46.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "GcPF150hcfRbqg9jLMiZX4YHvxIxoWAUQ5usm6Flp8A=";
+    sha256 = "S6d36ThUe/zL+azKCWdXTEZkMCLgVMk6AzQZyzzHwew=";
   };
 
   patches = [
diff --git a/pkgs/desktops/gnome/misc/nautilus-python/default.nix b/pkgs/desktops/gnome/misc/nautilus-python/default.nix
index c1d58e2dbda..b99d939bc12 100644
--- a/pkgs/desktops/gnome/misc/nautilus-python/default.nix
+++ b/pkgs/desktops/gnome/misc/nautilus-python/default.nix
@@ -2,27 +2,26 @@
 , lib
 , substituteAll
 , fetchurl
+, meson
+, ninja
 , pkg-config
-, which
 , gtk-doc
-, docbook_xsl
+, docbook-xsl-nons
 , docbook_xml_dtd_412
 , python3
-, ncurses
 , nautilus
-, gtk3
 , gnome
 }:
 
 stdenv.mkDerivation rec {
   pname = "nautilus-python";
-  version = "1.2.3";
+  version = "4.0";
 
-  outputs = [ "out" "dev" "doc" ];
+  outputs = [ "out" "dev" "doc" "devdoc" ];
 
   src = fetchurl {
-    url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "161050sx3sdxqcpjkjcpf6wl4kx0jydihga7mcvrj9c2f8ly0g07";
+    url = "mirror://gnome/sources/nautilus-python/${lib.versions.majorMinor version}/nautilus-python-${version}.tar.xz";
+    sha256 = "FyQ9Yut9fYOalGGrjQcBaIgFxxYaZwXmFBOljsJoKBo=";
   };
 
   patches = [
@@ -37,38 +36,23 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [
     pkg-config
-    which
+    meson
+    ninja
     gtk-doc
-    docbook_xsl
+    docbook-xsl-nons
     docbook_xml_dtd_412
   ];
 
   buildInputs = [
     python3
-    ncurses # required by python3
     python3.pkgs.pygobject3
     nautilus
-    gtk3 # required by libnautilus-extension
   ];
 
-  # Workaround build failure on -fno-common toolchains:
-  #   ld: nautilus-python-object.o:src/nautilus-python.h:61: multiple definition of
-  #     `_PyNautilusMenu_Type'; nautilus-python.o:src/nautilus-python.h:61: first defined here
-  # TODO: remove it once upstream fixes and releases:
-  #   https://gitlab.gnome.org/GNOME/nautilus-python/-/merge_requests/7
-  NIX_CFLAGS_COMPILE = "-fcommon";
-
-  makeFlags = [
-    "PYTHON_LIB_LOC=${python3}/lib"
-  ];
-
-  PKG_CONFIG_LIBNAUTILUS_EXTENSION_EXTENSIONDIR = "${placeholder "out"}/lib/nautilus/extensions-3.0";
-
   passthru = {
     updateScript = gnome.updateScript {
       packageName = pname;
       attrPath = "gnome.${pname}";
-      versionPolicy = "odd-unstable";
     };
   };
 
diff --git a/pkgs/desktops/lxqt/lxqt-build-tools/default.nix b/pkgs/desktops/lxqt/lxqt-build-tools/default.nix
index 670cdc44e55..6da001a554c 100644
--- a/pkgs/desktops/lxqt/lxqt-build-tools/default.nix
+++ b/pkgs/desktops/lxqt/lxqt-build-tools/default.nix
@@ -30,6 +30,12 @@ mkDerivation rec {
       url = "https://github.com/lxqt/lxqt-build-tools/pull/76/commits/fa9672b671ede3f46b004f81580f9afb50fedf00.patch";
       sha256 = "0dl7n1afcc6ky9vd9lpc65p9grpszpql7lfjq2vlzlilixnv8xv1";
     })
+    # Fix build failure of libqtxdg with GLib 2.73.1+
+    # https://github.com/lxqt/lxqt-build-tools/pull/79
+    (fetchpatch {
+      url = "https://github.com/lxqt/lxqt-build-tools/commit/4991811d9212ec1176af6d1cbe88aa37efad4836.patch";
+      sha256 = "sha256-PsYJKonMG6A9O4Li+RC1qBjFUzYgxVAwzSqHq/phmPc=";
+    })
   ];
 
   postPatch = ''
diff --git a/pkgs/desktops/pantheon/apps/elementary-calendar/default.nix b/pkgs/desktops/pantheon/apps/elementary-calendar/default.nix
index 1984a6ebbe2..9f5613fcd22 100644
--- a/pkgs/desktops/pantheon/apps/elementary-calendar/default.nix
+++ b/pkgs/desktops/pantheon/apps/elementary-calendar/default.nix
@@ -1,6 +1,7 @@
 { lib
 , stdenv
 , fetchFromGitHub
+, fetchpatch
 , nix-update-script
 , meson
 , ninja
@@ -12,10 +13,10 @@
 , evolution-data-server
 , folks
 , geoclue2
-, geocode-glib
+, geocode-glib_2
 , granite
 , gtk3
-, libchamplain
+, libchamplain_libsoup3
 , libgee
 , libhandy
 , libical
@@ -32,6 +33,19 @@ stdenv.mkDerivation rec {
     sha256 = "sha256-c2c8QNifBDzb0CelB72AIL4G694l6KCSXBjWIHrzZJo=";
   };
 
+  patches = [
+    # build: support evolution-data-server 3.46
+    # https://github.com/elementary/calendar/pull/758
+    (fetchpatch {
+      url = "https://github.com/elementary/calendar/commit/62c20e5786accd68b96c423b04e32c043e726cac.patch";
+      sha256 = "sha256-xatxoSwAIHiUA03vvBdM8HSW27vhPLvAxEuGK0gLiio=";
+    })
+
+    # Workaround for showing date numbers (TODO: should try to fix upstream)
+    # https://github.com/elementary/calendar/issues/756#issuecomment-1252400047
+    ./partly-revert-pr-301.patch
+  ];
+
   nativeBuildInputs = [
     meson
     ninja
@@ -46,10 +60,10 @@ stdenv.mkDerivation rec {
     evolution-data-server
     folks
     geoclue2
-    geocode-glib
+    geocode-glib_2
     granite
     gtk3
-    libchamplain
+    libchamplain_libsoup3
     libgee
     libhandy
     libical
diff --git a/pkgs/desktops/pantheon/apps/elementary-calendar/partly-revert-pr-301.patch b/pkgs/desktops/pantheon/apps/elementary-calendar/partly-revert-pr-301.patch
new file mode 100644
index 00000000000..0de31ee6365
--- /dev/null
+++ b/pkgs/desktops/pantheon/apps/elementary-calendar/partly-revert-pr-301.patch
@@ -0,0 +1,57 @@
+diff --git a/src/Grid/Grid.vala b/src/Grid/Grid.vala
+index 61706fc8..9b69fc14 100644
+--- a/src/Grid/Grid.vala
++++ b/src/Grid/Grid.vala
+@@ -215,7 +215,7 @@ public class Grid : Gtk.Grid {
+
+         day.in_current_month = new_date.get_month () == month_start.get_month ();
+
+-        day.date = new_date;
++        day.update_date (new_date);
+         return day;
+     }
+
+diff --git a/src/Grid/GridDay.vala b/src/Grid/GridDay.vala
+index 3e59cb7b..df04fe6f 100644
+--- a/src/Grid/GridDay.vala
++++ b/src/Grid/GridDay.vala
+@@ -35,6 +35,7 @@ public class Maya.View.GridDay : Gtk.EventBox {
+     public bool draw_left_border = true;
+     private VAutoHider event_box;
+     private GLib.HashTable<string, EventButton> event_buttons;
++    Gtk.Label label;
+
+     public bool in_current_month {
+         set {
+@@ -79,7 +80,7 @@ public class Maya.View.GridDay : Gtk.EventBox {
+         style_context.add_provider (style_provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION);
+         style_context.add_class ("cell");
+
+-        var label = new Gtk.Label ("");
++        label = new Gtk.Label ("");
+         label.halign = Gtk.Align.END;
+         label.get_style_context ().add_provider (style_provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION);
+         label.margin = EVENT_MARGIN;
+@@ -100,10 +101,6 @@ public class Maya.View.GridDay : Gtk.EventBox {
+
+         Gtk.TargetEntry dnd = {"binary/calendar", 0, 0};
+         Gtk.drag_dest_set (this, Gtk.DestDefaults.MOTION, {dnd}, Gdk.DragAction.MOVE);
+-
+-        this.notify["date"].connect (() => {
+-            label.label = date.get_day_of_month ().to_string ();
+-        });
+     }
+
+     public override bool drag_drop (Gdk.DragContext context, int x, int y, uint time_) {
+@@ -174,6 +171,11 @@ public class Maya.View.GridDay : Gtk.EventBox {
+         event_buttons.remove_all ();
+     }
+
++    public void update_date (DateTime date) {
++        this.date = date;
++        label.label = date.get_day_of_month ().to_string ();
++    }
++
+     public void set_selected (bool selected) {
+         if (selected) {
+             set_state_flags (Gtk.StateFlags.SELECTED, true);
diff --git a/pkgs/desktops/pantheon/apps/elementary-mail/default.nix b/pkgs/desktops/pantheon/apps/elementary-mail/default.nix
index 1dc000f66ad..879f1f8bd91 100644
--- a/pkgs/desktops/pantheon/apps/elementary-mail/default.nix
+++ b/pkgs/desktops/pantheon/apps/elementary-mail/default.nix
@@ -1,6 +1,7 @@
 { lib
 , stdenv
 , fetchFromGitHub
+, fetchpatch
 , nix-update-script
 , pkg-config
 , meson
@@ -10,10 +11,8 @@
 , gtk3
 , libxml2
 , libhandy
-, webkitgtk
+, webkitgtk_4_1
 , folks
-, libgdata
-, sqlite
 , glib-networking
 , granite
 , evolution-data-server
@@ -32,6 +31,21 @@ stdenv.mkDerivation rec {
     sha256 = "sha256-DO3nybH7tb/ISrSQ3+Oj612m64Ov6X0GAWePMbKjCc4=";
   };
 
+  patches = [
+    # build: fix documentation build
+    # https://github.com/elementary/mail/pull/795
+    (fetchpatch {
+      url = "https://github.com/elementary/mail/commit/52a422cb1c5f061d8a683005e44da0a1c2195096.patch";
+      sha256 = "sha256-ndcIZXvmQbM/31Wtm6OSCnXdMYx+OlJrqV+baq6m+KY=";
+    })
+    # build: support webkit2gtk-4.1
+    # https://github.com/elementary/mail/pull/794
+    (fetchpatch {
+      url = "https://github.com/elementary/mail/commit/7d4878543b27251664852c708d54abc1e4580eab.patch";
+      sha256 = "sha256-yl6Bzjinp+ti/aX+t22GibGeQFtharZNk3MmbuJm0Tk=";
+    })
+  ];
+
   nativeBuildInputs = [
     libxml2
     meson
@@ -48,11 +62,9 @@ stdenv.mkDerivation rec {
     glib-networking
     granite
     gtk3
-    libgdata
     libgee
     libhandy
-    sqlite
-    webkitgtk
+    webkitgtk_4_1
   ];
 
   postPatch = ''
diff --git a/pkgs/desktops/pantheon/apps/elementary-tasks/default.nix b/pkgs/desktops/pantheon/apps/elementary-tasks/default.nix
index 7efd7e99da2..cd82dba99bf 100644
--- a/pkgs/desktops/pantheon/apps/elementary-tasks/default.nix
+++ b/pkgs/desktops/pantheon/apps/elementary-tasks/default.nix
@@ -73,5 +73,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.linux;
     maintainers = teams.pantheon.members;
     mainProgram = "io.elementary.tasks";
+    broken = true; # https://github.com/elementary/tasks/issues/340
   };
 }
diff --git a/pkgs/desktops/pantheon/apps/switchboard-plugs/onlineaccounts/default.nix b/pkgs/desktops/pantheon/apps/switchboard-plugs/onlineaccounts/default.nix
index a3d8d049e3b..7b9fb8bf698 100644
--- a/pkgs/desktops/pantheon/apps/switchboard-plugs/onlineaccounts/default.nix
+++ b/pkgs/desktops/pantheon/apps/switchboard-plugs/onlineaccounts/default.nix
@@ -1,6 +1,7 @@
 { lib
 , stdenv
 , fetchFromGitHub
+, fetchpatch
 , nix-update-script
 , meson
 , ninja
@@ -10,9 +11,7 @@
 , glib
 , granite
 , gtk3
-, libgdata
 , libhandy
-, sqlite
 , switchboard
 }:
 
@@ -27,6 +26,15 @@ stdenv.mkDerivation rec {
     sha256 = "sha256-Q/vvXKyeedn5o7HnL9F5ixSjJS3OWrvvHbzvx2fW2qY=";
   };
 
+  patches = [
+    # build: support evolution-data-server 3.45
+    # https://github.com/elementary/switchboard-plug-onlineaccounts/pull/244
+    (fetchpatch {
+      url = "https://github.com/elementary/switchboard-plug-onlineaccounts/commit/b60f0458a23a2f76ad14d399f145e150e1ab82d3.patch";
+      sha256 = "sha256-C7woN4shPrVlSWZeW0Fz+xFi5CTQd2K5BsF5YeI9x0Y=";
+    })
+  ];
+
   nativeBuildInputs = [
     meson
     ninja
@@ -39,9 +47,7 @@ stdenv.mkDerivation rec {
     glib
     granite
     gtk3
-    libgdata
     libhandy
-    sqlite # needed for camel-1.2
     switchboard
   ];
 
diff --git a/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/default.nix b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/default.nix
index 3f7408d9dff..c884dd2d247 100644
--- a/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/default.nix
+++ b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/default.nix
@@ -37,6 +37,10 @@ stdenv.mkDerivation rec {
       src = ./fix-paths.patch;
       elementary_calendar = elementary-calendar;
     })
+
+    # Workaround for showing date numbers (TODO: should try to fix upstream)
+    # https://github.com/elementary/calendar/issues/756#issuecomment-1252400047
+    ./partly-revert-pr-150.patch
   ];
 
   nativeBuildInputs = [
diff --git a/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/partly-revert-pr-150.patch b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/partly-revert-pr-150.patch
new file mode 100644
index 00000000000..766c1dda29f
--- /dev/null
+++ b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/partly-revert-pr-150.patch
@@ -0,0 +1,40 @@
+diff --git a/src/Widgets/calendar/Grid.vala b/src/Widgets/calendar/Grid.vala
+index e440306..21a631a 100644
+--- a/src/Widgets/calendar/Grid.vala
++++ b/src/Widgets/calendar/Grid.vala
+@@ -229,7 +229,7 @@ namespace DateTime.Widgets {
+                 day.sensitive_container (false);
+             }
+ 
+-            day.date = new_date;
++            day.update_date (new_date);
+ 
+             return day;
+         }
+diff --git a/src/Widgets/calendar/GridDay.vala b/src/Widgets/calendar/GridDay.vala
+index 8602875..7bd6140 100644
+--- a/src/Widgets/calendar/GridDay.vala
++++ b/src/Widgets/calendar/GridDay.vala
+@@ -79,10 +79,6 @@ public class DateTime.Widgets.GridDay : Gtk.EventBox {
+         button_press_event.connect (on_button_press);
+         key_press_event.connect (on_key_press);
+ 
+-        notify["date"].connect (() => {
+-            label.label = date.get_day_of_month ().to_string ();
+-        });
+-
+         component_dots = new Gee.HashMap<string, Gtk.Widget> ();
+     }
+ 
+@@ -124,6 +120,11 @@ public class DateTime.Widgets.GridDay : Gtk.EventBox {
+         }
+     }
+ 
++    public void update_date (GLib.DateTime date) {
++        this.date = date;
++        label.label = date.get_day_of_month ().to_string ();
++    }
++
+     public void set_selected (bool selected) {
+         if (selected) {
+             set_state_flags (Gtk.StateFlags.SELECTED, true);
diff --git a/pkgs/development/compilers/vala/default.nix b/pkgs/development/compilers/vala/default.nix
index 43ff938598d..6db4b9c959b 100644
--- a/pkgs/development/compilers/vala/default.nix
+++ b/pkgs/development/compilers/vala/default.nix
@@ -93,18 +93,18 @@ let
 
 in rec {
   vala_0_48 = generic {
-    version = "0.48.24";
-    sha256 = "NknvhFc7aGX8NHBkDuYDcgCZ65FbOfqtGbdJjeGn3yQ=";
+    version = "0.48.25";
+    sha256 = "UMs8Xszdx/1DaL+pZBSlVgReedKxWmiRjHJ7jIOxiiQ=";
   };
 
   vala_0_54 = generic {
-    version = "0.54.8";
-    sha256 = "7fs+eUhqS/SM666pKR5X/HfakyK2lh6VSd9tlz0EvIA=";
+    version = "0.54.9";
+    sha256 = "hXLA6Nd9eMFZfVFgCPBUDH50leA10ou0wlzJk+U85LQ=";
   };
 
   vala_0_56 = generic {
-    version = "0.56.2";
-    sha256 = "Zslhm7F4Wf0aw6ugpXlwYT44/Soe4wVBF0JgyfuQEkw=";
+    version = "0.56.3";
+    sha256 = "4QZiIb97icsfpzJ6OIhkXLM7YE3jv0WqgRMv0EC2mb8=";
   };
 
   vala = vala_0_56;
diff --git a/pkgs/development/libraries/appstream-glib/default.nix b/pkgs/development/libraries/appstream-glib/default.nix
index 5882805fdfc..2e3a67af5ad 100644
--- a/pkgs/development/libraries/appstream-glib/default.nix
+++ b/pkgs/development/libraries/appstream-glib/default.nix
@@ -14,7 +14,7 @@
 , gtk3
 , json-glib
 , libarchive
-, libsoup
+, curl
 , libuuid
 , libxslt
 , meson
@@ -24,7 +24,7 @@
 }:
 stdenv.mkDerivation rec {
   pname = "appstream-glib";
-  version = "0.7.18";
+  version = "0.8.1";
 
   outputs = [ "out" "dev" "man" "installedTests" ];
   outputBin = "dev";
@@ -33,7 +33,7 @@ stdenv.mkDerivation rec {
     owner = "hughsie";
     repo = "appstream-glib";
     rev = "${lib.replaceStrings ["-"] ["_"] pname}_${lib.replaceStrings ["."] ["_"] version}";
-    sha256 = "12s7d3nqjs1fldnppbg2mkjg4280f3h8yzj3q1hiz3chh1w0vjbx";
+    sha256 = "Qf0z9YTfjTiEr9OlK2BgOpVDtM2ozsiyjzO04O81zas=";
   };
 
   nativeBuildInputs = [
@@ -57,7 +57,7 @@ stdenv.mkDerivation rec {
     gtk3
     json-glib
     libarchive
-    libsoup
+    curl
     libuuid
   ];
 
diff --git a/pkgs/development/libraries/at-spi2-atk/default.nix b/pkgs/development/libraries/at-spi2-atk/default.nix
deleted file mode 100644
index 7989cfd8577..00000000000
--- a/pkgs/development/libraries/at-spi2-atk/default.nix
+++ /dev/null
@@ -1,45 +0,0 @@
-{ lib, stdenv
-, fetchurl
-
-, meson
-, ninja
-, pkg-config
-
-, at-spi2-core
-, atk
-, dbus
-, glib
-, libxml2
-
-, gnome # To pass updateScript
-}:
-
-stdenv.mkDerivation rec {
-  pname = "at-spi2-atk";
-  version = "2.38.0";
-
-  src = fetchurl {
-    url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "z6AIpa+CKzauYofxgYLEDJHdaZxV+qOGBYge0XXKRk8=";
-  };
-
-  nativeBuildInputs = [ meson ninja pkg-config ];
-  buildInputs = [ at-spi2-core atk dbus glib libxml2 ];
-
-  doCheck = false; # fails with "No test data file provided"
-
-  passthru = {
-    updateScript = gnome.updateScript {
-      packageName = pname;
-      versionPolicy = "odd-unstable";
-    };
-  };
-
-  meta = with lib; {
-    description = "D-Bus bridge for Assistive Technology Service Provider Interface (AT-SPI) and Accessibility Toolkit (ATK)";
-    homepage = "https://gitlab.gnome.org/GNOME/at-spi2-atk";
-    license = licenses.lgpl21Plus;
-    maintainers = teams.gnome.members;
-    platforms = platforms.unix;
-  };
-}
diff --git a/pkgs/development/libraries/at-spi2-core/default.nix b/pkgs/development/libraries/at-spi2-core/default.nix
index 606ff2b3404..76687764586 100644
--- a/pkgs/development/libraries/at-spi2-core/default.nix
+++ b/pkgs/development/libraries/at-spi2-core/default.nix
@@ -11,6 +11,7 @@
 , glib
 , dconf
 , libX11
+, libxml2
 , libXtst
 , libXi
 , libXext
@@ -19,13 +20,13 @@
 
 stdenv.mkDerivation rec {
   pname = "at-spi2-core";
-  version = "2.44.1";
+  version = "2.46.0";
 
   outputs = [ "out" "dev" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "S+sjJwumz3yvILWXNU11GU2Jr7adLvzxX0JxaIum90Y=";
+    sha256 = "qgyGx596jWe65JpbelqwhDDGCM/+bjO/R6cvQasDw9A=";
   };
 
   nativeBuildInputs = [
@@ -38,6 +39,7 @@ stdenv.mkDerivation rec {
 
   buildInputs = [
     libX11
+    libxml2
     # at-spi2-core can be build without X support, but due it is a client-side library, GUI-less usage is a very rare case
     libXtst
     libXi
@@ -46,6 +48,7 @@ stdenv.mkDerivation rec {
   ];
 
   # In atspi-2.pc dbus-1 glib-2.0
+  # In atk.pc gobject-2.0
   propagatedBuildInputs = [
     dbus
     glib
@@ -55,6 +58,7 @@ stdenv.mkDerivation rec {
   doCheck = false;
 
   mesonFlags = [
+    "-Dintrospection=${if stdenv.buildPlatform == stdenv.hostPlatform then "yes" else "no"}"
     # Provide dbus-daemon fallback when it is not already running when
     # at-spi2-bus-launcher is executed. This allows us to avoid
     # including the entire dbus closure in libraries linked with
@@ -80,7 +84,7 @@ stdenv.mkDerivation rec {
     description = "Assistive Technology Service Provider Interface protocol definitions and daemon for D-Bus";
     homepage = "https://gitlab.gnome.org/GNOME/at-spi2-core";
     license = licenses.lgpl21Plus;
-    maintainers = teams.gnome.members;
+    maintainers = teams.gnome.members ++ (with maintainers; [ raskin ]);
     platforms = platforms.unix;
   };
 }
diff --git a/pkgs/development/libraries/atk/default.nix b/pkgs/development/libraries/atk/default.nix
deleted file mode 100644
index 268bf43eb3e..00000000000
--- a/pkgs/development/libraries/atk/default.nix
+++ /dev/null
@@ -1,77 +0,0 @@
-{ stdenv
-, lib
-, fetchurl
-, meson
-, ninja
-, gettext
-, pkg-config
-, glib
-, fixDarwinDylibNames
-, gobject-introspection
-, gnome
-}:
-
-stdenv.mkDerivation rec {
-  pname = "atk";
-  version = "2.38.0";
-
-  outputs = [ "out" "dev" ];
-
-  src = fetchurl {
-    url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "rE3ipO9L1WZQUpUv4WllfmXolcUFff+zwqgQ9hkaDDY=";
-  };
-
-  patches = [
-    # meson builds an incorrect .pc file
-    # glib should be Requires not Requires.private
-    ./fix_pc.patch
-  ];
-
-  nativeBuildInputs = [
-    meson
-    ninja
-    pkg-config
-    gettext
-    gobject-introspection
-    glib
-  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
-    fixDarwinDylibNames
-  ];
-
-  buildInputs = [ gobject-introspection ];
-
-  propagatedBuildInputs = [
-    # Required by atk.pc
-    glib
-  ];
-
-  doCheck = true;
-
-  passthru = {
-    updateScript = gnome.updateScript {
-      packageName = pname;
-      versionPolicy = "odd-unstable";
-    };
-  };
-
-  meta = {
-    description = "Accessibility toolkit";
-
-    longDescription = ''
-      ATK is the Accessibility Toolkit.  It provides a set of generic
-      interfaces allowing accessibility technologies such as screen
-      readers to interact with a graphical user interface.  Using the
-      ATK interfaces, accessibility tools have full access to view and
-      control running applications.
-    '';
-
-    homepage = "https://gitlab.gnome.org/GNOME/atk";
-
-    license = lib.licenses.lgpl2Plus;
-
-    maintainers = with lib.maintainers; [ raskin ];
-    platforms = lib.platforms.linux ++ lib.platforms.darwin;
-  };
-
-}
diff --git a/pkgs/development/libraries/atk/fix_pc.patch b/pkgs/development/libraries/atk/fix_pc.patch
deleted file mode 100644
index 3d19d9862cb..00000000000
--- a/pkgs/development/libraries/atk/fix_pc.patch
+++ /dev/null
@@ -1,9 +0,0 @@
---- a/atk/meson.build
-+++ b/atk/meson.build
-@@ -162,5 +162,6 @@ pkgconfig.generate(libatk,
-   name: 'Atk',
-   description: 'Accessibility Toolkit',
-   subdirs: atk_api_name,
-+  requires: glib_dep,
-   filebase: 'atk',
- )
diff --git a/pkgs/development/libraries/flatpak/bubblewrap-paths.patch b/pkgs/development/libraries/flatpak/bubblewrap-paths.patch
deleted file mode 100644
index e0b6df19589..00000000000
--- a/pkgs/development/libraries/flatpak/bubblewrap-paths.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff --git a/icon-validator/validate-icon.c b/icon-validator/validate-icon.c
-index 9e885070..d02eeb8c 100644
---- a/icon-validator/validate-icon.c
-+++ b/icon-validator/validate-icon.c
-@@ -156,8 +156,8 @@ rerun_in_sandbox (const char *arg_width,
-             "--unshare-ipc",
-             "--unshare-net",
-             "--unshare-pid",
--            "--ro-bind", "/usr", "/usr",
--            "--ro-bind-try", "/etc/ld.so.cache", "/etc/ld.so.cache",
-+            "--ro-bind", "@storeDir@", "@storeDir@",
-+            "--ro-bind", "/run/current-system", "/run/current-system",
-             "--ro-bind", validate_icon, validate_icon,
-             NULL);
- 
diff --git a/pkgs/development/libraries/flatpak/default.nix b/pkgs/development/libraries/flatpak/default.nix
index c992a6b0dfa..d79923c0f81 100644
--- a/pkgs/development/libraries/flatpak/default.nix
+++ b/pkgs/development/libraries/flatpak/default.nix
@@ -11,13 +11,15 @@
 , libxslt
 , pkg-config
 , xmlto
-, appstream-glib
 , substituteAll
+, runCommand
 , bison
 , xdg-dbus-proxy
 , p11-kit
+, appstream
 , bubblewrap
 , bzip2
+, curl
 , dbus
 , glib
 , gpgme
@@ -32,9 +34,8 @@
 , shared-mime-info
 , desktop-file-utils
 , gtk3
-, fuse
+, fuse3
 , nixosTests
-, libsoup
 , xz
 , zstd
 , ostree
@@ -51,16 +52,16 @@
 , makeWrapper
 }:
 
-stdenv.mkDerivation rec {
+stdenv.mkDerivation (finalAttrs: {
   pname = "flatpak";
-  version = "1.12.7";
+  version = "1.14.0";
 
   # TODO: split out lib once we figure out what to do with triggerdir
   outputs = [ "out" "dev" "man" "doc" "devdoc" "installedTests" ];
 
   src = fetchurl {
-    url = "https://github.com/flatpak/flatpak/releases/download/${version}/${pname}-${version}.tar.xz";
-    sha256 = "sha256-bbUqUxzieCgqx+v7mfZqC7PsyvROhkhEwslcHuW6kxY="; # Taken from https://github.com/flatpak/flatpak/releases/
+    url = "https://github.com/flatpak/flatpak/releases/download/${finalAttrs.version}/flatpak-${finalAttrs.version}.tar.xz";
+    sha256 = "sha256-jidpc3cOok3fJZetSuzTa5g5PmvekeSOF0OqymfyeBU="; # Taken from https://github.com/flatpak/flatpak/releases/
   };
 
   patches = [
@@ -80,12 +81,6 @@ stdenv.mkDerivation rec {
       p11kit = "${p11-kit.bin}/bin/p11-kit";
     })
 
-    # Adapt paths exposed to sandbox for NixOS.
-    (substituteAll {
-      src = ./bubblewrap-paths.patch;
-      inherit (builtins) storeDir;
-    })
-
     # Allow gtk-doc to find schemas using XML_CATALOG_FILES environment variable.
     # Patch taken from gtk-doc expression.
     ./respect-xml-catalog-files-var.patch
@@ -94,8 +89,13 @@ stdenv.mkDerivation rec {
     # https://github.com/NixOS/nixpkgs/issues/53441
     ./unset-env-vars.patch
 
-    # But we want the GDK_PIXBUF_MODULE_FILE from the wrapper affect the icon validator.
-    ./validate-icon-pixbuf.patch
+    # Do not clear XDG_DATA_DIRS in fish shell
+    # https://github.com/flatpak/flatpak/pull/5123
+    ./no-breaking-fish.patch
+
+    # The icon validator needs to access the gdk-pixbuf loaders in the Nix store
+    # and cannot bind FHS paths since those are not available on NixOS.
+    finalAttrs.passthru.icon-validator-patch
   ];
 
   nativeBuildInputs = [
@@ -110,14 +110,15 @@ stdenv.mkDerivation rec {
     libxslt
     pkg-config
     xmlto
-    appstream-glib
     bison
     wrapGAppsNoGuiHook
   ];
 
   buildInputs = [
+    appstream
     bubblewrap
     bzip2
+    curl
     dbus
     dconf
     gpgme
@@ -125,14 +126,13 @@ stdenv.mkDerivation rec {
     libarchive
     libcap
     libseccomp
-    libsoup
     xz
     zstd
     polkit
     python3
     systemd
     xorg.libXau
-    fuse
+    fuse3
     gsettings-desktop-schemas
     glib-networking
     librsvg # for flatpak-validate-icon
@@ -156,6 +156,7 @@ stdenv.mkDerivation rec {
   enableParallelBuilding = true;
 
   configureFlags = [
+    "--with-curl"
     "--with-system-bubblewrap=${bubblewrap}/bin/bwrap"
     "--with-system-dbus-proxy=${xdg-dbus-proxy}/bin/xdg-dbus-proxy"
     "--with-dbus-config-dir=${placeholder "out"}/share/dbus-1/system.d"
@@ -187,8 +188,18 @@ stdenv.mkDerivation rec {
   '';
 
   passthru = {
+    icon-validator-patch = substituteAll {
+      src = ./fix-icon-validation.patch;
+      inherit (builtins) storeDir;
+    };
+
     tests = {
       installedTests = nixosTests.installed-tests.flatpak;
+
+      validate-icon = runCommand "test-icon-validation" { } ''
+        ${finalAttrs.finalPackage}/libexec/flatpak-validate-icon --sandbox 512 512 ${../../../applications/audio/zynaddsubfx/ZynLogo.svg} > "$out"
+        grep format=svg "$out"
+      '';
     };
   };
 
@@ -199,4 +210,4 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ jtojnar ];
     platforms = platforms.linux;
   };
-}
+})
diff --git a/pkgs/development/libraries/flatpak/fix-icon-validation.patch b/pkgs/development/libraries/flatpak/fix-icon-validation.patch
new file mode 100644
index 00000000000..0e4db2b162f
--- /dev/null
+++ b/pkgs/development/libraries/flatpak/fix-icon-validation.patch
@@ -0,0 +1,31 @@
+--- a/icon-validator/validate-icon.c
++++ b/icon-validator/validate-icon.c
+@@ -163,7 +163,7 @@ rerun_in_sandbox (const char *arg_width,
+                   const char *arg_height,
+                   const char *filename)
+ {
+-  const char * const usrmerged_dirs[] = { "bin", "lib32", "lib64", "lib", "sbin" };
++  const char * const usrmerged_dirs[] = { };
+   int i;
+   g_autoptr(GPtrArray) args = g_ptr_array_new_with_free_func (g_free);
+   char validate_icon[PATH_MAX + 1];
+@@ -183,8 +183,7 @@ rerun_in_sandbox (const char *arg_width,
+             "--unshare-ipc",
+             "--unshare-net",
+             "--unshare-pid",
+-            "--ro-bind", "/usr", "/usr",
+-            "--ro-bind-try", "/etc/ld.so.cache", "/etc/ld.so.cache",
++            "--ro-bind", "@storeDir@", "@storeDir@",
+             "--ro-bind", validate_icon, validate_icon,
+             NULL);
+ 
+@@ -227,6 +226,9 @@ rerun_in_sandbox (const char *arg_width,
+     add_args (args, "--setenv", "G_MESSAGES_DEBUG", g_getenv ("G_MESSAGES_DEBUG"), NULL);
+   if (g_getenv ("G_MESSAGES_PREFIXED"))
+     add_args (args, "--setenv", "G_MESSAGES_PREFIXED", g_getenv ("G_MESSAGES_PREFIXED"), NULL);
++  if (g_getenv ("GDK_PIXBUF_MODULE_FILE"))
++    add_args (args, "--setenv", "GDK_PIXBUF_MODULE_FILE", g_getenv ("GDK_PIXBUF_MODULE_FILE"), NULL);
++
+ 
+   add_args (args, validate_icon, arg_width, arg_height, filename, NULL);
+   g_ptr_array_add (args, NULL);
diff --git a/pkgs/development/libraries/flatpak/fix-test-paths.patch b/pkgs/development/libraries/flatpak/fix-test-paths.patch
index dcba6668185..683cdbcaf18 100644
--- a/pkgs/development/libraries/flatpak/fix-test-paths.patch
+++ b/pkgs/development/libraries/flatpak/fix-test-paths.patch
@@ -1,8 +1,8 @@
 diff --git a/app/flatpak-builtins-build-export.c b/app/flatpak-builtins-build-export.c
-index 43fd0563..4067bd36 100644
+index 3f5d8a1f..79493e61 100644
 --- a/app/flatpak-builtins-build-export.c
 +++ b/app/flatpak-builtins-build-export.c
-@@ -458,7 +458,7 @@ validate_desktop_file (GFile      *desktop_file,
+@@ -464,7 +464,7 @@ validate_desktop_file (GFile      *desktop_file,
    subprocess = g_subprocess_new (G_SUBPROCESS_FLAGS_STDOUT_PIPE |
                                   G_SUBPROCESS_FLAGS_STDERR_PIPE |
                                   G_SUBPROCESS_FLAGS_STDERR_MERGE,
@@ -12,10 +12,10 @@ index 43fd0563..4067bd36 100644
      {
        if (!g_error_matches (local_error, G_SPAWN_ERROR, G_SPAWN_ERROR_NOENT))
 diff --git a/tests/libtest.sh b/tests/libtest.sh
-index acb2095b..b361da16 100644
+index 36d39ac4..3ad2c7a6 100644
 --- a/tests/libtest.sh
 +++ b/tests/libtest.sh
-@@ -431,7 +431,7 @@ if [ -z "${FLATPAK_BWRAP:-}" ]; then
+@@ -511,7 +511,7 @@ if [ -z "${FLATPAK_BWRAP:-}" ]; then
      # running installed-tests: assume we know what we're doing
      _flatpak_bwrap_works=true
  elif ! "$FLATPAK_BWRAP" --unshare-ipc --unshare-net --unshare-pid \
@@ -24,7 +24,7 @@ index acb2095b..b361da16 100644
      _flatpak_bwrap_works=false
  else
      _flatpak_bwrap_works=true
-@@ -504,7 +504,7 @@ dbus-daemon --fork --config-file=session.conf --print-address=3 --print-pid=4 \
+@@ -591,7 +591,7 @@ dbus-daemon --fork --config-file=session.conf --print-address=3 --print-pid=4 \
  export DBUS_SESSION_BUS_ADDRESS="$(cat dbus-session-bus-address)"
  DBUS_SESSION_BUS_PID="$(cat dbus-session-bus-pid)"
  
@@ -33,20 +33,20 @@ index acb2095b..b361da16 100644
      assert_not_reached "Failed to start dbus-daemon"
  fi
  
-@@ -519,7 +519,7 @@ commit_to_path () {
+@@ -606,7 +606,7 @@ commit_to_path () {
  }
  
  cleanup () {
 -    /bin/kill -9 $DBUS_SESSION_BUS_PID
 +    @coreutils@/bin/kill -9 $DBUS_SESSION_BUS_PID
-     gpg-connect-agent --homedir "${FL_GPG_HOMEDIR}" killagent /bye || true
-     fusermount -u $XDG_RUNTIME_DIR/doc || :
+     gpg-connect-agent --homedir "${FL_GPG_HOMEDIR}" killagent /bye >&2 || true
+     fusermount -u $XDG_RUNTIME_DIR/doc >&2 || :
      kill $(jobs -p) &> /dev/null || true
 diff --git a/tests/make-test-app.sh b/tests/make-test-app.sh
-index 612f914f..4b890da2 100755
+index afa11a6b..5b12055f 100755
 --- a/tests/make-test-app.sh
 +++ b/tests/make-test-app.sh
-@@ -151,13 +151,13 @@ msgid "Hello world"
+@@ -190,13 +190,13 @@ msgid "Hello world"
  msgstr "Hallo Welt"
  EOF
  mkdir -p ${DIR}/files/de/share/de/LC_MESSAGES
@@ -60,10 +60,10 @@ index 612f914f..4b890da2 100755
 -msgfmt --output-file ${DIR}/files/fr/share/fr/LC_MESSAGES/helloworld.mo fr.po
 +@gettext@/bin/msgfmt --output-file ${DIR}/files/fr/share/fr/LC_MESSAGES/helloworld.mo fr.po
  
- flatpak build-finish ${DIR}
+ flatpak build-finish ${DIR} >&2
  mkdir -p repos
 diff --git a/tests/make-test-runtime.sh b/tests/make-test-runtime.sh
-index af289625..7db51c17 100755
+index 4ba950df..fd50fab3 100755
 --- a/tests/make-test-runtime.sh
 +++ b/tests/make-test-runtime.sh
 @@ -28,9 +28,10 @@ EOF
@@ -80,7 +80,7 @@ index af289625..7db51c17 100755
  ln -s ../lib ${DIR}/usr/lib64
 @@ -40,40 +41,17 @@ if test -f /sbin/ldconfig.real; then
  else
-     cp `which ldconfig` ${DIR}/usr/bin
+     cp "$(type -P ldconfig)" "${DIR}/usr/bin"
  fi
 -LIBS=`mktemp`
 -BINS=`mktemp`
@@ -106,8 +106,8 @@ index af289625..7db51c17 100755
 -}
 -
  for i in $@ bash ls cat echo readlink socat; do
--    I=`which $i`
--    add_bin $I
+-    I=$(type -P "$i")
+-    add_bin "$I"
 -done
 -for i in `cat $BINS`; do
 -    #echo Adding binary $i 1>&2
@@ -116,16 +116,16 @@ index af289625..7db51c17 100755
 -for i in `cat $LIBS`; do
 -    #echo Adding library $i 1>&2
 -    cp "$i" ${DIR}/usr/lib/
-+    I=$(readlink -f $(which $i))
-+    [ -e ${DIR}/usr/bin/$i ] && continue
++    I=$(readlink -f "$(type -P "$i")")
++    [ -e "${DIR}/usr/bin/$i" ] && continue
 +    requisites=$(nix-store --query --requisites "$I")
 +    for r in $requisites; do
 +        # a single store item can be needed by multiple paths, no need to copy it again
-+        if [ ! -e ${DIR}/$r ]; then
-+            cp -r $r ${DIR}/$r
++        if [ ! -e "${DIR}/$r" ]; then
++            cp -r "$r" "${DIR}/$r"
 +        fi
 +    done
-+    ln -s $I ${DIR}/usr/bin/$i
++    ln -s "$I" "${DIR}/usr/bin/$i"
  done
  ln -s bash ${DIR}/usr/bin/sh
  
@@ -141,18 +141,18 @@ index af289625..7db51c17 100755
 +# We do not copy C.UTF8 locale because it is in locale archive and
 +# that is already copied with glibc.
 +
-+mv ${DIR}/nix/store ${DIR}/usr/store # files outside /usr are not permitted, we will have to replace /nix/store with /usr/store
-+chmod -R u+w ${DIR} # nix store has read-only directories which would cause problems during clean-up, files need to be writable for sed
-+find ${DIR} -type f -print0 | xargs -0 sed -i 's~/nix/store/~/usr/store/~g' # replace hardcoded paths
-+find ${DIR} -type l | xargs -I '{}' sh -c 'tg="$(readlink "$1")"; newtg="${tg#/nix/store/}"; if [ "$tg" != "$newtg" ]; then ln -fs "/usr/store/$newtg" "$1"; fi' -- '{}' # replace symlink targets
++mv "${DIR}/nix/store" "${DIR}/usr/store" # files outside /usr are not permitted, we will have to replace /nix/store with /usr/store
++chmod -R u+w "${DIR}" # nix store has read-only directories which would cause problems during clean-up, files need to be writable for sed
++find "${DIR}" -type f -print0 | xargs -0 sed -i 's~/nix/store/~/usr/store/~g' # replace hardcoded paths
++find "${DIR}" -type l | xargs -I '{}' sh -c 'tg="$(readlink "$1")"; newtg="${tg#/nix/store/}"; if [ "$tg" != "$newtg" ]; then ln -fs "/usr/store/$newtg" "$1"; fi' -- '{}' # replace symlink targets
  
  if [ x$COLLECTION_ID != x ]; then
      collection_args=--collection-id=${COLLECTION_ID}
 diff --git a/tests/testlibrary.c b/tests/testlibrary.c
-index 509ce6cc..6a333c9c 100644
+index 831d85c1..ae4f03d0 100644
 --- a/tests/testlibrary.c
 +++ b/tests/testlibrary.c
-@@ -1399,7 +1399,7 @@ check_bwrap_support (void)
+@@ -1601,7 +1601,7 @@ check_bwrap_support (void)
      {
        gint exit_code = 0;
        char *argv[] = { (char *) bwrap, "--unshare-ipc", "--unshare-net",
@@ -162,44 +162,43 @@ index 509ce6cc..6a333c9c 100644
        g_test_message ("Spawning %s", argv_str);
        g_spawn_sync (NULL, argv, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, NULL, &exit_code, &error);
 diff --git a/triggers/desktop-database.trigger b/triggers/desktop-database.trigger
-index 2188f535..d8283061 100755
+index 1037466d..c4c7ed6d 100755
 --- a/triggers/desktop-database.trigger
 +++ b/triggers/desktop-database.trigger
 @@ -1,5 +1,5 @@
  #!/bin/sh
  
--if test \( -x "$(which update-desktop-database 2>/dev/null)" \) -a \( -d $1/exports/share/applications \); then
--    exec update-desktop-database -q $1/exports/share/applications
-+if test \( -d $1/exports/share/applications \); then
-+    exec @dfu@/bin/update-desktop-database -q $1/exports/share/applications
+-if command -v update-desktop-database >/dev/null && test -d "$1/exports/share/applications"; then
+-    exec update-desktop-database -q "$1/exports/share/applications"
++if test -d "$1/exports/share/applications"; then
++    exec @dfu@/bin/update-desktop-database -q "$1/exports/share/applications"
  fi
 diff --git a/triggers/gtk-icon-cache.trigger b/triggers/gtk-icon-cache.trigger
-index 711cfab2..07baa2ac 100755
+index d9fc8251..d8ddb96e 100755
 --- a/triggers/gtk-icon-cache.trigger
 +++ b/triggers/gtk-icon-cache.trigger
 @@ -1,10 +1,10 @@
  #!/bin/sh
  
--if test \( -x "$(which gtk-update-icon-cache 2>/dev/null)" \) -a \( -d $1/exports/share/icons/hicolor \); then
--    cp /usr/share/icons/hicolor/index.theme $1/exports/share/icons/hicolor/
-+if test \( -d $1/exports/share/icons/hicolor \); then
-+    cp @hicolorIconTheme@/share/icons/hicolor/index.theme $1/exports/share/icons/hicolor/
-     for dir in $1/exports/share/icons/*; do
-         if test -f $dir/index.theme; then
--            if ! gtk-update-icon-cache --quiet $dir; then
-+            if ! @gtk3@/bin/gtk-update-icon-cache --quiet $dir; then
+ if command -v gtk-update-icon-cache >/dev/null && test -d "$1/exports/share/icons/hicolor"; then
+-    cp /usr/share/icons/hicolor/index.theme "$1/exports/share/icons/hicolor/"
++    cp @hicolorIconTheme@/share/icons/hicolor/index.theme "$1/exports/share/icons/hicolor/"
+     for dir in "$1"/exports/share/icons/*; do
+         if test -f "$dir/index.theme"; then
+-            if ! gtk-update-icon-cache --quiet "$dir"; then
++            if ! @gtk3@/bin/gtk-update-icon-cache --quiet "$dir"; then
                  echo "Failed to run gtk-update-icon-cache for $dir"
                  exit 1
              fi
 diff --git a/triggers/mime-database.trigger b/triggers/mime-database.trigger
-index 2067d8ec..a49a8777 100755
+index 10ddbbb3..c270998a 100755
 --- a/triggers/mime-database.trigger
 +++ b/triggers/mime-database.trigger
 @@ -1,5 +1,5 @@
  #!/bin/sh
  
--if test \( -x "$(which update-mime-database 2>/dev/null)" \) -a \( -d $1/exports/share/mime/packages \); then
--    exec update-mime-database $1/exports/share/mime
-+if test \( -d $1/exports/share/mime/packages \); then
-+    exec @smi@/bin/update-mime-database $1/exports/share/mime
+-if command -v update-mime-database >/dev/null && test -d "$1/exports/share/mime/packages"; then
+-    exec update-mime-database "$1/exports/share/mime"
++if test -d "$1/exports/share/mime/packages"; then
++    exec @smi@/bin/update-mime-database "$1/exports/share/mime"
  fi
diff --git a/pkgs/development/libraries/flatpak/no-breaking-fish.patch b/pkgs/development/libraries/flatpak/no-breaking-fish.patch
new file mode 100644
index 00000000000..2a67aead120
--- /dev/null
+++ b/pkgs/development/libraries/flatpak/no-breaking-fish.patch
@@ -0,0 +1,11 @@
+--- a/profile/flatpak.fish
++++ b/profile/flatpak.fish
+@@ -1,7 +1,7 @@
+ if type -q flatpak
+     # Set XDG_DATA_DIRS to include Flatpak installations
+ 
+-    set -x --path XDG_DATA_DIRS
++    set -x --path XDG_DATA_DIRS $XDG_DATA_DIRS
+ 
+     set -q XDG_DATA_DIRS[1]; or set XDG_DATA_DIRS /usr/local/share /usr/share
+     set -q XDG_DATA_HOME; or set -l XDG_DATA_HOME $HOME/.local/share
diff --git a/pkgs/development/libraries/flatpak/validate-icon-pixbuf.patch b/pkgs/development/libraries/flatpak/validate-icon-pixbuf.patch
deleted file mode 100644
index 086114e11c3..00000000000
--- a/pkgs/development/libraries/flatpak/validate-icon-pixbuf.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/icon-validator/validate-icon.c b/icon-validator/validate-icon.c
-index 9e885070..44fea035 100644
---- a/icon-validator/validate-icon.c
-+++ b/icon-validator/validate-icon.c
-@@ -200,6 +200,8 @@ rerun_in_sandbox (const char *arg_width,
-     add_args (args, "--setenv", "G_MESSAGES_DEBUG", g_getenv ("G_MESSAGES_DEBUG"), NULL);
-   if (g_getenv ("G_MESSAGES_PREFIXED"))
-     add_args (args, "--setenv", "G_MESSAGES_PREFIXED", g_getenv ("G_MESSAGES_PREFIXED"), NULL);
-+  if (g_getenv ("GDK_PIXBUF_MODULE_FILE"))
-+    add_args (args, "--setenv", "GDK_PIXBUF_MODULE_FILE", g_getenv ("GDK_PIXBUF_MODULE_FILE"), NULL);
- 
-   add_args (args, validate_icon, arg_width, arg_height, filename, NULL);
-   g_ptr_array_add (args, NULL);
diff --git a/pkgs/development/libraries/folks/default.nix b/pkgs/development/libraries/folks/default.nix
index f6161535df5..41ede8b85a8 100644
--- a/pkgs/development/libraries/folks/default.nix
+++ b/pkgs/development/libraries/folks/default.nix
@@ -17,8 +17,7 @@
 , nss
 , dbus
 , libgee
-, evolution-data-server
-, libgdata
+, evolution-data-server-gtk4
 , libsecret
 , db
 , python3
@@ -61,8 +60,7 @@ stdenv.mkDerivation rec {
   buildInputs = [
     db
     dbus-glib
-    evolution-data-server
-    libgdata # required for some backends transitively
+    evolution-data-server-gtk4
     libsecret
     libsoup
     libxml2
diff --git a/pkgs/development/libraries/gcab/default.nix b/pkgs/development/libraries/gcab/default.nix
index d0d314037d2..ad5ef1ced5b 100644
--- a/pkgs/development/libraries/gcab/default.nix
+++ b/pkgs/development/libraries/gcab/default.nix
@@ -8,7 +8,6 @@
 , pkg-config
 , meson
 , ninja
-, git
 , vala
 , glib
 , zlib
@@ -18,13 +17,13 @@
 
 stdenv.mkDerivation rec {
   pname = "gcab";
-  version = "1.4";
+  version = "1.5";
 
   outputs = [ "bin" "out" "dev" "devdoc" "installedTests" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "13q43iqld4l50yra45lhvkd376pn6qpk7rkx374zn8y9wsdzm9b7";
+    sha256 = "Rr90QkkfqkFIJCuewqB4al9unv+xsFZuUpDozIbwDww=";
   };
 
   patches = [
@@ -35,7 +34,6 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [
     meson
     ninja
-    git
     pkg-config
     vala
     gettext
diff --git a/pkgs/development/libraries/gcr/4.nix b/pkgs/development/libraries/gcr/4.nix
new file mode 100644
index 00000000000..f452d00b40d
--- /dev/null
+++ b/pkgs/development/libraries/gcr/4.nix
@@ -0,0 +1,113 @@
+{ stdenv
+, lib
+, fetchurl
+, pkg-config
+, meson
+, ninja
+, gettext
+, gnupg
+, p11-kit
+, glib
+, libgcrypt
+, libtasn1
+, gtk4
+, pango
+, libsecret
+, openssh
+, systemd
+, gobject-introspection
+, wrapGAppsHook4
+, vala
+, gi-docgen
+, gnome
+, python3
+, shared-mime-info
+}:
+
+stdenv.mkDerivation rec {
+  pname = "gcr";
+  version = "3.92.0";
+
+  outputs = [ "out" "bin" "dev" "devdoc" ];
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "iWq/jh2w9A6ygHPzZPNqcjhayKv4zRNisQFul3If9Rg=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    meson
+    ninja
+    gettext
+    gobject-introspection
+    gi-docgen
+    wrapGAppsHook4
+    vala
+    gi-docgen
+    shared-mime-info
+  ];
+
+  buildInputs = [
+    gnupg
+    libgcrypt
+    libtasn1
+    pango
+    libsecret
+    openssh
+    systemd
+    gtk4
+  ];
+
+  propagatedBuildInputs = [
+    glib
+    p11-kit
+  ];
+
+  checkInputs = [
+    python3
+  ];
+
+  mesonFlags = [
+    # We are still using ssh-agent from gnome-keyring.
+    # https://github.com/NixOS/nixpkgs/issues/140824
+    "-Dssh_agent=false"
+  ];
+
+  doCheck = false; # fails 21 out of 603 tests, needs dbus daemon
+
+  PKG_CONFIG_SYSTEMD_SYSTEMDUSERUNITDIR = "${placeholder "out"}/lib/systemd/user";
+
+  postPatch = ''
+    patchShebangs gcr/fixtures/
+  '';
+
+  postFixup = ''
+    # Cannot be in postInstall, otherwise _multioutDocs hook in preFixup will move right back.
+    moveToOutput "share/doc" "$devdoc"
+  '';
+
+  passthru = {
+    updateScript = gnome.updateScript {
+      attrPath = "gcr_4";
+      packageName = pname;
+    };
+  };
+
+  meta = with lib; {
+    platforms = platforms.unix;
+    maintainers = teams.gnome.members;
+    description = "GNOME crypto services (daemon and tools)";
+    homepage = "https://gitlab.gnome.org/GNOME/gcr";
+    license = licenses.lgpl2Plus;
+
+    longDescription = ''
+      GCR is a library for displaying certificates, and crypto UI, accessing
+      key stores. It also provides the viewer for crypto files on the GNOME
+      desktop.
+
+      GCK is a library for accessing PKCS#11 modules like smart cards, in a
+      (G)object oriented way.
+    '';
+  };
+}
diff --git a/pkgs/development/libraries/gdk-pixbuf/default.nix b/pkgs/development/libraries/gdk-pixbuf/default.nix
index ff8ace9613f..ae7d7460487 100644
--- a/pkgs/development/libraries/gdk-pixbuf/default.nix
+++ b/pkgs/development/libraries/gdk-pixbuf/default.nix
@@ -7,9 +7,7 @@
 , pkg-config
 , gettext
 , python3
-, libxslt
-, docbook-xsl-nons
-, docbook_xml_dtd_43
+, docutils
 , gi-docgen
 , glib
 , libtiff
@@ -25,14 +23,14 @@
 
 stdenv.mkDerivation rec {
   pname = "gdk-pixbuf";
-  version = "2.42.8";
+  version = "2.42.9";
 
   outputs = [ "out" "dev" "man" "devdoc" ]
     ++ lib.optional (stdenv.buildPlatform == stdenv.hostPlatform) "installedTests";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "hKzqOsskEbKRNLMgFaWxqqYoRLGcSx74uJccawdZ9MY=";
+    sha256 = "KPeVjnvymjLU6WNVbSQdCkGmeGWC/2pa0RZl4DR/yWI=";
   };
 
   patches = [
@@ -59,9 +57,7 @@ stdenv.mkDerivation rec {
     gobject-introspection
 
     # for man pages
-    libxslt
-    docbook-xsl-nons
-    docbook_xml_dtd_43
+    docutils
   ] ++ lib.optionals stdenv.isDarwin [
     fixDarwinDylibNames
   ];
diff --git a/pkgs/development/libraries/geocode-glib/default.nix b/pkgs/development/libraries/geocode-glib/default.nix
index e69ea93bb12..ee619aad89e 100644
--- a/pkgs/development/libraries/geocode-glib/default.nix
+++ b/pkgs/development/libraries/geocode-glib/default.nix
@@ -1,7 +1,6 @@
 { stdenv
 , lib
 , fetchurl
-, fetchpatch
 , meson
 , mesonEmulatorHook
 , ninja
@@ -19,31 +18,17 @@
 
 stdenv.mkDerivation rec {
   pname = "geocode-glib";
-  version = "3.26.3";
+  version = "3.26.4";
 
   outputs = [ "out" "dev" "devdoc" "installedTests" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/geocode-glib/${lib.versions.majorMinor version}/geocode-glib-${version}.tar.xz";
-    sha256 = "Hf6ug7kOzMobbPfc98XjsxeCjPC1YgXERx7w+RGZl2Y=";
+    sha256 = "LZpoJtFYRwRJoXOHEiFZbaD4Pr3P+YuQxwSQiQVqN6o=";
   };
 
   patches = [
     ./installed-tests-path.patch
-
-    # Install data for pi test.
-    (fetchpatch {
-      url = "https://gitlab.gnome.org/GNOME/geocode-glib/-/commit/0eb5c21cf4deb2c45aedf5a4393d4208b8dc6d58.patch";
-      sha256 = "DmaPzGEu7f+gjjb2HSZ3+ZMc4EJSsba9ufsVysB0UPA=";
-    })
-    # Fix pi test.
-    (fetchpatch {
-      url = "https://gitlab.gnome.org/GNOME/geocode-glib/-/commit/464bb3bae5525566a7f41d157f73575cc4f3b5f8.patch";
-      sha256 = "qSjXR8eKl+E38Zp7/Kgge/FxOLHYUJgRSR68okc3No0=";
-      postFetch = ''
-        substituteInPlace $out --replace "LC_MESSAGES" "LC_ALL"
-      '';
-    })
   ];
 
   nativeBuildInputs = [
diff --git a/pkgs/development/libraries/geocode-glib/installed-tests-path.patch b/pkgs/development/libraries/geocode-glib/installed-tests-path.patch
index c68b7a3a75c..e5f24abdddd 100644
--- a/pkgs/development/libraries/geocode-glib/installed-tests-path.patch
+++ b/pkgs/development/libraries/geocode-glib/installed-tests-path.patch
@@ -1,11 +1,17 @@
+diff --git a/geocode-glib/tests/meson.build b/geocode-glib/tests/meson.build
+index 5cd1fca..c2f9a9d 100644
 --- a/geocode-glib/tests/meson.build
 +++ b/geocode-glib/tests/meson.build
-@@ -1,4 +1,4 @@
+@@ -1,5 +1,5 @@
 -install_dir = get_option('prefix') / get_option('datadir') / 'installed-tests' / library_name
+-install_bindir = get_option('prefix') / get_option('libexecdir') / library_name
 +install_dir = get_option('installed_test_prefix') / 'share' / 'installed-tests' / library_name
++install_bindir = get_option('installed_test_prefix') / 'libexec' / library_name
  
  e = executable('geo-uri',
                 'geo-uri.c',
+diff --git a/meson_options.txt b/meson_options.txt
+index 62b713d..1454416 100644
 --- a/meson_options.txt
 +++ b/meson_options.txt
 @@ -1,6 +1,9 @@
diff --git a/pkgs/development/libraries/gjs/default.nix b/pkgs/development/libraries/gjs/default.nix
index e2421159005..6a24be2adbb 100644
--- a/pkgs/development/libraries/gjs/default.nix
+++ b/pkgs/development/libraries/gjs/default.nix
@@ -9,7 +9,7 @@
 , gtk3
 , atk
 , gobject-introspection
-, spidermonkey_91
+, spidermonkey_102
 , pango
 , cairo
 , readline
@@ -32,13 +32,13 @@ let
   ];
 in stdenv.mkDerivation rec {
   pname = "gjs";
-  version = "1.72.2";
+  version = "1.74.0";
 
   outputs = [ "out" "dev" "installedTests" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/gjs/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "sha256-3e43m9xafTA6XYlL4rKBvrisVFCGBOfT8geBqGnaOXc=";
+    sha256 = "sha256-fWQYr2LMc1VqssJbSt9n9FI4q4kliI96VyUTWdTr7R4=";
   };
 
   patches = [
@@ -66,7 +66,7 @@ in stdenv.mkDerivation rec {
     cairo
     readline
     libsysprof-capture
-    spidermonkey_91
+    spidermonkey_102
   ];
 
   checkInputs = [
diff --git a/pkgs/development/libraries/glib-networking/default.nix b/pkgs/development/libraries/glib-networking/default.nix
index 489e92648a9..60d812b16dc 100644
--- a/pkgs/development/libraries/glib-networking/default.nix
+++ b/pkgs/development/libraries/glib-networking/default.nix
@@ -1,4 +1,5 @@
-{ lib, stdenv
+{ stdenv
+, lib
 , fetchurl
 , substituteAll
 , meson
@@ -8,7 +9,6 @@
 , glib
 , gettext
 , makeWrapper
-, python3
 , gnutls
 , p11-kit
 , libproxy
@@ -18,13 +18,13 @@
 
 stdenv.mkDerivation rec {
   pname = "glib-networking";
-  version = "2.72.2";
+  version = "2.74.0";
 
   outputs = [ "out" "installedTests" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "zSoITHu5HXjoSftV1A5HL22PaGLN3J8Sw5FJNZuhgmg=";
+    sha256 = "HxharvCUEj+OJdj6VWYbP9cQIBY6AXSts1o3aFzaYTs=";
   };
 
   patches = [
@@ -36,18 +36,12 @@ stdenv.mkDerivation rec {
     ./installed-tests-path.patch
   ];
 
-  postPatch = ''
-    chmod +x meson_post_install.py # patchShebangs requires executable file
-    patchShebangs meson_post_install.py
-  '';
-
   nativeBuildInputs = [
     meson
     ninja
     pkg-config
     gettext
     makeWrapper
-    python3 # for install_script
   ];
 
   buildInputs = [
diff --git a/pkgs/development/libraries/glib-networking/installed-tests-path.patch b/pkgs/development/libraries/glib-networking/installed-tests-path.patch
index 942ca053dd4..549307cca39 100644
--- a/pkgs/development/libraries/glib-networking/installed-tests-path.patch
+++ b/pkgs/development/libraries/glib-networking/installed-tests-path.patch
@@ -1,8 +1,8 @@
 diff --git a/meson.build b/meson.build
-index 4d91677..aaaeb2b 100644
+index 01e18a9..5dbb2fc 100644
 --- a/meson.build
 +++ b/meson.build
-@@ -12,8 +12,8 @@
+@@ -12,8 +12,8 @@ libdir = join_paths(prefix, get_option('libdir'))
  libexecdir = join_paths(prefix, get_option('libexecdir'))
  localedir = join_paths(prefix, get_option('localedir'))
  
@@ -14,12 +14,14 @@ index 4d91677..aaaeb2b 100644
  cc = meson.get_compiler('c')
  host_system = host_machine.system()
 diff --git a/meson_options.txt b/meson_options.txt
-index 3a525dd..fc86302 100644
+index c566ccd..80f7c33 100644
 --- a/meson_options.txt
 +++ b/meson_options.txt
-@@ -3,4 +3,5 @@
+@@ -10,6 +10,7 @@ option('environment_proxy', type: 'feature', value: 'auto', description: 'suppor
  option('libproxy', type: 'feature', value: 'auto', description: 'support for libproxy proxy configration')
  option('gnome_proxy', type: 'feature', value: 'auto', description: 'support for GNOME desktop proxy configuration')
  option('installed_tests', type: 'boolean', value: false, description: 'enable installed tests')
 +option('installed_test_prefix', type: 'string', value: '', description: 'Prefix for installed tests')
- option('static_modules', type: 'boolean', value: false, description: 'build static modules')
+ option('debug_logs', type: 'boolean', value: false, description: 'enable debug log messages (slow)')
+ 
+ # Deprecated, use -Ddefault_library=static instead.
diff --git a/pkgs/development/libraries/glib/default.nix b/pkgs/development/libraries/glib/default.nix
index c6da42738c6..45d8ee69a02 100644
--- a/pkgs/development/libraries/glib/default.nix
+++ b/pkgs/development/libraries/glib/default.nix
@@ -1,5 +1,5 @@
 { config, lib, stdenv, fetchurl, gettext, meson, ninja, pkg-config, perl, python3
-, libiconv, zlib, libffi, pcre, libelf, gnome, libselinux, bash, gnum4, gtk-doc, docbook_xsl, docbook_xml_dtd_45, libxslt
+, libiconv, zlib, libffi, pcre2, libelf, gnome, libselinux, bash, gnum4, gtk-doc, docbook_xsl, docbook_xml_dtd_45, libxslt
 # use util-linuxMinimal to avoid circular dependency (util-linux, systemd, glib)
 , util-linuxMinimal ? null
 , buildPackages
@@ -44,11 +44,11 @@ in
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "glib";
-  version = "2.72.3";
+  version = "2.74.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/glib/${lib.versions.majorMinor finalAttrs.version}/glib-${finalAttrs.version}.tar.xz";
-    sha256 = "Sjmi9iS4US1QDVhAFz7af6hfUcEJBS6ugGrOzoXTRfA=";
+    sha256 = "NlLH8HLXsDGmte3WI/d+vF3NKuaYWYq8yJ/znKda3TA=";
   };
 
   patches = optionals stdenv.isDarwin [
@@ -90,6 +90,14 @@ stdenv.mkDerivation (finalAttrs: {
     #    * gio-launch-desktop
     ./split-dev-programs.patch
 
+    # Fix build on Darwin
+    # https://gitlab.gnome.org/GNOME/glib/-/merge_requests/2914
+    (fetchpatch {
+      name = "gio-properly-guard-use-of-utimensat.patch";
+      url = "https://gitlab.gnome.org/GNOME/glib/-/commit/7f7171e68a420991b537d3e9e63263a0b2871618.patch";
+      sha256 = "kKEqmBqx/RlvFT3eixu+NnM7JXhHb34b9NLRfAt+9h0=";
+    })
+
     # https://gitlab.gnome.org/GNOME/glib/-/merge_requests/2866
     (fetchpatch {
       name = "tests-skip-g-file-info-test-if-atime-unsupported.patch";
@@ -99,6 +107,12 @@ stdenv.mkDerivation (finalAttrs: {
     # https://gitlab.gnome.org/GNOME/glib/-/merge_requests/2867
     ./tests-skip-shared-libs-if-default_library-static.patch
 
+    # https://gitlab.gnome.org/GNOME/glib/-/merge_requests/2921
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/glib/-/commit/f0dd96c28751f15d0703b384bfc7c314af01caa8.patch";
+      sha256 = "sha256-8ucHS6ZnJuP6ajGb4/L8QfhC49FTQG1kAGHVdww/YYE=";
+    })
+
     ./skip-timer-test.patch
   ];
 
@@ -107,7 +121,9 @@ stdenv.mkDerivation (finalAttrs: {
   setupHook = ./setup-hook.sh;
 
   buildInputs = [
-    libelf finalAttrs.setupHook pcre
+    libelf
+    finalAttrs.setupHook
+    pcre2
   ] ++ optionals (!stdenv.hostPlatform.isWindows) [
     bash gnum4 # install glib-gettextize and m4 macros for other apps to use
   ] ++ optionals stdenv.isLinux [
diff --git a/pkgs/development/libraries/glib/split-dev-programs.patch b/pkgs/development/libraries/glib/split-dev-programs.patch
index 9a949ea1226..247db2150ed 100644
--- a/pkgs/development/libraries/glib/split-dev-programs.patch
+++ b/pkgs/development/libraries/glib/split-dev-programs.patch
@@ -1,32 +1,32 @@
 diff --git a/gio/gdbus-2.0/codegen/meson.build b/gio/gdbus-2.0/codegen/meson.build
-index 5ea6bae2f..e0b584a86 100644
+index f0a256898..9c8497cd0 100644
 --- a/gio/gdbus-2.0/codegen/meson.build
 +++ b/gio/gdbus-2.0/codegen/meson.build
-@@ -16,7 +16,7 @@ gdbus_codegen_conf.set('DATADIR', glib_datadir)
+@@ -19,7 +19,7 @@ gdbus_codegen_conf.set('DATADIR', glib_datadir)
  # Install gdbus-codegen executable
  gdbus_codegen = configure_file(input : 'gdbus-codegen.in',
    output : 'gdbus-codegen',
 -  install_dir : get_option('bindir'),
 +  install_dir : get_option('devbindir'),
+   install_tag : 'bin-devel',
    configuration : gdbus_codegen_conf
  )
-   # Provide tools for others when we're a subproject and they use the Meson GNOME module
 diff --git a/gio/meson.build b/gio/meson.build
-index 3535788ab..99c3b48d6 100644
+index fdd2528df..cf359c7d7 100644
 --- a/gio/meson.build
 +++ b/gio/meson.build
-@@ -831,14 +831,15 @@ pkg.generate(libgio,
+@@ -859,14 +859,15 @@ pkg.generate(libgio,
    variables : ['datadir=' + join_paths('${prefix}', get_option('datadir')),
                 'schemasdir=' + join_paths('${datadir}', schemas_subdir),
                 'bindir=' + join_paths('${prefix}', get_option('bindir')),
 +               'devbindir=' + get_option('devbindir'),
                 'giomoduledir=' + pkgconfig_giomodulesdir,
                 'gio=' + join_paths('${bindir}', 'gio'),
--               'gio_querymodules=' + join_paths('${bindir}', 'gio-querymodules'),
--               'glib_compile_schemas=' + join_paths('${bindir}', 'glib-compile-schemas'),
+-               'gio_querymodules=@0@'.format(pkgconfig_multiarch_bindir / 'gio-querymodules'),
+-               'glib_compile_schemas=@0@'.format(pkgconfig_multiarch_bindir / 'glib-compile-schemas'),
 -               'glib_compile_resources=' + join_paths('${bindir}', 'glib-compile-resources'),
-+               'gio_querymodules=' + join_paths('${devbindir}', 'gio-querymodules'),
-+               'glib_compile_schemas=' + join_paths('${devbindir}', 'glib-compile-schemas'),
++               'gio_querymodules=@0@'.format('${devbindir}' / 'gio-querymodules'),
++               'glib_compile_schemas=@0@'.format('${devbindir}' / 'glib-compile-schemas'),
 +               'glib_compile_resources=' + join_paths('${devbindir}', 'glib-compile-resources'),
                 'gdbus=' + join_paths('${bindir}', 'gdbus'),
 -               'gdbus_codegen=' + join_paths('${bindir}', 'gdbus-codegen'),
@@ -36,42 +36,45 @@ index 3535788ab..99c3b48d6 100644
                 'gsettings=' + join_paths('${bindir}', 'gsettings')],
    version : glib_version,
    install_dir : glib_pkgconfigreldir,
-@@ -939,12 +940,14 @@ executable('gio', gio_tool_sources,
+@@ -968,6 +969,7 @@ executable('gio', gio_tool_sources,
  
  executable('gresource', 'gresource-tool.c',
    install : true,
 +  install_dir : get_option('devbindir'),
+   install_tag : 'bin',
    # intl.lib is not compatible with SAFESEH
    link_args : noseh_link_args,
-   dependencies : [libelf, libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep])
+@@ -975,7 +977,7 @@ executable('gresource', 'gresource-tool.c',
  
  gio_querymodules = executable('gio-querymodules', 'gio-querymodules.c', 'giomodule-priv.c',
    install : true,
+-  install_dir : multiarch_bindir,
 +  install_dir : get_option('devbindir'),
+   install_tag : 'bin',
    c_args : gio_c_args,
    # intl.lib is not compatible with SAFESEH
-   link_args : noseh_link_args,
-@@ -953,6 +956,7 @@ gio_querymodules = executable('gio-querymodules', 'gio-querymodules.c', 'giomodu
+@@ -985,7 +987,7 @@ gio_querymodules = executable('gio-querymodules', 'gio-querymodules.c', 'giomodu
  glib_compile_schemas = executable('glib-compile-schemas',
-   [gconstructor_as_data_h, 'gvdb/gvdb-builder.c', 'glib-compile-schemas.c'],
+   ['glib-compile-schemas.c'],
    install : true,
+-  install_dir : multiarch_bindir,
 +  install_dir : get_option('devbindir'),
+   install_tag : 'bin',
    # intl.lib is not compatible with SAFESEH
    link_args : noseh_link_args,
-   dependencies : [libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep])
-@@ -960,6 +964,7 @@ glib_compile_schemas = executable('glib-compile-schemas',
+@@ -994,6 +996,7 @@ glib_compile_schemas = executable('glib-compile-schemas',
  glib_compile_resources = executable('glib-compile-resources',
-   [gconstructor_as_data_h, 'gvdb/gvdb-builder.c', 'glib-compile-resources.c'],
+   [gconstructor_as_data_h, 'glib-compile-resources.c'],
    install : true,
 +  install_dir : get_option('devbindir'),
+   install_tag : 'bin-devel',
    c_args : gio_c_args,
    # intl.lib is not compatible with SAFESEH
-   link_args : noseh_link_args,
 diff --git a/glib/meson.build b/glib/meson.build
-index aaf5f00f5..09edd291a 100644
+index 1e6dc36be..6b5de6c86 100644
 --- a/glib/meson.build
 +++ b/glib/meson.build
-@@ -375,9 +375,10 @@ pkg.generate(libglib,
+@@ -396,9 +396,10 @@ pkg.generate(libglib,
    subdirs : ['glib-2.0'],
    extra_cflags : ['-I${libdir}/glib-2.0/include'] + win32_cflags,
    variables : ['bindir=' + join_paths('${prefix}', get_option('bindir')),
@@ -85,59 +88,46 @@ index aaf5f00f5..09edd291a 100644
    version : glib_version,
    install_dir : glib_pkgconfigreldir,
    filebase : 'glib-2.0',
-@@ -413,6 +414,7 @@ if host_system == 'windows'
+@@ -435,6 +436,7 @@ if host_system == 'windows'
  else
    gtester = executable('gtester', 'gtester.c',
      install : true,
 +    install_dir : get_option('devbindir'),
+     install_tag : 'bin-devel',
      c_args : ['-UG_DISABLE_ASSERT'],
      include_directories : configinc,
-     dependencies : [libglib_dep])
-@@ -424,7 +426,7 @@ report_conf.set('PYTHON', python_name)
+@@ -447,7 +449,7 @@ report_conf.set('PYTHON', python_name)
  configure_file(
    input: 'gtester-report.in',
    output: 'gtester-report',
 -  install_dir: get_option('bindir'),
 +  install_dir: get_option('devbindir'),
+   install_tag : 'bin-devel',
    configuration: report_conf,
    install_mode: 'rwxr-xr-x'
- )
 diff --git a/gobject/meson.build b/gobject/meson.build
-index 85e283bab..386ad5e4e 100644
+index a994eb591..36b36b925 100644
 --- a/gobject/meson.build
 +++ b/gobject/meson.build
-@@ -75,7 +75,7 @@ foreach tool: python_tools
+@@ -79,7 +79,7 @@ foreach tool: python_tools
      input : tool + '.in',
      output : tool,
      configuration : python_tools_conf,
 -    install_dir : glib_bindir,
 +    install_dir : get_option('devbindir'),
+     install_tag : 'bin-devel',
    )
  
-   # Set variables for later use
-@@ -145,6 +145,7 @@ libgobject_dep = declare_dependency(link_with : libgobject,
+@@ -155,6 +155,7 @@ meson.override_dependency('gobject-2.0', libgobject_dep)
  
  executable('gobject-query', 'gobject-query.c',
    install : true,
 +  install_dir : get_option('devbindir'),
+   install_tag : 'bin-devel',
    dependencies : [libglib_dep, libgobject_dep])
  
- install_data('gobject_gdb.py', install_dir : join_paths(glib_pkgdatadir, 'gdb'))
-diff --git a/meson.build b/meson.build
-index 484f4c750..c7f9327d9 100644
---- a/meson.build
-+++ b/meson.build
-@@ -2122,7 +2122,7 @@ if have_sh
-   gettextize_conf.set('datarootdir', glib_datadir)
-   gettextize_conf.set('datadir', glib_datadir)
-   configure_file(input : 'glib-gettextize.in',
--    install_dir : glib_bindir,
-+    install_dir : get_option('devbindir'),
-     output : 'glib-gettextize',
-     configuration : gettextize_conf)
- endif
 diff --git a/meson_options.txt b/meson_options.txt
-index 2c831e37e..5d8928577 100644
+index f13cbfdd5..f218db581 100644
 --- a/meson_options.txt
 +++ b/meson_options.txt
 @@ -3,6 +3,11 @@ option('runtime_libdir',
@@ -152,3 +142,16 @@ index 2c831e37e..5d8928577 100644
  option('iconv',
         type : 'combo',
         choices : ['auto', 'libc', 'external'],
+diff --git a/tools/meson.build b/tools/meson.build
+index 0542fb89b..bfb10cd80 100644
+--- a/tools/meson.build
++++ b/tools/meson.build
+@@ -8,7 +8,7 @@ if have_sh
+   gettextize_conf.set('datarootdir', glib_datadir)
+   gettextize_conf.set('datadir', glib_datadir)
+   configure_file(input : 'glib-gettextize.in',
+-    install_dir : glib_bindir,
++    install_dir : get_option('devbindir'),
+     install_tag : 'bin-devel',
+     output : 'glib-gettextize',
+     configuration : gettextize_conf)
diff --git a/pkgs/development/libraries/glib/tests-skip-shared-libs-if-default_library-static.patch b/pkgs/development/libraries/glib/tests-skip-shared-libs-if-default_library-static.patch
index 681e361896e..106ba4f99a9 100644
--- a/pkgs/development/libraries/glib/tests-skip-shared-libs-if-default_library-static.patch
+++ b/pkgs/development/libraries/glib/tests-skip-shared-libs-if-default_library-static.patch
@@ -13,7 +13,7 @@ Part-of: https://gitlab.gnome.org/GNOME/glib/-/merge_requests/2867
 ---
  gio/tests/meson.build  | 43 +++++++++++++++++++++++-------------------
  glib/tests/meson.build |  2 +-
- tests/meson.build      | 30 +++++++++++++++--------------
+ gmodule/tests/meson.build      | 30 +++++++++++++++--------------
  3 files changed, 41 insertions(+), 34 deletions(-)
 
 diff --git a/gio/tests/meson.build b/gio/tests/meson.build
@@ -95,10 +95,10 @@ index 301158e0f..6203ff45e 100644
      glib_tests += {
        'gutils-user-database' : {
          'depends' : [
-diff --git a/tests/meson.build b/tests/meson.build
+diff --git a/gmodule/tests/meson.build b/gmodule/tests/meson.build
 index c95fa1d00..25144c941 100644
---- a/tests/meson.build
-+++ b/tests/meson.build
+--- a/gmodule/tests/meson.build
++++ b/gmodule/tests/meson.build
 @@ -72,20 +72,22 @@ if ['darwin', 'ios'].contains(host_machine.system())
    module_suffix = 'so'
  endif
diff --git a/pkgs/development/libraries/glibmm/2.68.nix b/pkgs/development/libraries/glibmm/2.68.nix
index f1f3df86349..531d487cb93 100644
--- a/pkgs/development/libraries/glibmm/2.68.nix
+++ b/pkgs/development/libraries/glibmm/2.68.nix
@@ -13,13 +13,13 @@
 
 stdenv.mkDerivation rec {
   pname = "glibmm";
-  version = "2.72.1";
+  version = "2.74.0";
 
   outputs = [ "out" "dev" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "sha256-KnZJooq13FOsTau3bJ9hWZ+8Yokjq2p910v2ddkVXNg=";
+    sha256 = "sha256-K0cmlsuseduOQFckEY7JRSGcW5sYr2PcjPt/HYmw8fo=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/libraries/glibmm/default.nix b/pkgs/development/libraries/glibmm/default.nix
index 996eacd65f4..9f4a16a0ce4 100644
--- a/pkgs/development/libraries/glibmm/default.nix
+++ b/pkgs/development/libraries/glibmm/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "glibmm";
-  version = "2.66.4";
+  version = "2.66.5";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "sha256-GZrOVoLYGxWh1WVIC0qVBoLy22QCyKpd1yF9ce3/gdU=";
+    sha256 = "sha256-ezhGYt1uw7hsBXAzHTKvBdsr2Zp5FgK3Z7SgslZuwUk=";
   };
 
   outputs = [ "out" "dev" ];
diff --git a/pkgs/development/libraries/gnome-desktop/default.nix b/pkgs/development/libraries/gnome-desktop/default.nix
index 157d7fa8404..6b58b171f7d 100644
--- a/pkgs/development/libraries/gnome-desktop/default.nix
+++ b/pkgs/development/libraries/gnome-desktop/default.nix
@@ -27,13 +27,13 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-desktop";
-  version = "42.3";
+  version = "43";
 
   outputs = [ "out" "dev" "devdoc" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-desktop/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "sha256-2lBBC48Z/X53WwDR/g26Z/xeEVHe0pkVjcJd2tw/qKk=";
+    sha256 = "sha256-PW4VMxdIYVdZaqOAL4dnZBTFcHOPRQqUoEH+iDVCCmk=";
   };
 
   patches = lib.optionals stdenv.isLinux [
@@ -78,8 +78,6 @@ stdenv.mkDerivation rec {
   mesonFlags = [
     "-Dgtk_doc=true"
     "-Ddesktop_docs=false"
-    "-Ddate_in_gnome_version=false"
-    "-Dgnome_distributor=NixOS"
   ] ++ lib.optionals (!stdenv.isLinux) [
     "-Dsystemd=disabled"
     "-Dudev=disabled"
diff --git a/pkgs/development/libraries/gnome-online-accounts/default.nix b/pkgs/development/libraries/gnome-online-accounts/default.nix
index 1fed0b47069..9ffa5d2a0d7 100644
--- a/pkgs/development/libraries/gnome-online-accounts/default.nix
+++ b/pkgs/development/libraries/gnome-online-accounts/default.nix
@@ -1,23 +1,24 @@
-{ lib, stdenv
+{ stdenv
+, lib
 , fetchFromGitLab
 , pkg-config
 , vala
 , glib
 , meson
 , ninja
-, python3
 , libxslt
 , gtk3
-, webkitgtk
+, webkitgtk_4_1
 , json-glib
-, librest
+, librest_1_0
+, libxml2
 , libsecret
 , gtk-doc
 , gobject-introspection
 , gettext
 , icu
 , glib-networking
-, libsoup
+, libsoup_3
 , docbook-xsl-nons
 , docbook_xml_dtd_412
 , gnome
@@ -30,7 +31,9 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-online-accounts";
-  version = "3.44.0";
+  version = "3.46.0";
+
+  outputs = [ "out" "man" "dev" "devdoc" ];
 
   # https://gitlab.gnome.org/GNOME/gnome-online-accounts/issues/87
   src = fetchFromGitLab {
@@ -38,11 +41,9 @@ stdenv.mkDerivation rec {
     owner = "GNOME";
     repo = "gnome-online-accounts";
     rev = version;
-    sha256 = "sha256-8dp3cizyQVHegDxX9G6iGLW5g44audn431hCPMS/KlA=";
+    sha256 = "sha256-qVd55fmhY05zJ871OWc3hd1eWjYbYJuxlE/T2i3VCUA=";
   };
 
-  outputs = [ "out" "man" "dev" "devdoc" ];
-
   mesonFlags = [
     "-Dfedora=false" # not useful in NixOS or for NixOS users.
     "-Dgtk_doc=true"
@@ -61,7 +62,6 @@ stdenv.mkDerivation rec {
     meson
     ninja
     pkg-config
-    python3
     vala
     wrapGAppsHook
   ];
@@ -75,19 +75,15 @@ stdenv.mkDerivation rec {
     icu
     json-glib
     libkrb5
-    librest
+    librest_1_0
+    libxml2
     libsecret
-    libsoup
-    webkitgtk
+    libsoup_3
+    webkitgtk_4_1
   ];
 
   NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
 
-  postPatch = ''
-    chmod +x meson_post_install.py
-    patchShebangs meson_post_install.py
-  '';
-
   passthru = {
     updateScript = gnome.updateScript {
       versionPolicy = "odd-unstable";
diff --git a/pkgs/development/libraries/gobject-introspection/default.nix b/pkgs/development/libraries/gobject-introspection/default.nix
index 175a149e5c6..bb306fb3a85 100644
--- a/pkgs/development/libraries/gobject-introspection/default.nix
+++ b/pkgs/development/libraries/gobject-introspection/default.nix
@@ -35,7 +35,7 @@ let
 in
 stdenv.mkDerivation (finalAttrs: {
   pname = "gobject-introspection";
-  version = "1.72.0";
+  version = "1.74.0";
 
   # outputs TODO: share/gobject-introspection-1.0/tests is needed during build
   # by pygobject3 (and maybe others), but it's only searched in $out
@@ -44,7 +44,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   src = fetchurl {
     url = "mirror://gnome/sources/gobject-introspection/${lib.versions.majorMinor finalAttrs.version}/gobject-introspection-${finalAttrs.version}.tar.xz";
-    sha256 = "Av6OWQhh2I+DBg3TnNpcyqYLLaHSHQ+VSZMBsYa+qrw=";
+    sha256 = "NHs6cZ5oukxp/y1X7iaJIz6owH/EkiBeVzOGd55C1lM=";
   };
 
   patches = [
diff --git a/pkgs/development/libraries/goffice/default.nix b/pkgs/development/libraries/goffice/default.nix
index 4428b077a47..9e2585d7ee0 100644
--- a/pkgs/development/libraries/goffice/default.nix
+++ b/pkgs/development/libraries/goffice/default.nix
@@ -3,13 +3,13 @@
 
 stdenv.mkDerivation rec {
   pname = "goffice";
-  version = "0.10.52";
+  version = "0.10.53";
 
   outputs = [ "out" "dev" "devdoc" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "YLnv2UNw8JabOU8KrIxuuR4V68DOEja0Sqc16xyYhAw=";
+    sha256 = "J/1YeW+qHNTMASDDTqhTFaCJHscfVbxnk8FOzxaKP1c=";
   };
 
   nativeBuildInputs = [ pkg-config intltool ];
diff --git a/pkgs/development/libraries/grilo-plugins/default.nix b/pkgs/development/libraries/grilo-plugins/default.nix
index db968f4730f..624dbd70a61 100644
--- a/pkgs/development/libraries/grilo-plugins/default.nix
+++ b/pkgs/development/libraries/grilo-plugins/default.nix
@@ -7,9 +7,8 @@
 , gettext
 , gperf
 , sqlite
-, librest
 , libarchive
-, libsoup
+, libsoup_3
 , gnome
 , libxml2
 , lua5_3
@@ -31,11 +30,11 @@
 
 stdenv.mkDerivation rec {
   pname = "grilo-plugins";
-  version = "0.3.14";
+  version = "0.3.15";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "aGhEs07HOySTH/bMT2Az8AcpR6bbYKzcf7Pq8Velgcg=";
+    sha256 = "hRjD2VT5MJXZVWJKBEzhanNFUy+BHSmdv6HhFM/rqzM=";
   };
 
   patches = [
@@ -65,15 +64,14 @@ stdenv.mkDerivation rec {
   buildInputs = [
     grilo
     libxml2
-    libgdata
+    # libgdata
     lua5_3
     liboauth
     sqlite
     gnome-online-accounts
     totem-pl-parser
-    librest
     libarchive
-    libsoup
+    libsoup_3
     gmime
     gom
     json-glib
diff --git a/pkgs/development/libraries/grilo/default.nix b/pkgs/development/libraries/grilo/default.nix
index 2f8c291da0d..bf5d1db1340 100644
--- a/pkgs/development/libraries/grilo/default.nix
+++ b/pkgs/development/libraries/grilo/default.nix
@@ -16,13 +16,13 @@
 , libxml2
 , gnome
 , gobject-introspection
-, libsoup
+, libsoup_3
 , totem-pl-parser
 }:
 
 stdenv.mkDerivation rec {
   pname = "grilo";
-  version = "0.3.14"; # if you change minor, also change ./setup-hook.sh
+  version = "0.3.15"; # if you change minor, also change ./setup-hook.sh
 
   outputs = [ "out" "dev" "man" "devdoc" ];
   outputBin = "dev";
@@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "A2nQsAuw9Zul966oz8Zl843xSltBgtKMfB4s0VtRh0M=";
+    sha256 = "81Ks9zZlZpk0JwY2/t5mtS2mgB/iD2OMQEirJnhXey0=";
   };
 
   mesonFlags = [
@@ -57,7 +57,7 @@ stdenv.mkDerivation rec {
     liboauth
     gtk3
     libxml2
-    libsoup
+    libsoup_3
     totem-pl-parser
   ];
 
diff --git a/pkgs/development/libraries/gsettings-desktop-schemas/default.nix b/pkgs/development/libraries/gsettings-desktop-schemas/default.nix
index 8a26742ce23..7431ca1f82a 100644
--- a/pkgs/development/libraries/gsettings-desktop-schemas/default.nix
+++ b/pkgs/development/libraries/gsettings-desktop-schemas/default.nix
@@ -12,11 +12,11 @@
 
 stdenv.mkDerivation rec {
   pname = "gsettings-desktop-schemas";
-  version = "42.0";
+  version = "43.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "ZoYzWp7WI/euInb++lCkENTnHUIxiAgkcUBwyzFzI9I=";
+    sha256 = "XVVoKCqzi5V1nUJUAfdHblb4y/JimIVYdDn0O9C4S74=";
   };
 
   strictDeps = true;
diff --git a/pkgs/development/libraries/gspell/default.nix b/pkgs/development/libraries/gspell/default.nix
index 9592fd11676..f27e0e7be60 100644
--- a/pkgs/development/libraries/gspell/default.nix
+++ b/pkgs/development/libraries/gspell/default.nix
@@ -17,14 +17,14 @@
 
 stdenv.mkDerivation rec {
   pname = "gspell";
-  version = "1.11.1";
+  version = "1.12.0";
 
   outputs = [ "out" "dev" ];
   outputBin = "dev";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "72qk4/cRd1FYp+JBpfgJzyQmvA4Cwjp9K1xx/D3gApI=";
+    sha256 = "QNKFDxu26HdSRvoeOUOLNsqvvbraHSihn6HKB+H/gq0=";
   };
 
   patches = [
diff --git a/pkgs/development/libraries/gssdp/1.6.nix b/pkgs/development/libraries/gssdp/1.6.nix
new file mode 100644
index 00000000000..7dcd20991a2
--- /dev/null
+++ b/pkgs/development/libraries/gssdp/1.6.nix
@@ -0,0 +1,83 @@
+{ stdenv
+, lib
+, fetchurl
+, meson
+, ninja
+, pkg-config
+, gobject-introspection
+, vala
+, gi-docgen
+, python3
+, libsoup_3
+, glib
+, gnome
+, gssdp-tools
+}:
+
+stdenv.mkDerivation rec {
+  pname = "gssdp";
+  version = "1.6.0";
+
+  outputs = [ "out" "dev" ]
+    ++ lib.optionals (stdenv.buildPlatform == stdenv.hostPlatform) [ "devdoc" ];
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gssdp/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "FI7UFijI8XM2osj6SxSrD7rpi2Amvi2s/d6nv0OGZok=";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+    gobject-introspection
+    vala
+    gi-docgen
+    python3
+  ];
+
+  buildInputs = [
+    libsoup_3
+  ];
+
+  propagatedBuildInputs = [
+    glib
+  ];
+
+  mesonFlags = [
+    "-Dgtk_doc=${lib.boolToString (stdenv.buildPlatform == stdenv.hostPlatform)}"
+    "-Dsniffer=false"
+    "-Dintrospection=${lib.boolToString (stdenv.buildPlatform == stdenv.hostPlatform)}"
+  ];
+
+  doCheck = true;
+
+  postFixup = lib.optionalString (stdenv.buildPlatform == stdenv.hostPlatform) ''
+    # Move developer documentation to devdoc output.
+    # Cannot be in postInstall, otherwise _multioutDocs hook in preFixup will move right back.
+    find -L "$out/share/doc" -type f -regex '.*\.devhelp2?' -print0 \
+      | while IFS= read -r -d ''' file; do
+        moveToOutput "$(dirname "''${file/"$out/"/}")" "$devdoc"
+    done
+  '';
+
+  passthru = {
+    updateScript = gnome.updateScript {
+      attrPath = "gssdp_1_6";
+      packageName = pname;
+    };
+
+    tests = {
+      inherit gssdp-tools;
+    };
+  };
+
+  meta = with lib; {
+    broken = stdenv.isDarwin;
+    description = "GObject-based API for handling resource discovery and announcement over SSDP";
+    homepage = "http://www.gupnp.org/";
+    license = licenses.lgpl2Plus;
+    maintainers = teams.gnome.members;
+    platforms = platforms.all;
+  };
+}
diff --git a/pkgs/development/libraries/gssdp/default.nix b/pkgs/development/libraries/gssdp/default.nix
index 21af779a511..3ec5cea99b0 100644
--- a/pkgs/development/libraries/gssdp/default.nix
+++ b/pkgs/development/libraries/gssdp/default.nix
@@ -64,6 +64,7 @@ stdenv.mkDerivation rec {
   passthru = {
     updateScript = gnome.updateScript {
       packageName = pname;
+      freeze = true;
     };
 
     tests = {
diff --git a/pkgs/development/libraries/gssdp/standalone-tools.patch b/pkgs/development/libraries/gssdp/standalone-tools.patch
index f2273a978d6..6491afbe867 100644
--- a/pkgs/development/libraries/gssdp/standalone-tools.patch
+++ b/pkgs/development/libraries/gssdp/standalone-tools.patch
@@ -22,9 +22,9 @@ index 40eb8e3..5db545b 100644
 +project('gssdp-tools', 'c', version: '@version@')
 +gnome = import('gnome')
 +
-+gssdp = dependency('gssdp-1.2')
++gssdp = dependency('gssdp-1.6')
 +gtk = dependency('gtk4', version : '>= 4')
-+libsoup = dependency('libsoup-2.4', version : '>= 2.26.1')
++libsoup = dependency('libsoup-3.0', version : '>= 2.99.0')
 +
  resource = gnome.compile_resources(
      'org.gupnp.GSSDP.DeviceSniffer',
diff --git a/pkgs/development/libraries/gssdp/tools.nix b/pkgs/development/libraries/gssdp/tools.nix
index 36bc5642900..5fcd0219a94 100644
--- a/pkgs/development/libraries/gssdp/tools.nix
+++ b/pkgs/development/libraries/gssdp/tools.nix
@@ -5,14 +5,14 @@
 , ninja
 , pkg-config
 , wrapGAppsHook4
-, gssdp
+, gssdp_1_6
 , gtk4
-, libsoup
+, libsoup_3
 }:
 
 stdenv.mkDerivation rec {
   pname = "gssdp-tools";
-  inherit (gssdp) version src;
+  inherit (gssdp_1_6) version src;
 
   patches = [
     # Allow building tools separately from the library.
@@ -31,9 +31,9 @@ stdenv.mkDerivation rec {
   ];
 
   buildInputs = [
-    gssdp
+    gssdp_1_6
     gtk4
-    libsoup
+    libsoup_3
   ];
 
   preConfigure = ''
@@ -44,7 +44,7 @@ stdenv.mkDerivation rec {
     description = "Device Sniffer tool based on GSSDP framework";
     homepage = "http://www.gupnp.org/";
     license = licenses.lgpl2Plus;
-    maintainers = gssdp.meta.maintainers;
+    maintainers = gssdp_1_6.meta.maintainers;
     platforms = platforms.all;
   };
 }
diff --git a/pkgs/development/libraries/gtkmm/3.x.nix b/pkgs/development/libraries/gtkmm/3.x.nix
index 7245b974930..82c5ea6597a 100644
--- a/pkgs/development/libraries/gtkmm/3.x.nix
+++ b/pkgs/development/libraries/gtkmm/3.x.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "gtkmm";
-  version = "3.24.6";
+  version = "3.24.7";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "Sz4ULpROFjO7oAiQBgXDQak8/XVaf6KgCwXQQTQfEdY=";
+    sha256 = "HXo1r5xc7MrLJE7jwt65skVyDYUQrFx+b0tvmUfmeJw=";
   };
 
   outputs = [ "out" "dev" ];
diff --git a/pkgs/development/libraries/gtksourceview/4.x.nix b/pkgs/development/libraries/gtksourceview/4.x.nix
index 74acd6f743d..b7828de4558 100644
--- a/pkgs/development/libraries/gtksourceview/4.x.nix
+++ b/pkgs/development/libraries/gtksourceview/4.x.nix
@@ -70,7 +70,9 @@ stdenv.mkDerivation rec {
     dbus
   ];
 
-  doCheck = stdenv.isLinux;
+  # Broken by PCRE 2 bump in GLib.
+  # https://gitlab.gnome.org/GNOME/gtksourceview/-/issues/283
+  doCheck = false;
 
   checkPhase = ''
     runHook preCheck
diff --git a/pkgs/development/libraries/gtksourceview/5.x.nix b/pkgs/development/libraries/gtksourceview/5.x.nix
index 307fb15e98d..25bd8127a54 100644
--- a/pkgs/development/libraries/gtksourceview/5.x.nix
+++ b/pkgs/development/libraries/gtksourceview/5.x.nix
@@ -23,13 +23,13 @@
 
 stdenv.mkDerivation rec {
   pname = "gtksourceview";
-  version = "5.4.2";
+  version = "5.6.1";
 
   outputs = [ "out" "dev" "devdoc" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "rRQOB+uEGRDeSDwJK9SIWr0puq3W6V+iLZPtLfC3nec=";
+    sha256 = "ZZ2cydA0oRTwfn4TTugNd97ASXyxUWrlNpEZwvy52hY=";
   };
 
   patches = [
diff --git a/pkgs/development/libraries/gupnp/1.6.nix b/pkgs/development/libraries/gupnp/1.6.nix
new file mode 100644
index 00000000000..7054a75d388
--- /dev/null
+++ b/pkgs/development/libraries/gupnp/1.6.nix
@@ -0,0 +1,73 @@
+{ stdenv
+, lib
+, fetchurl
+, meson
+, ninja
+, pkg-config
+, gobject-introspection
+, vala
+, gi-docgen
+, glib
+, gssdp_1_6
+, libsoup_3
+, libxml2
+, gnome
+}:
+
+stdenv.mkDerivation rec {
+  pname = "gupnp";
+  version = "1.6.0";
+
+  outputs = [ "out" "dev" "devdoc" ];
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gupnp/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "sha256-MsSdrkd4zT74/Zpg9jdenId2ju5sPAWzPYp5+R4Ivcs=";
+  };
+
+  depsBuildBuild = [
+    pkg-config
+  ];
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+    gobject-introspection
+    vala
+    gi-docgen
+  ];
+
+  propagatedBuildInputs = [
+    glib
+    gssdp_1_6
+    libsoup_3
+    libxml2
+  ];
+
+  mesonFlags = [
+    "-Dgtk_doc=true"
+    "-Dintrospection=true"
+  ];
+
+  doCheck = true;
+
+  postFixup = ''
+    # Cannot be in postInstall, otherwise _multioutDocs hook in preFixup will move right back.
+    moveToOutput "share/doc" "$devdoc"
+  '';
+
+  passthru = {
+    updateScript = gnome.updateScript {
+      attrPath = "gupnp_1_6";
+      packageName = pname;
+    };
+  };
+
+  meta = with lib; {
+    homepage = "http://www.gupnp.org/";
+    description = "An implementation of the UPnP specification";
+    license = licenses.lgpl2Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/development/libraries/gupnp/default.nix b/pkgs/development/libraries/gupnp/default.nix
index afb6c0d037c..07b64064ce6 100644
--- a/pkgs/development/libraries/gupnp/default.nix
+++ b/pkgs/development/libraries/gupnp/default.nix
@@ -72,6 +72,7 @@ stdenv.mkDerivation rec {
   passthru = {
     updateScript = gnome.updateScript {
       packageName = pname;
+      freeze = true;
     };
   };
 
diff --git a/pkgs/development/libraries/libchamplain/default.nix b/pkgs/development/libraries/libchamplain/default.nix
index 20609509b66..34440d67818 100644
--- a/pkgs/development/libraries/libchamplain/default.nix
+++ b/pkgs/development/libraries/libchamplain/default.nix
@@ -1,5 +1,25 @@
-{ fetchurl, lib, stdenv, meson, ninja, vala, gtk-doc, docbook_xsl, docbook_xml_dtd_412, pkg-config, glib, gtk3, cairo, sqlite, gnome
-, clutter-gtk, libsoup, gobject-introspection /*, libmemphis */ }:
+{ fetchurl
+, fetchpatch
+, lib
+, stdenv
+, meson
+, ninja
+, vala
+, gtk-doc
+, docbook_xsl
+, docbook_xml_dtd_412
+, pkg-config
+, glib
+, gtk3
+, cairo
+, sqlite
+, gnome
+, clutter-gtk
+, libsoup
+, libsoup_3
+, gobject-introspection /*, libmemphis */
+, withLibsoup3 ? false
+}:
 
 stdenv.mkDerivation rec {
   pname = "libchamplain";
@@ -10,13 +30,40 @@ stdenv.mkDerivation rec {
     sha256 = "0rihpb0npqpihqcdz4w03rq6xl7jdckfqskvv9diq2hkrnzv8ch2";
   };
 
+  patches = lib.optionals withLibsoup3 [
+    # Port to libsoup3
+    # https://gitlab.gnome.org/GNOME/libchamplain/-/merge_requests/13
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/libchamplain/-/commit/1cbaf3193c2b38e447fbc383d4c455c3dcac6db8.patch";
+      excludes = [ ".gitlab-ci.yml" ];
+      sha256 = "uk38gExnUgeUKwhDsqRU77hGWhJ+8fG5dSiV2MAWLFk=";
+    })
+  ];
+
   outputs = [ "out" "dev" "devdoc" ];
 
-  nativeBuildInputs = [ meson ninja pkg-config gobject-introspection vala gtk-doc docbook_xsl docbook_xml_dtd_412 ];
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+    gobject-introspection
+    vala
+    gtk-doc
+    docbook_xsl
+    docbook_xml_dtd_412
+  ];
 
-  buildInputs = [ sqlite libsoup ];
+  buildInputs = [
+    sqlite
+    (if withLibsoup3 then libsoup_3 else libsoup)
+  ];
 
-  propagatedBuildInputs = [ glib gtk3 cairo clutter-gtk ];
+  propagatedBuildInputs = [
+    glib
+    gtk3
+    cairo
+    clutter-gtk
+  ];
 
   mesonFlags = [
     "-Dgtk_doc=true"
@@ -44,7 +91,7 @@ stdenv.mkDerivation rec {
        OpenCycleMap, OpenAerialMap, and Maps for free.
     '';
 
-     maintainers = teams.gnome.members;
-     platforms = platforms.gnu ++ platforms.linux;  # arbitrary choice
+    maintainers = teams.gnome.members ++ teams.pantheon.members;
+    platforms = platforms.gnu ++ platforms.linux; # arbitrary choice
   };
 }
diff --git a/pkgs/development/libraries/libgee/default.nix b/pkgs/development/libraries/libgee/default.nix
index b34790d59c7..cec611f366c 100644
--- a/pkgs/development/libraries/libgee/default.nix
+++ b/pkgs/development/libraries/libgee/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "libgee";
-  version = "0.20.5";
+  version = "0.20.6";
 
   outputs = [ "out" "dev" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "MYY6iVfVpyf5BnSVyr8KCIn6XT1EYm5UCUMxGI1cFRg=";
+    sha256 = "G/g09eENYMxhJNdO08HdONpkZ4f794ciILi0Bo5HbU0=";
   };
 
   doCheck = true;
diff --git a/pkgs/development/libraries/libgepub/default.nix b/pkgs/development/libraries/libgepub/default.nix
index 7ae7bff50ef..1c5d43af12e 100644
--- a/pkgs/development/libraries/libgepub/default.nix
+++ b/pkgs/development/libraries/libgepub/default.nix
@@ -1,19 +1,43 @@
-{ lib, stdenv, fetchurl, meson, ninja, pkg-config, glib, gobject-introspection, gnome
-, webkitgtk, libsoup, libxml2, libarchive }:
+{ lib
+, stdenv
+, fetchurl
+, meson
+, ninja
+, pkg-config
+, glib
+, gobject-introspection
+, gnome
+, webkitgtk_4_1
+, libsoup_3
+, libxml2
+, libarchive
+}:
 
 stdenv.mkDerivation rec {
   pname = "libgepub";
-  version = "0.6.0";
+  version = "0.7.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "16dkyywqdnfngmwsgbyga0kl9vcnzczxi3lmhm27pifrq5f3k2n7";
+    sha256 = "IQpMeJXC6E8BpWglArpej6PqiWrzFw+yWS/OHdpW4C4=";
   };
 
-  doCheck = true;
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+    gobject-introspection
+  ];
+
+  buildInputs = [
+    glib
+    webkitgtk_4_1
+    libsoup_3
+    libxml2
+    libarchive
+  ];
 
-  nativeBuildInputs = [ meson ninja pkg-config gobject-introspection ];
-  buildInputs = [ glib webkitgtk libsoup libxml2 libarchive ];
+  doCheck = true;
 
   passthru = {
     updateScript = gnome.updateScript {
diff --git a/pkgs/development/libraries/libgnomekbd/default.nix b/pkgs/development/libraries/libgnomekbd/default.nix
index 5efd751bbb1..251f86b0578 100644
--- a/pkgs/development/libraries/libgnomekbd/default.nix
+++ b/pkgs/development/libraries/libgnomekbd/default.nix
@@ -1,19 +1,31 @@
-{ lib, stdenv, fetchurl, pkg-config, file, intltool, glib, gtk3, libxklavier, wrapGAppsHook, gnome, gobject-introspection }:
+{ lib
+, stdenv
+, fetchurl
+, meson
+, ninja
+, pkg-config
+, gobject-introspection
+, glib
+, gtk3
+, libxklavier
+, wrapGAppsHook
+, gnome
+}:
 
 stdenv.mkDerivation rec {
   pname = "libgnomekbd";
-  version = "3.26.1";
+  version = "3.28.1";
 
   outputs = [ "out" "dev" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "0y962ykn3rr9gylj0pwpww7bi20lmhvsw6qvxs5bisbn2mih5jpp";
+    sha256 = "ItxZVm1zwAZTUPWpc0DmLsx7CMTfGRg4BLuL4kyP6HA=";
   };
 
   nativeBuildInputs = [
-    file
-    intltool
+    meson
+    ninja
     pkg-config
     wrapGAppsHook
     glib
@@ -27,9 +39,9 @@ stdenv.mkDerivation rec {
     glib
   ];
 
-  postPatch = ''
-    substituteInPlace libgnomekbd/Makefile.in \
-      --replace "shell pkg-config" 'shell $(PKG_CONFIG)'
+  postInstall = ''
+    # Missing post-install script.
+    glib-compile-schemas "$out/share/glib-2.0/schemas"
   '';
 
   passthru = {
diff --git a/pkgs/development/libraries/libgweather/default.nix b/pkgs/development/libraries/libgweather/default.nix
index 77a4b936ae5..0dfa6b91a79 100644
--- a/pkgs/development/libraries/libgweather/default.nix
+++ b/pkgs/development/libraries/libgweather/default.nix
@@ -5,27 +5,28 @@
 , ninja
 , pkg-config
 , libxml2
+, json-glib
 , glib
 , gettext
-, libsoup
+, libsoup_3
 , gi-docgen
 , gobject-introspection
 , python3
 , tzdata
-, geocode-glib
+, geocode-glib_2
 , vala
 , gnome
 }:
 
 stdenv.mkDerivation rec {
   pname = "libgweather";
-  version = "4.0.0";
+  version = "4.2.0";
 
   outputs = [ "out" "dev" "devdoc" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "RA1EgBtvcrSMZ25eN/kQnP7hOU/XTMknJeGxuk+ug0w=";
+    sha256 = "r4qBLaDYl2oADh1iVywlYIaoFzI/vzWwZtv92NLKYgM=";
   };
 
   patches = [
@@ -52,9 +53,10 @@ stdenv.mkDerivation rec {
 
   buildInputs = [
     glib
-    libsoup
+    libsoup_3
     libxml2
-    geocode-glib
+    json-glib
+    geocode-glib_2
   ];
 
   mesonFlags = [
@@ -64,7 +66,6 @@ stdenv.mkDerivation rec {
   ];
 
   postPatch = ''
-    patchShebangs build-aux/meson/meson_post_install.py
     patchShebangs build-aux/meson/gen_locations_variant.py
 
     # Run-time dependency gi-docgen found: NO (tried pkgconfig and cmake)
diff --git a/pkgs/development/libraries/libhandy/default.nix b/pkgs/development/libraries/libhandy/default.nix
index 58d9097d837..de3bdad3e8d 100644
--- a/pkgs/development/libraries/libhandy/default.nix
+++ b/pkgs/development/libraries/libhandy/default.nix
@@ -26,7 +26,7 @@
 
 stdenv.mkDerivation rec {
   pname = "libhandy";
-  version = "1.6.3";
+  version = "1.8.0";
 
   outputs = [
     "out"
@@ -39,7 +39,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "sha256-R3iL01gE69M8sJkR6XU0TIQ1ngttlSCv0cgh66i6d/8=";
+    sha256 = "sha256-bCVCwFeJJLDCm3rmy0TrJt846wHW1e89fQsIJXYyMOg=";
   };
 
   depsBuildBuild = [
diff --git a/pkgs/development/libraries/libosinfo/default.nix b/pkgs/development/libraries/libosinfo/default.nix
index 7564e87cdc2..03258933623 100644
--- a/pkgs/development/libraries/libosinfo/default.nix
+++ b/pkgs/development/libraries/libosinfo/default.nix
@@ -9,7 +9,7 @@
 , gtk-doc
 , docbook_xsl
 , glib
-, libsoup
+, libsoup_3
 , libxml2
 , libxslt
 , check
@@ -46,7 +46,7 @@ stdenv.mkDerivation rec {
   ];
   buildInputs = [
     glib
-    libsoup
+    libsoup_3
     libxml2
     libxslt
   ];
diff --git a/pkgs/development/libraries/libpeas/default.nix b/pkgs/development/libraries/libpeas/default.nix
index 95e56153e51..e218a78bdfc 100644
--- a/pkgs/development/libraries/libpeas/default.nix
+++ b/pkgs/development/libraries/libpeas/default.nix
@@ -16,13 +16,13 @@
 
 stdenv.mkDerivation rec {
   pname = "libpeas";
-  version = "1.32.0";
+  version = "1.34.0";
 
   outputs = [ "out" "dev" "devdoc" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "1iVSD6AuiXcCmyRq5Dm8IYloll8egtYSIItxPx3MPQ4=";
+    sha256 = "QwX3Fdq0ta0+gAfa7DFmJecGWpTmPiXvVese+5ZKe/A=";
   };
 
   depsBuildBuild = [
diff --git a/pkgs/development/libraries/librest/1.0.nix b/pkgs/development/libraries/librest/1.0.nix
index 30482a51027..cbd525d40b0 100644
--- a/pkgs/development/libraries/librest/1.0.nix
+++ b/pkgs/development/libraries/librest/1.0.nix
@@ -32,7 +32,7 @@ stdenv.mkDerivation rec {
     gobject-introspection
   ];
 
-  buildInputs = [
+  propagatedBuildInputs = [
     glib
     json-glib
     libsoup_3
diff --git a/pkgs/development/libraries/librsvg/default.nix b/pkgs/development/libraries/librsvg/default.nix
index 91e0033cd27..1d2954eb74f 100644
--- a/pkgs/development/libraries/librsvg/default.nix
+++ b/pkgs/development/libraries/librsvg/default.nix
@@ -22,23 +22,32 @@
 , vala
 , withIntrospection ? stdenv.hostPlatform == stdenv.buildPlatform
 , gobject-introspection
-, nixosTests
+, _experimental-update-script-combinators
+, common-updater-scripts
+, jq
+, nix
 }:
 
 stdenv.mkDerivation rec {
   pname = "librsvg";
-  version = "2.54.4";
+  version = "2.55.1";
 
-  outputs = [ "out" "dev" "installedTests" ] ++ lib.optionals withIntrospection [
+  outputs = [ "out" "dev" ] ++ lib.optionals withIntrospection [
     "devdoc"
   ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "6hUqJD9qQ8DgNqKMcN4/y83qVmTGgRx4WSvCKezCSDM=";
+    sha256 = "a69IqdOlb9E7v7ufH3Z1myQLcKH6Ig/SOEdNZqkm+Yw=";
   };
 
-  cargoVendorDir = "vendor";
+  cargoDeps = rustPlatform.fetchCargoTarball {
+    inherit src;
+    name = "${pname}-${version}";
+    hash = "sha256-nRmOB9Jo+mmB0+wXrQvoII4e0ucV7bNCDeuk6CbcPdk=";
+    # TODO: move this to fetchCargoTarball
+    dontConfigure = true;
+  };
 
   strictDeps = true;
 
@@ -83,16 +92,10 @@ stdenv.mkDerivation rec {
     # https://github.com/NixOS/nixpkgs/pull/117081#issuecomment-827782004
     (lib.enableFeature (withIntrospection && !stdenv.isDarwin) "vala")
 
-    "--enable-installed-tests"
     "--enable-always-build-tests"
   ] ++ lib.optional stdenv.isDarwin "--disable-Bsymbolic"
     ++ lib.optional (stdenv.buildPlatform != stdenv.hostPlatform) "RUST_TARGET=${rust.toRustTarget stdenv.hostPlatform}";
 
-  makeFlags = [
-    "installed_test_metadir=${placeholder "installedTests"}/share/installed-tests/RSVG"
-    "installed_testdir=${placeholder "installedTests"}/libexec/installed-tests/RSVG"
-  ];
-
   doCheck = false; # all tests fail on libtool-generated rsvg-convert not being able to find coreutils
 
   # It wants to add loaders and update the loaders.cache in gdk-pixbuf
@@ -131,14 +134,40 @@ stdenv.mkDerivation rec {
   '';
 
   passthru = {
-    updateScript = gnome.updateScript {
-      packageName = pname;
-      versionPolicy = "odd-unstable";
-    };
-
-    tests = {
-      installedTests = nixosTests.installed-tests.librsvg;
-    };
+    updateScript =
+      let
+        updateSource = gnome.updateScript {
+          packageName = "librsvg";
+        };
+
+        updateLockfile = {
+          command = [
+            "sh"
+            "-c"
+            ''
+              PATH=${lib.makeBinPath [
+                common-updater-scripts
+                jq
+                nix
+              ]}
+              # update-source-version does not allow updating to the same version so we need to clear it temporarily.
+              # Get the current version so that we can restore it later.
+              latestVersion=$(nix-instantiate --eval -A librsvg.version | jq --raw-output)
+              # Clear the version. Provide hash so that we do not need to do pointless TOFU.
+              # Needs to be a fake SRI hash that is non-zero, since u-s-v uses zero as a placeholder.
+              # Also cannot be here verbatim or u-s-v would be confused what to replace.
+              update-source-version librsvg 0 "sha256-${lib.fixedWidthString 44 "B" "="}" --source-key=cargoDeps > /dev/null
+              update-source-version librsvg "$latestVersion" --source-key=cargoDeps > /dev/null
+            ''
+          ];
+          # Experimental feature: do not copy!
+          supportedFeatures = [ "silent" ];
+        };
+      in
+      _experimental-update-script-combinators.sequence [
+        updateSource
+        updateLockfile
+      ];
   };
 
   meta = with lib; {
diff --git a/pkgs/development/libraries/libshumate/default.nix b/pkgs/development/libraries/libshumate/default.nix
index 7443ec4c502..5911e199bcb 100644
--- a/pkgs/development/libraries/libshumate/default.nix
+++ b/pkgs/development/libraries/libshumate/default.nix
@@ -10,7 +10,7 @@
 , glib
 , cairo
 , sqlite
-, libsoup
+, libsoup_3
 , gtk4
 , xvfb-run
 , gnome
@@ -18,7 +18,7 @@
 
 stdenv.mkDerivation rec {
   pname = "libshumate";
-  version = "1.0.0.alpha.1";
+  version = "1.0.1";
 
   outputs = [ "out" "dev" "devdoc" ];
   outputBin = "devdoc"; # demo app
@@ -28,7 +28,7 @@ stdenv.mkDerivation rec {
     owner = "GNOME";
     repo = "libshumate";
     rev = version;
-    sha256 = "4kCXFUJRglh1aIBk03MNUV8jfx0mJzIFCUDM4g9tzlg=";
+    sha256 = "fpHMfxnPnGJSfJe4kJ28+704QjjRwYddOZAB17QxXno=";
   };
 
   nativeBuildInputs = [
@@ -44,7 +44,7 @@ stdenv.mkDerivation rec {
     glib
     cairo
     sqlite
-    libsoup
+    libsoup_3
     gtk4
   ];
 
diff --git a/pkgs/development/libraries/libsoup/3.x.nix b/pkgs/development/libraries/libsoup/3.x.nix
index 2b1c6e68795..af7d640b6de 100644
--- a/pkgs/development/libraries/libsoup/3.x.nix
+++ b/pkgs/development/libraries/libsoup/3.x.nix
@@ -1,6 +1,7 @@
 { stdenv
 , lib
 , fetchurl
+, fetchpatch
 , glib
 , meson
 , ninja
@@ -15,27 +16,37 @@
 , withVala ? stdenv.buildPlatform == stdenv.hostPlatform
 , libpsl
 , python3
+, gi-docgen
 , brotli
 , libnghttp2
 }:
 
 stdenv.mkDerivation rec {
   pname = "libsoup";
-  version = "3.0.7";
+  version = "3.2.0";
 
-  outputs = [ "out" "dev" ];
+  outputs = [ "out" "dev" "devdoc" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "sha256-69+QzzWZwRrLtoGKnZ4/ydLGjlbrgpuTlilyaD4b98g=";
+    sha256 = "sha256-KDI3BpjKj5+/F0w0W3PYm2BWEQOmJsLfcHJrBwf3m9M=";
   };
 
+  # https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/310
+  patches = [
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/libsoup/-/commit/0fae143dc8b0e668b7a35a9c1364009e7cf06d0f.patch";
+      sha256 = "sha256-yAKC7WGk0aQxMkT4At6Qfx1QO2InNotITrl/Lim41Jk=";
+    })
+  ];
+
   nativeBuildInputs = [
     meson
     ninja
     pkg-config
     glib
     python3
+    gi-docgen
   ] ++ lib.optionals withIntrospection [
     gobject-introspection
   ] ++ lib.optionals withVala [
@@ -64,8 +75,6 @@ stdenv.mkDerivation rec {
     "-Dntlm=disabled"
     # Requires wstest from autobahn-testsuite.
     "-Dautobahn=disabled"
-    # Requires quart Python module.
-    "-Dhttp2_tests=disabled"
     # Requires gnutls, not added for closure size.
     "-Dpkcs11_tests=disabled"
   ] ++ lib.optionals (!stdenv.isLinux) [
@@ -82,6 +91,11 @@ stdenv.mkDerivation rec {
     patchShebangs libsoup/
   '';
 
+  postFixup = ''
+    # Cannot be in postInstall, otherwise _multioutDocs hook in preFixup will move right back.
+    moveToOutput "share/doc" "$devdoc"
+  '';
+
   passthru = {
     propagatedUserEnvPackages = [
       glib-networking.out
diff --git a/pkgs/development/libraries/libwnck/default.nix b/pkgs/development/libraries/libwnck/default.nix
index 9f92ed5fd45..d6e64759172 100644
--- a/pkgs/development/libraries/libwnck/default.nix
+++ b/pkgs/development/libraries/libwnck/default.nix
@@ -1,4 +1,5 @@
-{ lib, stdenv
+{ stdenv
+, lib
 , fetchurl
 , fetchpatch
 , meson
@@ -21,16 +22,25 @@
 
 stdenv.mkDerivation rec {
   pname = "libwnck";
-  version = "40.1";
+  version = "43.0";
 
   outputs = [ "out" "dev" "devdoc" ];
   outputBin = "dev";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "AxNPoRTvP740B1qoNnj1iqLevp/O9OojwHeeKGAdZhE=";
+    sha256 = "kFvNuFhH1rj4hh5WswzW3GHq5n7O9M2ZSp+SWiaiwf4=";
   };
 
+  patches = [
+    # bamfdaemon crashes with libwnck3 43.0
+    # https://bugs.launchpad.net/ubuntu/+source/libwnck3/+bug/1990263
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/libwnck/-/commit/6ceb684442eb26e3bdb8a38bf52264ad55f96a7b.patch";
+      sha256 = "/1wCnElCrZB7XTDW/l3dxMKZ9czGnukbGu4/aQStoXE=";
+    })
+  ];
+
   nativeBuildInputs = [
     meson
     ninja
diff --git a/pkgs/development/libraries/libwpe/default.nix b/pkgs/development/libraries/libwpe/default.nix
index d895574d527..7f7b202576f 100644
--- a/pkgs/development/libraries/libwpe/default.nix
+++ b/pkgs/development/libraries/libwpe/default.nix
@@ -12,11 +12,11 @@
 
 stdenv.mkDerivation rec {
   pname = "libwpe";
-  version = "1.12.3";
+  version = "1.14.0";
 
   src = fetchurl {
-    url = "https://wpewebkit.org/releases/${pname}-${version}.tar.xz";
-    sha256 = "sha256-uE/b+8hJzk/fCEuyi1jlRjsbS2zI8gDcd7QfhUXVMp0=";
+    url = "https://wpewebkit.org/releases/libwpe-${version}.tar.xz";
+    sha256 = "wHMwW7rF9EAswcikdTv6PWOkCJAfhhggUeqlp13YnAA=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/libraries/libwpe/fdo.nix b/pkgs/development/libraries/libwpe/fdo.nix
index 736b408323d..ce385f24c20 100644
--- a/pkgs/development/libraries/libwpe/fdo.nix
+++ b/pkgs/development/libraries/libwpe/fdo.nix
@@ -16,11 +16,11 @@
 
 stdenv.mkDerivation rec {
   pname = "wpebackend-fdo";
-  version = "1.12.1";
+  version = "1.14.0";
 
   src = fetchurl {
-    url = "https://wpewebkit.org/releases/${pname}-${version}.tar.xz";
-    sha256 = "sha256-RaqDPETsKS8x+pQ7AbjMdeVOtiOte6amb8LxGP5p5ik=";
+    url = "https://wpewebkit.org/releases/wpebackend-fdo-${version}.tar.xz";
+    sha256 = "51sMsscUVEhBboaWAT2Ig/Z1xmwR7XUOBoZe/sWAkVU=";
   };
 
   depsBuildBuild = [
diff --git a/pkgs/development/libraries/malcontent/default.nix b/pkgs/development/libraries/malcontent/default.nix
index 4154f0315cd..92ec2354288 100644
--- a/pkgs/development/libraries/malcontent/default.nix
+++ b/pkgs/development/libraries/malcontent/default.nix
@@ -5,7 +5,7 @@
 , ninja
 , pkg-config
 , gobject-introspection
-, wrapGAppsHook
+, wrapGAppsNoGuiHook
 , glib
 , coreutils
 , accountsservice
@@ -19,7 +19,7 @@
 
 stdenv.mkDerivation rec {
   pname = "malcontent";
-  version = "0.10.5";
+  version = "0.11.0";
 
   outputs = [ "bin" "out" "lib" "pam" "dev" "man" "installedTests" ];
 
@@ -28,7 +28,7 @@ stdenv.mkDerivation rec {
     owner = "pwithnall";
     repo = pname;
     rev = version;
-    sha256 = "sha256-UPKAStB6wTd3qbbISHMgNw1bJjIRgn89tHnsw4ZptvQ=";
+    sha256 = "sha256-92F30DfdSJvO5C9EmNtiC/H6Fa6qQHecYSx59JKp8vA=";
   };
 
   patches = [
@@ -44,7 +44,7 @@ stdenv.mkDerivation rec {
     ninja
     pkg-config
     gobject-introspection
-    wrapGAppsHook
+    wrapGAppsNoGuiHook
   ];
 
   buildInputs = [
diff --git a/pkgs/development/libraries/malcontent/ui.nix b/pkgs/development/libraries/malcontent/ui.nix
index e306267154a..8969d1e1342 100644
--- a/pkgs/development/libraries/malcontent/ui.nix
+++ b/pkgs/development/libraries/malcontent/ui.nix
@@ -4,14 +4,15 @@
 , pkg-config
 , gobject-introspection
 , itstool
-, wrapGAppsHook
+, wrapGAppsHook4
 , glib
 , accountsservice
 , dbus
 , flatpak
 , malcontent
-, gtk3
-, appstream-glib
+, gtk4
+, libadwaita
+, appstream
 , desktop-file-utils
 , polkit
 , glib-testing
@@ -39,11 +40,11 @@ stdenv.mkDerivation rec {
     gobject-introspection
     itstool
     desktop-file-utils
-    wrapGAppsHook
+    wrapGAppsHook4
   ];
 
   buildInputs = [
-    appstream-glib
+    appstream
     dbus
     polkit
     glib-testing
@@ -54,7 +55,8 @@ stdenv.mkDerivation rec {
     accountsservice
     malcontent
     glib
-    gtk3
+    gtk4
+    libadwaita
   ];
 
   mesonFlags = [
@@ -64,6 +66,12 @@ stdenv.mkDerivation rec {
     "-Dui=enabled"
   ];
 
+  postPatch = ''
+    # https://gitlab.freedesktop.org/pwithnall/malcontent/-/merge_requests/148
+    substituteInPlace build-aux/meson_post_install.py \
+      --replace gtk-update-icon-cache gtk4-update-icon-cache
+  '';
+
   meta = with lib; {
     description = "UI components for parental controls library";
     homepage = "https://gitlab.freedesktop.org/pwithnall/malcontent";
diff --git a/pkgs/development/libraries/pango/default.nix b/pkgs/development/libraries/pango/default.nix
index 6ce22a8c1c6..3beeaa67321 100644
--- a/pkgs/development/libraries/pango/default.nix
+++ b/pkgs/development/libraries/pango/default.nix
@@ -22,13 +22,13 @@
 
 stdenv.mkDerivation rec {
   pname = "pango";
-  version = "1.50.8";
+  version = "1.50.11";
 
   outputs = [ "bin" "out" "dev" "devdoc" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "z2JvWd0UbAIxdMQDSSDpZn8dJawsFWlRbWMTbDESVfo=";
+    sha256 = "iAD4Etie5hOIGIcDID86eHiWPCL4aVqvH6ChoUKNF64=";
   };
 
   depsBuildBuild = [
@@ -97,6 +97,8 @@ stdenv.mkDerivation rec {
     updateScript = gnome.updateScript {
       packageName = pname;
       versionPolicy = "odd-unstable";
+      # 1.90 is alpha for API 2.
+      freeze = true;
     };
   };
 
diff --git a/pkgs/development/libraries/pangomm/2.48.nix b/pkgs/development/libraries/pangomm/2.48.nix
index cdc644ec9cd..478378f64c2 100644
--- a/pkgs/development/libraries/pangomm/2.48.nix
+++ b/pkgs/development/libraries/pangomm/2.48.nix
@@ -14,13 +14,13 @@
 
 stdenv.mkDerivation rec {
   pname = "pangomm";
-  version= "2.50.0";
+  version= "2.50.1";
 
   outputs = [ "out" "dev" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "sha256-onqnfgF7mvzp51HYW9HPiQq7s6WL9Z0PrJF+74LbO1s=";
+    sha256 = "sha256-zMmSNBPkCMK/9jffZjJIMn1ygi8R45S0I+HFZSt9khQ=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/libraries/pangomm/default.nix b/pkgs/development/libraries/pangomm/default.nix
index 1fc5cea01de..ccabdfdcfe8 100644
--- a/pkgs/development/libraries/pangomm/default.nix
+++ b/pkgs/development/libraries/pangomm/default.nix
@@ -3,11 +3,11 @@
 
 stdenv.mkDerivation rec {
   pname = "pangomm";
-  version= "2.46.2";
+  version= "2.46.3";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "sha256-V0QqtNwEOHe/44OZFXMastaT/GY0pxYUQi+1MMnqpvQ=";
+    sha256 = "sha256-QQ/gTUcaYI8/AnPToX2EAkHZEe0P8sdYqYWcZsbyQ3k=";
   };
 
   outputs = [ "out" "dev" ];
diff --git a/pkgs/development/libraries/spice-gtk/default.nix b/pkgs/development/libraries/spice-gtk/default.nix
index 7a647084f9c..2564162c3bf 100644
--- a/pkgs/development/libraries/spice-gtk/default.nix
+++ b/pkgs/development/libraries/spice-gtk/default.nix
@@ -17,13 +17,16 @@
 , libdrm
 , libjpeg_turbo
 , libopus
+, withLibsoup2 ? false
 , libsoup
+, libsoup_3
 , libusb1
 , lz4
 , meson
 , ninja
 , openssl
 , perl
+, phodav_2_0
 , phodav
 , pixman
 , pkg-config
@@ -84,7 +87,6 @@ stdenv.mkDerivation rec {
     gettext
     gobject-introspection
     gtk-doc
-    libsoup
     meson
     ninja
     perl
@@ -108,10 +110,11 @@ stdenv.mkDerivation rec {
     libcacard
     libjpeg_turbo
     libopus
+    (if withLibsoup2 then libsoup else libsoup_3)
     libusb1
     lz4
     openssl
-    phodav
+    (if withLibsoup2 then phodav_2_0 else phodav)
     pixman
     spice-protocol
     usbredir
diff --git a/pkgs/development/libraries/template-glib/default.nix b/pkgs/development/libraries/template-glib/default.nix
index 23d2e8907ff..bbb5aef36f1 100644
--- a/pkgs/development/libraries/template-glib/default.nix
+++ b/pkgs/development/libraries/template-glib/default.nix
@@ -1,25 +1,57 @@
-{ lib, stdenv, fetchurl, meson, ninja, pkg-config, glib, gobject-introspection, flex, bison, vala, gettext, gnome, gtk-doc, docbook_xsl, docbook_xml_dtd_43 }:
-let
-  version = "3.34.1";
+{ stdenv
+, lib
+, fetchurl
+, meson
+, ninja
+, pkg-config
+, glib
+, gobject-introspection
+, flex
+, bison
+, vala
+, gettext
+, gnome
+, gtk-doc
+, docbook_xsl
+, docbook_xml_dtd_43
+}:
+
+stdenv.mkDerivation rec {
   pname = "template-glib";
-in
-stdenv.mkDerivation {
-  name = "${pname}-${version}";
+  version = "3.36.0";
 
   outputs = [ "out" "dev" "devdoc" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "nsm3HgTU9csU91XveQYxzQtFwGA+Ecg2/Hz9niaM0Ho=";
+    sha256 = "HBKVJa5kQDpmL3Zm9jWDhqgVZohyrPEctWirObuh9CE=";
   };
 
-  nativeBuildInputs = [ meson ninja pkg-config gettext flex bison vala glib gtk-doc docbook_xsl docbook_xml_dtd_43 gobject-introspection ];
-  buildInputs = [ glib ];
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+    gettext
+    flex
+    bison
+    vala
+    glib
+    gtk-doc
+    docbook_xsl
+    docbook_xml_dtd_43
+    gobject-introspection
+  ];
+
+  buildInputs = [
+    glib
+  ];
 
   mesonFlags = [
-    "-Denable_gtk_doc=true"
+    "-Dgtk_doc=true"
   ];
 
+  doCheck = true;
+
   passthru = {
     updateScript = gnome.updateScript {
       packageName = pname;
diff --git a/pkgs/development/libraries/tepl/default.nix b/pkgs/development/libraries/tepl/default.nix
index e7918ea56e2..c6c7d265ed7 100644
--- a/pkgs/development/libraries/tepl/default.nix
+++ b/pkgs/development/libraries/tepl/default.nix
@@ -15,13 +15,13 @@
 
 stdenv.mkDerivation rec {
   pname = "tepl";
-  version = "6.0.2";
+  version = "6.1.2";
 
   outputs = [ "out" "dev" "devdoc" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "W0qcbGG9AAVT75eZ9MpiXQX1gBA2+ywvkopJRIyQPAk=";
+    sha256 = "Cv4uyaWNT6ixBntqc0/TxzNqn/+3VyyWPFLqbYckoZs=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/libraries/tracker-miners/default.nix b/pkgs/development/libraries/tracker-miners/default.nix
index 846346d534b..fa0e30f1abc 100644
--- a/pkgs/development/libraries/tracker-miners/default.nix
+++ b/pkgs/development/libraries/tracker-miners/default.nix
@@ -1,7 +1,6 @@
 { stdenv
 , lib
 , fetchurl
-, fetchpatch
 , asciidoc
 , docbook-xsl-nons
 , docbook_xml_dtd_45
@@ -14,10 +13,9 @@
 , ninja
 , pkg-config
 , vala
-, wrapGAppsHook
+, wrapGAppsNoGuiHook
 , bzip2
 , dbus
-, evolution-data-server
 , exempi
 , giflib
 , glib
@@ -34,7 +32,6 @@
 , libosinfo
 , libpng
 , libseccomp
-, libsoup
 , libtiff
 , libuuid
 , libxml2
@@ -49,25 +46,13 @@
 
 stdenv.mkDerivation rec {
   pname = "tracker-miners";
-  version = "3.3.1";
+  version = "3.4.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "Pt3G0nLAKWn6TCwV360MSddtAh8aJ+xwi2m+gCU1PJQ=";
+    sha256 = "ouA2XjCBG7YelcghSzP0eCo6BODGJGoG7NnAFBfNhOY=";
   };
 
-  # TODO: remove me on 3.4.0
-  patches = [
-    (fetchpatch {
-      url = "https://gitlab.gnome.org/GNOME/tracker-miners/-/commit/cc655ba0f95022cf35bc6d44cb5155788fee2e24.patch";
-      sha256 = "sha256-a85ygtabpkruiDgKbseQxYbFIAQlVDhs3eWkbStJjKs=";
-    })
-    (fetchpatch {
-      url = "https://gitlab.gnome.org/GNOME/tracker-miners/-/commit/9e613ceb37ec41fd1cd88c3d539e3ee03e8f6ba6.patch";
-      sha256 = "sha256-ht7EfZztyl0st0Sv7H92Q37vwXY4T61GQm9WJ8IxTTg=";
-    })
-  ];
-
   nativeBuildInputs = [
     asciidoc
     docbook-xsl-nons
@@ -79,7 +64,7 @@ stdenv.mkDerivation rec {
     ninja
     pkg-config
     vala
-    wrapGAppsHook
+    wrapGAppsNoGuiHook
   ];
 
   # TODO: add libenca, libosinfo
@@ -108,14 +93,12 @@ stdenv.mkDerivation rec {
     libjpeg
     libosinfo
     libpng
-    libsoup
     libtiff
     libuuid
     libxml2
     poppler
     taglib
   ] ++ lib.optionals stdenv.isLinux [
-    evolution-data-server
     libseccomp
     networkmanager
     systemd
diff --git a/pkgs/development/libraries/tracker/default.nix b/pkgs/development/libraries/tracker/default.nix
index e8d6ed82ed0..2c4422d7a1f 100644
--- a/pkgs/development/libraries/tracker/default.nix
+++ b/pkgs/development/libraries/tracker/default.nix
@@ -13,7 +13,6 @@
 , libxml2
 , glib
 , wrapGAppsNoGuiHook
-, vala
 , sqlite
 , libxslt
 , libstemmer
@@ -30,13 +29,13 @@
 
 stdenv.mkDerivation rec {
   pname = "tracker";
-  version = "3.3.2";
+  version = "3.4.0";
 
   outputs = [ "out" "dev" "devdoc" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "DtK5iRiVbW8WQpxgfdihTIT02gpIlw/S64yTq6PPmRM=";
+    sha256 = "s7OAyVcdfHQjtfQB5KLy143kcUOwNessEoHiQjxZIYs=";
   };
 
   postPatch = ''
@@ -50,7 +49,6 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [
     meson
     ninja
-    vala
     pkg-config
     asciidoc
     gettext
diff --git a/pkgs/development/libraries/vte/default.nix b/pkgs/development/libraries/vte/default.nix
index 0ddff4d1812..6ec3acebd6e 100644
--- a/pkgs/development/libraries/vte/default.nix
+++ b/pkgs/development/libraries/vte/default.nix
@@ -9,9 +9,12 @@
 , gnome
 , glib
 , gtk3
+, gtk4
+, gtkVersion ? "3"
 , gobject-introspection
 , vala
 , python3
+, gi-docgen
 , libxml2
 , gnutls
 , gperf
@@ -27,13 +30,13 @@
 
 stdenv.mkDerivation rec {
   pname = "vte";
-  version = "0.68.0";
+  version = "0.70.0";
 
-  outputs = [ "out" "dev" ];
+  outputs = [ "out" "dev" "devdoc" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "sha256-E+fUeJyiFqM3gAMNJGybE92/0ECUxjFu6n/5IoTdF0k=";
+    sha256 = "sha256-k+DdShvCp6GmLaZBYKJ0zORWl26hVn2YWR2pbi0mWuY=";
   };
 
   patches = [
@@ -57,6 +60,7 @@ stdenv.mkDerivation rec {
     pkg-config
     vala
     python3
+    gi-docgen
   ];
 
   buildInputs = [
@@ -69,15 +73,20 @@ stdenv.mkDerivation rec {
     systemd
   ];
 
-  propagatedBuildInputs = [
+  propagatedBuildInputs = assert (gtkVersion == "3" || gtkVersion == "4"); [
     # Required by vte-2.91.pc.
-    gtk3
+    (if gtkVersion == "3" then gtk3 else gtk4)
     glib
     pango
   ];
 
-  mesonFlags = lib.optionals (!systemdSupport) [
+  mesonFlags = [
+    "-Ddocs=true"
+  ] ++ lib.optionals (!systemdSupport) [
     "-D_systemd=false"
+  ] ++ lib.optionals (gtkVersion == "4") [
+    "-Dgtk3=false"
+    "-Dgtk4=true"
   ] ++ lib.optionals stdenv.isDarwin [
     # -Bsymbolic-functions is not supported on darwin
     "-D_b_symbolic_functions=false"
@@ -93,6 +102,11 @@ stdenv.mkDerivation rec {
     patchShebangs src/modes.py
   '';
 
+  postFixup = ''
+    # Cannot be in postInstall, otherwise _multioutDocs hook in preFixup will move right back.
+    moveToOutput "share/doc" "$devdoc"
+  '';
+
   passthru = {
     updateScript = gnome.updateScript {
       packageName = pname;
diff --git a/pkgs/development/libraries/xdg-desktop-portal-gnome/default.nix b/pkgs/development/libraries/xdg-desktop-portal-gnome/default.nix
index 199994038b5..5339a0c54cb 100644
--- a/pkgs/development/libraries/xdg-desktop-portal-gnome/default.nix
+++ b/pkgs/development/libraries/xdg-desktop-portal-gnome/default.nix
@@ -18,11 +18,11 @@
 
 stdenv.mkDerivation rec {
   pname = "xdg-desktop-portal-gnome";
-  version = "42.3";
+  version = "43.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "TtEFpmfkYyVGcQPcc0bSAj+uwdXsFTvRcxbak49TrOA=";
+    sha256 = "DhhnpFvKpd2yQKTP2yLdBVz4fwchC547twlJ88e+FqY=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/libraries/xdg-desktop-portal/default.nix b/pkgs/development/libraries/xdg-desktop-portal/default.nix
index 05b0f553448..438940f3bac 100644
--- a/pkgs/development/libraries/xdg-desktop-portal/default.nix
+++ b/pkgs/development/libraries/xdg-desktop-portal/default.nix
@@ -3,9 +3,9 @@
 , autoreconfHook
 , dbus
 , fetchFromGitHub
-, fetchpatch
 , flatpak
 , fuse3
+, bubblewrap
 , systemdMinimal
 , geoclue2
 , glib
@@ -20,12 +20,12 @@
 , python3
 , pkg-config
 , stdenv
-, substituteAll
+, runCommand
 , wrapGAppsHook
 , enableGeoLocation ? true
 }:
 
-stdenv.mkDerivation rec {
+stdenv.mkDerivation (finalAttrs: {
   pname = "xdg-desktop-portal";
   version = "1.15.0";
 
@@ -33,11 +33,21 @@ stdenv.mkDerivation rec {
 
   src = fetchFromGitHub {
     owner = "flatpak";
-    repo = pname;
-    rev = version;
+    repo = "xdg-desktop-portal";
+    rev = finalAttrs.version;
     sha256 = "sha256-Kw3zJeGwPfw1fDo8HsgYmrpgCk/PUvWZPRloKJNAJVc=";
   };
 
+  patches = [
+    # The icon validator copied from Flatpak needs to access the gdk-pixbuf loaders
+    # in the Nix store and cannot bind FHS paths since those are not available on NixOS.
+    (runCommand "icon-validator.patch" { } ''
+      # Flatpak uses a different path
+      substitute "${flatpak.icon-validator-patch}" "$out" \
+        --replace "/icon-validator/validate-icon.c" "/src/validate-icon.c"
+    '')
+  ];
+
   nativeBuildInputs = [
     autoreconfHook
     libxml2
@@ -50,6 +60,7 @@ stdenv.mkDerivation rec {
     dbus
     flatpak
     fuse3
+    bubblewrap
     systemdMinimal # libsystemd
     glib
     gsettings-desktop-schemas
@@ -83,6 +94,11 @@ stdenv.mkDerivation rec {
   passthru = {
     tests = {
       installedTests = nixosTests.installed-tests.xdg-desktop-portal;
+
+      validate-icon = runCommand "test-icon-validation" { } ''
+        ${finalAttrs.finalPackage}/libexec/xdg-desktop-portal-validate-icon --sandbox 512 512 ${../../../applications/audio/zynaddsubfx/ZynLogo.svg} > "$out"
+        grep format=svg "$out"
+      '';
     };
   };
 
@@ -92,4 +108,4 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ jtojnar ];
     platforms = platforms.linux;
   };
-}
+})
diff --git a/pkgs/development/python-modules/pyatspi/default.nix b/pkgs/development/python-modules/pyatspi/default.nix
index d32a4a1ca3a..7169a4022f6 100644
--- a/pkgs/development/python-modules/pyatspi/default.nix
+++ b/pkgs/development/python-modules/pyatspi/default.nix
@@ -2,12 +2,12 @@
 
 buildPythonPackage rec {
   pname = "pyatspi";
-  version = "2.38.2";
+  version = "2.46.0";
   format = "other";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "DnCJwLYwlhS1NiCDazRi1/kShOQ2/kkpuhYZqEHPEYU=";
+    sha256 = "1FSJzz1HqhULGjXolJs7MQNfjCB15YjSa278Yllwxi4=";
   };
 
   nativeBuildInputs = [ pkg-config ];
diff --git a/pkgs/development/ruby-modules/gem-config/default.nix b/pkgs/development/ruby-modules/gem-config/default.nix
index 12c24cd99a9..1a1993aebee 100644
--- a/pkgs/development/ruby-modules/gem-config/default.nix
+++ b/pkgs/development/ruby-modules/gem-config/default.nix
@@ -20,7 +20,7 @@
 { lib, fetchurl, writeScript, ruby, libkrb5, libxml2, libxslt, python2, stdenv, which
 , libiconv, postgresql, v8, clang, sqlite, zlib, imagemagick, lasem
 , pkg-config , ncurses, xapian, gpgme, util-linux, tzdata, icu, libffi
-, cmake, libssh2, openssl, openssl_1_1, libmysqlclient, git, perl, pcre, gecode_3, curl
+, cmake, libssh2, openssl, openssl_1_1, libmysqlclient, git, perl, pcre, pcre2, gecode_3, curl
 , msgpack, libsodium, snappy, libossp_uuid, lxc, libpcap, xorg, gtk2, buildRubyGem
 , cairo, re2, rake, gobject-introspection, gdk-pixbuf, zeromq, czmq, graphicsmagick, libcxx
 , file, libvirt, glib, vips, taglib, libopus, linux-pam, libidn, protobuf, fribidi, harfbuzz
@@ -69,13 +69,13 @@ in
   cairo = attrs: {
     nativeBuildInputs = [ pkg-config ]
       ++ lib.optionals stdenv.isDarwin [ DarwinTools ];
-    buildInputs = [ gtk2 pcre xorg.libpthreadstubs xorg.libXdmcp];
+    buildInputs = [ gtk2 pcre2 xorg.libpthreadstubs xorg.libXdmcp];
   };
 
   cairo-gobject = attrs: {
     nativeBuildInputs = [ pkg-config ]
       ++ lib.optionals stdenv.isDarwin [ DarwinTools ];
-    buildInputs = [ cairo pcre xorg.libpthreadstubs xorg.libXdmcp ];
+    buildInputs = [ cairo pcre2 xorg.libpthreadstubs xorg.libXdmcp ];
   };
 
   charlock_holmes = attrs: {
@@ -230,7 +230,7 @@ in
   gio2 = attrs: {
     nativeBuildInputs = [ pkg-config ]
       ++ lib.optionals stdenv.isDarwin [ DarwinTools ];
-    buildInputs = [ gtk2 pcre gobject-introspection ] ++ lib.optionals stdenv.isLinux [ util-linux libselinux libsepol ];
+    buildInputs = [ gtk2 pcre pcre2 gobject-introspection ] ++ lib.optionals stdenv.isLinux [ util-linux libselinux libsepol ];
   };
 
   gitlab-markup = attrs: { meta.priority = 1; };
@@ -275,7 +275,7 @@ in
   glib2 = attrs: {
     nativeBuildInputs = [ pkg-config ]
       ++ lib.optionals stdenv.isDarwin [ DarwinTools ];
-    buildInputs = [ gtk2 pcre ];
+    buildInputs = [ gtk2 pcre2 ];
   };
 
   gtk2 = attrs: {
@@ -293,7 +293,7 @@ in
       harfbuzz
       libdatrie
       libthai
-      pcre
+      pcre pcre2
       xorg.libpthreadstubs
       xorg.libXdmcp
     ];
@@ -301,7 +301,7 @@ in
   };
 
   gobject-introspection = attrs: {
-    nativeBuildInputs = [ pkg-config pcre ]
+    nativeBuildInputs = [ pkg-config pcre2 ]
       ++ lib.optionals stdenv.isDarwin [ DarwinTools ];
     propagatedBuildInputs = [ gobject-introspection wrapGAppsHook glib ];
   };
@@ -518,7 +518,7 @@ in
       pkg-config
       fribidi
       harfbuzz
-      pcre
+      pcre pcre2
       xorg.libpthreadstubs
       xorg.libXdmcp
     ] ++ lib.optionals stdenv.isDarwin [ DarwinTools ];
diff --git a/pkgs/development/tools/documentation/gi-docgen/default.nix b/pkgs/development/tools/documentation/gi-docgen/default.nix
index 85836f435cb..4b627782d8b 100644
--- a/pkgs/development/tools/documentation/gi-docgen/default.nix
+++ b/pkgs/development/tools/documentation/gi-docgen/default.nix
@@ -1,5 +1,6 @@
 { lib
 , fetchFromGitLab
+, fetchpatch
 , meson
 , ninja
 , python3
@@ -19,6 +20,15 @@ python3.pkgs.buildPythonApplication rec {
     sha256 = "35pL/2TQRVgPfAcfOGCLlSP1LIh4r95mFC+UoXQEEHo=";
   };
 
+  patches = [
+    # Fix gnome-builder build
+    # https://gitlab.gnome.org/GNOME/gi-docgen/-/merge_requests/161
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/gi-docgen/-/commit/0524047ada3e6a5572c43dd36201ebe589d08095.patch";
+      sha256 = "1P+i7v1sMULOd0w8K363Mssj+tBJ2wiSmE7DlztvCbw=";
+    })
+  ];
+
   depsBuildBuild = [
     python3
   ];
diff --git a/pkgs/development/tools/glade/default.nix b/pkgs/development/tools/glade/default.nix
index adec880eabe..b7803843c34 100644
--- a/pkgs/development/tools/glade/default.nix
+++ b/pkgs/development/tools/glade/default.nix
@@ -2,7 +2,6 @@
 , lib
 , gettext
 , fetchurl
-, fetchpatch
 , python3
 , meson
 , ninja
@@ -10,7 +9,7 @@
 , gtk3
 , glib
 , gjs
-, webkitgtk
+, webkitgtk_4_1
 , gobject-introspection
 , wrapGAppsHook
 , itstool
@@ -25,29 +24,13 @@
 
 stdenv.mkDerivation rec {
   pname = "glade";
-  version = "3.38.2";
+  version = "3.40.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/glade/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "1dxsiz9ahqkxg2a1dw9sbd8jg59y5pdz4c1gvnbmql48gmj8gz4q";
+    sha256 = "McmtrqhJlyq5UXtWThmsGZd8qXdYsQntwxZwCPU+PZw=";
   };
 
-  patches = [
-    # Fix build with meson 0.61
-    # data/meson.build:4:5: ERROR: Function does not take positional arguments.
-    # Taken from https://gitlab.gnome.org/GNOME/glade/-/merge_requests/117
-    (fetchpatch {
-      url = "https://gitlab.gnome.org/GNOME/glade/-/commit/61304b2e8bac8ded76643cb7c3e781f73881dd2b.patch";
-      sha256 = "9x6RK8Wgnm8bDxeBLV3PlUkUuH2706Ba9kwE5S87DgE=";
-    })
-    # help/meson.build:6:6: ERROR: Tried to create target "help-glade-da-update-po", but a target of that name already exists.
-    # Taken from https://gitlab.gnome.org/GNOME/glade/-/merge_requests/117
-    (fetchpatch {
-      url = "https://gitlab.gnome.org/GNOME/glade/-/commit/04ba6f969f716fbfe3c7feb7e4bab8678cc1e9eb.patch";
-      sha256 = "j3XfF7P6rndL+0PWqnp+QYph7Ba6bgcp4Pkikr2wuJA=";
-    })
-  ];
-
   nativeBuildInputs = [
     meson
     ninja
@@ -66,7 +49,7 @@ stdenv.mkDerivation rec {
     gtk3
     glib
     gjs
-    webkitgtk
+    webkitgtk_4_1
     libxml2
     python3
     python3.pkgs.pygobject3
@@ -75,6 +58,11 @@ stdenv.mkDerivation rec {
     gnome.adwaita-icon-theme
   ];
 
+  postPatch = ''
+    substituteInPlace meson.build \
+      --replace 'webkit2gtk-4.0' 'webkit2gtk-4.1'
+  '';
+
   passthru = {
     updateScript = gnome.updateScript {
       packageName = pname;
diff --git a/pkgs/development/tools/misc/d-spy/default.nix b/pkgs/development/tools/misc/d-spy/default.nix
index a4a49172c23..43be248244d 100644
--- a/pkgs/development/tools/misc/d-spy/default.nix
+++ b/pkgs/development/tools/misc/d-spy/default.nix
@@ -15,13 +15,13 @@
 
 stdenv.mkDerivation rec {
   pname = "d-spy";
-  version = "1.2.1";
+  version = "1.4.0";
 
   outputs = [ "out" "lib" "dev" ];
 
   src = fetchurl {
-    url = "mirror://gnome/sources/dspy/${lib.versions.majorMinor version}/dspy-${version}.tar.xz";
-    sha256 = "TjnA1to687eJASJd0VEjOFe+Ihtfs62CwdsVhyNrZlI=";
+    url = "mirror://gnome/sources/d-spy/${lib.versions.majorMinor version}/d-spy-${version}.tar.xz";
+    sha256 = "6uh0jOpiTFxMdeAhwt8dc3bk+fj76JrEQ0kR7PeIZ3I=";
   };
 
   nativeBuildInputs = [
@@ -42,8 +42,7 @@ stdenv.mkDerivation rec {
 
   passthru = {
     updateScript = gnome.updateScript {
-      packageName = "dspy";
-      attrPath = "d-spy";
+      packageName = "d-spy";
     };
   };
 
diff --git a/pkgs/development/tools/profiling/sysprof/capture.nix b/pkgs/development/tools/profiling/sysprof/capture.nix
index e6690fc0c68..4057db6b74f 100644
--- a/pkgs/development/tools/profiling/sysprof/capture.nix
+++ b/pkgs/development/tools/profiling/sysprof/capture.nix
@@ -15,13 +15,15 @@ stdenv.mkDerivation rec {
   ];
 
   mesonFlags = [
-    "-Dwith_sysprofd=none"
+    "-Dagent=false"
+    "-Dsysprofd=none"
+    "-Dgtk=false"
     "-Dlibsysprof=false"
     "-Dlibunwind=false"
     "-Dhelp=false"
-    "-Denable_tools=false"
-    "-Denable_tests=false"
-    "-Denable_examples=false"
+    "-Dtools=false"
+    "-Dtests=false"
+    "-Dexamples=false"
   ];
 
   meta = sysprof.meta // {
diff --git a/pkgs/development/tools/profiling/sysprof/default.nix b/pkgs/development/tools/profiling/sysprof/default.nix
index 118b55197da..fed8af725fb 100644
--- a/pkgs/development/tools/profiling/sysprof/default.nix
+++ b/pkgs/development/tools/profiling/sysprof/default.nix
@@ -4,10 +4,10 @@
 , fetchurl
 , gettext
 , glib
-, gtk3
+, gtk4
 , json-glib
 , itstool
-, libdazzle
+, libadwaita
 , libunwind
 , libxml2
 , meson
@@ -17,19 +17,19 @@
 , polkit
 , shared-mime-info
 , systemd
-, wrapGAppsHook
+, wrapGAppsHook4
 , gnome
 }:
 
 stdenv.mkDerivation rec {
   pname = "sysprof";
-  version = "3.44.0";
+  version = "3.46.0";
 
   outputs = [ "out" "lib" "dev" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "q12fW3GXOzCI1Yob/fHcI8OaAvX85OXpxz4DSxeLAFs=";
+    sha256 = "PkMNV4FQqN0LB1sX0vzBunBNQogCYvDMZR8z5JO+QHE=";
   };
 
   nativeBuildInputs = [
@@ -41,23 +41,24 @@ stdenv.mkDerivation rec {
     ninja
     pkg-config
     shared-mime-info
-    wrapGAppsHook
-    gnome.adwaita-icon-theme
-    glib
+    wrapGAppsHook4
   ];
 
   buildInputs = [
-    gtk3
+    glib
+    gtk4
     json-glib
     pango
     polkit
     systemd
-    libdazzle
+    libadwaita
     libunwind
   ];
 
   mesonFlags = [
     "-Dsystemdunitdir=lib/systemd/system"
+    # In a separate libsysprof-capture package
+    "-Dinstall-static=false"
   ];
 
   passthru = {
diff --git a/pkgs/development/tools/vala-language-server/default.nix b/pkgs/development/tools/vala-language-server/default.nix
index 87f7ce588f8..52e33fee6b6 100644
--- a/pkgs/development/tools/vala-language-server/default.nix
+++ b/pkgs/development/tools/vala-language-server/default.nix
@@ -1,5 +1,7 @@
-{ lib, stdenv
+{ stdenv
+, lib
 , fetchFromGitHub
+, fetchpatch
 , nix-update-script
 , meson
 , ninja
@@ -24,6 +26,15 @@ stdenv.mkDerivation rec {
     sha256 = "sha256-gntGnz8uqGz2EGwWWyty/N1ImaUKAPtXVZcjgp73SQM=";
   };
 
+  patches = [
+    # Fix regex for links in comments
+    # https://github.com/vala-lang/vala-language-server/pull/268
+    (fetchpatch {
+      url = "https://github.com/vala-lang/vala-language-server/commit/b6193265d68b90755d57938c2ba1895841cf4b36.patch";
+      sha256 = "sha256-nWG+xQAPDVBXamuKQymvn/FBHEP7Ta9p/vhYjxxBGzI=";
+    })
+  ];
+
   passthru = {
     updateScript = nix-update-script {
       attrPath = pname;
diff --git a/pkgs/development/web/valum/default.nix b/pkgs/development/web/valum/default.nix
index a11e0f4cb97..caf29a2cc02 100644
--- a/pkgs/development/web/valum/default.nix
+++ b/pkgs/development/web/valum/default.nix
@@ -21,5 +21,8 @@ stdenv.mkDerivation rec {
     license = licenses.lgpl3;
     platforms = platforms.linux;
     maintainers = [ ];
+    # Likely broken by GLib 2.74 switch to PCRE 2.
+    # https://github.com/valum-framework/valum/issues/238
+    broken = true;
   };
 }
diff --git a/pkgs/os-specific/linux/bolt/default.nix b/pkgs/os-specific/linux/bolt/default.nix
index 2545c73ac58..07214f48276 100644
--- a/pkgs/os-specific/linux/bolt/default.nix
+++ b/pkgs/os-specific/linux/bolt/default.nix
@@ -65,7 +65,8 @@ stdenv.mkDerivation rec {
     systemd
   ];
 
-  doCheck = true;
+  # https://gitlab.freedesktop.org/bolt/bolt/-/issues/181
+  doCheck = false;
 
   preCheck = ''
     export LD_LIBRARY_PATH=${umockdev.out}/lib/
diff --git a/pkgs/os-specific/linux/gtkgreet/default.nix b/pkgs/os-specific/linux/gtkgreet/default.nix
index 7ab7c01475b..e0ebbb3bc4c 100644
--- a/pkgs/os-specific/linux/gtkgreet/default.nix
+++ b/pkgs/os-specific/linux/gtkgreet/default.nix
@@ -40,6 +40,9 @@ stdenv.mkDerivation rec {
     "-Dlayershell=enabled"
   ];
 
+  # G_APPLICATION_FLAGS_NONE is deprecated in GLib 2.73.3+.
+  NIX_CFLAGS_COMPILE = "-Wno-error=deprecated-declarations";
+
   meta = with lib; {
     description = "GTK based greeter for greetd, to be run under cage or similar";
     homepage = "https://git.sr.ht/~kennylevinsen/gtkgreet";
diff --git a/pkgs/tools/filesystems/eiciel/default.nix b/pkgs/tools/filesystems/eiciel/default.nix
index 1e676dea77c..bfec1dcf099 100644
--- a/pkgs/tools/filesystems/eiciel/default.nix
+++ b/pkgs/tools/filesystems/eiciel/default.nix
@@ -3,16 +3,19 @@
 , stdenv
 , acl
 , gnome
-, gtkmm3
+, glibmm_2_68
+, gtkmm4
 , meson
 , ninja
 , pkg-config
-, wrapGAppsHook
+, itstool
+, wrapGAppsHook4
+, gtk4
 }:
 
 stdenv.mkDerivation rec {
   pname = "eiciel";
-  version = "0.9.13.1";
+  version = "0.10.0-rc2";
 
   outputs = [ "out" "nautilusExtension" ];
 
@@ -20,30 +23,32 @@ stdenv.mkDerivation rec {
     owner = "rofirrim";
     repo = "eiciel";
     rev = version;
-    sha256 = "0rhhw0h1hyg5kvxhjxkdz03vylgax6912mg8j4lvcz6wlsa4wkvj";
+    sha256 = "+MXoT6J4tKuFaSvUTcM15cKWLUnS0kYgBfqH+5lz6KY=";
   };
 
   nativeBuildInputs = [
     meson
     ninja
     pkg-config
-    wrapGAppsHook
+    itstool
+    wrapGAppsHook4
+    gtk4
   ];
 
   buildInputs = [
     acl
-    gtkmm3
+    glibmm_2_68
+    gtkmm4
     gnome.nautilus
   ];
 
   mesonFlags = [
-    "-Dnautilus-extension-dir=${placeholder "nautilusExtension"}/lib/nautilus/extensions-3.0"
+    "-Dnautilus-extension-dir=${placeholder "nautilusExtension"}/lib/nautilus/extensions-4"
   ];
 
   postPatch = ''
+    # https://github.com/rofirrim/eiciel/pull/9
     substituteInPlace meson.build --replace "compiler.find_library('libacl')" "compiler.find_library('acl')"
-    chmod +x img/install_icons.sh
-    patchShebangs img/install_icons.sh
   '';
 
   meta = with lib; {
diff --git a/pkgs/tools/misc/ostree/default.nix b/pkgs/tools/misc/ostree/default.nix
index 06176efb01e..42f44c356e8 100644
--- a/pkgs/tools/misc/ostree/default.nix
+++ b/pkgs/tools/misc/ostree/default.nix
@@ -8,6 +8,7 @@
 , gobject-introspection
 , gjs
 , nixosTests
+, curl
 , glib
 , systemd
 , xz
@@ -85,6 +86,7 @@ in stdenv.mkDerivation rec {
   ];
 
   buildInputs = [
+    curl
     glib
     systemd
     e2fsprogs
@@ -108,6 +110,7 @@ in stdenv.mkDerivation rec {
   enableParallelBuilding = true;
 
   configureFlags = [
+    "--with-curl"
     "--with-systemdsystemunitdir=${placeholder "out"}/lib/systemd/system"
     "--with-systemdsystemgeneratordir=${placeholder "out"}/lib/systemd/system-generators"
     "--enable-installed-tests"
diff --git a/pkgs/tools/networking/modemmanager/default.nix b/pkgs/tools/networking/modemmanager/default.nix
index 76459d6d82d..4561661df5a 100644
--- a/pkgs/tools/networking/modemmanager/default.nix
+++ b/pkgs/tools/networking/modemmanager/default.nix
@@ -1,4 +1,5 @@
 { lib, stdenv, fetchurl
+, fetchpatch
 , glib, udev, libgudev, polkit, ppp, gettext, pkg-config, python3
 , libmbim, libqmi, systemd, vala, gobject-introspection, dbus
 }:
@@ -12,6 +13,19 @@ stdenv.mkDerivation rec {
     sha256 = "sha256-FiVfginu6y3+y43RNwNg1G8QFeyF5vulwcvZ9DcdZes=";
   };
 
+  patches = [
+    # Fix tests with GLib 2.73.2
+    # https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/601
+    (fetchpatch {
+      url = "https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/commit/79a5a4eed2189ea87d25cbe00bc824a2572cad66.patch";
+      sha256 = "egGXkCzAMyqPjeO6ro23sdTddTDEGJUkV7rH8sSlSGE=";
+    })
+    (fetchpatch {
+      url = "https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/commit/51a333cd9a6707de7c623fd4c94cb6032477572f.patch";
+      sha256 = "1XyJ0GBmpBRwnsKPI4i/EBrF7W08HelL/PMDwmlQWcw=";
+    })
+  ];
+
   nativeBuildInputs = [ vala gobject-introspection gettext pkg-config ];
 
   buildInputs = [ glib udev libgudev polkit ppp libmbim libqmi systemd ];
diff --git a/pkgs/tools/networking/networkmanager/libnma/default.nix b/pkgs/tools/networking/networkmanager/libnma/default.nix
index 00e68176c10..5db28c427d1 100644
--- a/pkgs/tools/networking/networkmanager/libnma/default.nix
+++ b/pkgs/tools/networking/networkmanager/libnma/default.nix
@@ -27,13 +27,13 @@
 
 stdenv.mkDerivation rec {
   pname = "libnma";
-  version = "1.8.40";
+  version = "1.10.2";
 
   outputs = [ "out" "dev" "devdoc" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "hwp1+NRkHtDZD4Nq6m/1ESJL3pf/1W1git4um1rLKyI=";
+    sha256 = "T8PZxAS3sTMD2TlPlpYcUpjXGvqfH6evXk8PboQqCUA=";
   };
 
   patches = [
diff --git a/pkgs/tools/networking/networkmanager/sstp/default.nix b/pkgs/tools/networking/networkmanager/sstp/default.nix
index 93fd87b005b..6b05dcdcd85 100644
--- a/pkgs/tools/networking/networkmanager/sstp/default.nix
+++ b/pkgs/tools/networking/networkmanager/sstp/default.nix
@@ -6,7 +6,7 @@
 , gnome
 , gtk3
 , gtk4
-, intltool
+, gettext
 , libnma
 , libnma-gtk4
 , libsecret
@@ -19,17 +19,17 @@
 
 stdenv.mkDerivation rec {
   pname = "NetworkManager-sstp";
-  version = "1.3.0";
+  version = "1.3.1";
   name = "${pname}${if withGnome then "-gnome" else ""}-${version}";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "+IJw3jvOYs/+NDS9HvCrSQ6wxh1x1yqwiFij7UZb+rU=";
+    sha256 = "fQMSawiaCk/2ZeMHVVcM7PaFEKbP7bUS9Lh+htrGHX0=";
   };
 
   nativeBuildInputs = [
     file
-    intltool
+    gettext
     pkg-config
   ];
 
diff --git a/pkgs/tools/networking/phodav/2.0.nix b/pkgs/tools/networking/phodav/2.0.nix
new file mode 100644
index 00000000000..fa809d05959
--- /dev/null
+++ b/pkgs/tools/networking/phodav/2.0.nix
@@ -0,0 +1,59 @@
+{ lib
+, stdenv
+, fetchurl
+, fetchpatch
+, pkg-config
+, libsoup
+, meson
+, ninja
+}:
+
+stdenv.mkDerivation rec {
+  pname = "phodav";
+  version = "2.5";
+
+  outputs = [ "out" "dev" "lib" ];
+
+  src = fetchurl {
+    url = "http://ftp.gnome.org/pub/GNOME/sources/phodav/${version}/${pname}-${version}.tar.xz";
+    sha256 = "045rdzf8isqmzix12lkz6z073b5qvcqq6ad028advm5gf36skw3i";
+  };
+
+  patches = [
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/phodav/-/commit/ae9ac98c1b3db26070111661aba02594c62d2cef.patch";
+      sha256 = "sha256-jIHG6aRqG00Q6aIQsn4tyQdy/b6juW6QiUPXLmIc3TE=";
+    })
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/phodav/-/commit/560ab5ca4f836d82bddbbe66ea0f7c6b4cab6b3b.patch";
+      sha256 = "sha256-2gP579qhEkp7fQ8DBGYbZcjb2Tr+WpJs30Z7lsQaz2g=";
+    })
+  ];
+
+  mesonFlags = [
+    "-Davahi=disabled"
+    "-Dsystemd=disabled"
+    "-Dgtk_doc=disabled"
+    "-Dudev=disabled"
+  ];
+
+  NIX_LDFLAGS = lib.optionalString stdenv.isDarwin "-lintl";
+
+  nativeBuildInputs = [
+    pkg-config
+    meson
+    ninja
+  ];
+
+  buildInputs = [
+    libsoup
+  ];
+
+  meta = with lib; {
+    description = "WebDav server implementation and library using libsoup 2";
+    homepage = "https://wiki.gnome.org/phodav";
+    license = licenses.lgpl21Plus;
+    maintainers = with maintainers; [ wegank ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/tools/networking/phodav/default.nix b/pkgs/tools/networking/phodav/default.nix
index fb2fce8bdeb..7a3ce12b55f 100644
--- a/pkgs/tools/networking/phodav/default.nix
+++ b/pkgs/tools/networking/phodav/default.nix
@@ -1,48 +1,50 @@
-{ lib
-, stdenv
+{ stdenv
+, lib
 , fetchurl
-, fetchpatch
 , pkg-config
-, libsoup
+, libsoup_3
+, libxml2
 , meson
 , ninja
+, gnome
 }:
 
-let
-  version = "2.5";
-in
 stdenv.mkDerivation rec {
   pname = "phodav";
-  inherit version;
+  version = "3.0";
+
+  outputs = [ "out" "dev" "lib" ];
 
   src = fetchurl {
-    url = "http://ftp.gnome.org/pub/GNOME/sources/phodav/${version}/${pname}-${version}.tar.xz";
-    sha256 = "045rdzf8isqmzix12lkz6z073b5qvcqq6ad028advm5gf36skw3i";
+    url = "mirror://gnome/sources/phodav/${version}/phodav-${version}.tar.xz";
+    sha256 = "OS7C0G1QMA3P8e8mmiqYUwTim841IAAvyiny7cHRONE=";
   };
 
-  patches = [
-    (fetchpatch {
-      url = "https://gitlab.gnome.org/GNOME/phodav/-/commit/ae9ac98c1b3db26070111661aba02594c62d2cef.patch";
-      sha256 = "sha256-jIHG6aRqG00Q6aIQsn4tyQdy/b6juW6QiUPXLmIc3TE=";
-    })
-    (fetchpatch {
-      url = "https://gitlab.gnome.org/GNOME/phodav/-/commit/560ab5ca4f836d82bddbbe66ea0f7c6b4cab6b3b.patch";
-      sha256 = "sha256-2gP579qhEkp7fQ8DBGYbZcjb2Tr+WpJs30Z7lsQaz2g=";
-    })
+  nativeBuildInputs = [
+    pkg-config
+    meson
+    ninja
+  ];
+
+  buildInputs = [
+    libsoup_3
+    libxml2
   ];
 
   mesonFlags = [
     "-Davahi=disabled"
-    "-Dsystemd=disabled"
+    "-Dsystemdsystemunitdir=${placeholder "out"}/lib/systemd/system"
     "-Dgtk_doc=disabled"
-    "-Dudev=disabled"
+    "-Dudevrulesdir=${placeholder "out"}/lib/udev/rules.d"
   ];
 
   NIX_LDFLAGS = lib.optionalString stdenv.isDarwin "-lintl";
 
-  nativeBuildInputs = [ libsoup pkg-config meson ninja ];
-
-  outputs = [ "out" "dev" "lib" ];
+  passthru = {
+    updateScript = gnome.updateScript {
+      packageName = pname;
+    };
+  };
 
   # We need to do this in pre-configure before the data/ folder disappears.
   preConfigure = ''
@@ -52,7 +54,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     description = "WebDav server implementation and library using libsoup";
     homepage = "https://wiki.gnome.org/phodav";
-    license = licenses.lgpl21;
+    license = licenses.lgpl21Plus;
     maintainers = with maintainers; [ wegank ];
     platforms = platforms.unix;
   };
diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix
index 9a8e934cd8e..183d93114cf 100644
--- a/pkgs/top-level/aliases.nix
+++ b/pkgs/top-level/aliases.nix
@@ -153,6 +153,8 @@ mapAliases ({
   catfish = throw "'catfish' has been renamed to/replaced by 'xfce.catfish'"; # Converted to throw 2022-09-24
   cde-gtk-theme = throw "cde-gtk-theme has been removed from nixpkgs as it shipped with python2 scripts that didn't work anymore"; # Added 2022-01-12
   checkbashism = throw "'checkbashism' has been renamed to/replaced by 'checkbashisms'"; # Converted to throw 2022-02-22
+  chrome-gnome-shell = gnome-browser-connector; # Added 2022-07-27
+  chronos = throw "chronos has been removed from nixpkgs, as it was unmaintained"; # Added 2020-08-15
   chunkwm = throw "chunkwm has been removed: abandoned by upstream"; # Added 2022-01-07
   cifs_utils = throw "'cifs_utils' has been renamed to/replaced by 'cifs-utils'"; # Converted to throw 2022-02-22
   cipherscan = throw "cipherscan was removed from nixpkgs, as it was unmaintained"; # added 2021-12-11
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 342fd5b42ee..247919e6f40 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -1821,6 +1821,8 @@ with pkgs;
     inherit (darwin.apple_sdk.frameworks) AppKit CoreGraphics CoreServices CoreText Foundation OpenGL;
   };
 
+  blackbox-terminal = callPackage ../applications/terminal-emulators/blackbox-terminal { };
+
   contour = libsForQt5.callPackage ../applications/terminal-emulators/contour { fmt = fmt_8; };
 
   cool-retro-term = libsForQt5.callPackage ../applications/terminal-emulators/cool-retro-term { };
@@ -7432,6 +7434,8 @@ with pkgs;
 
   gssdp = callPackage ../development/libraries/gssdp { };
 
+  gssdp_1_6 = callPackage ../development/libraries/gssdp/1.6.nix { };
+
   gssdp-tools = callPackage ../development/libraries/gssdp/tools.nix { };
 
   grype = callPackage ../tools/security/grype { };
@@ -7464,6 +7468,8 @@ with pkgs;
 
   gupnp = callPackage ../development/libraries/gupnp { };
 
+  gupnp_1_6 = callPackage ../development/libraries/gupnp/1.6.nix { };
+
   gupnp-av = callPackage ../development/libraries/gupnp-av {};
 
   gupnp-dlna = callPackage ../development/libraries/gupnp-dlna {};
@@ -10164,6 +10170,8 @@ with pkgs;
 
   phodav = callPackage ../tools/networking/phodav { };
 
+  phodav_2_0 = callPackage ../tools/networking/phodav/2.0.nix { };
+
   photon-rss = callPackage ../applications/networking/feedreaders/photon { };
 
   pim6sd = callPackage ../servers/pim6sd { };
@@ -17858,7 +17866,8 @@ with pkgs;
 
   at-spi2-core = callPackage ../development/libraries/at-spi2-core { };
 
-  at-spi2-atk = callPackage ../development/libraries/at-spi2-atk { };
+  # Not moved to aliases while we decide if we should split the package again.
+  at-spi2-atk = at-spi2-core;
 
   aqbanking = callPackage ../development/libraries/aqbanking { };
 
@@ -18573,6 +18582,8 @@ with pkgs;
 
   gcr = callPackage ../development/libraries/gcr { };
 
+  gcr_4 = callPackage ../development/libraries/gcr/4.nix { };
+
   gdl = callPackage ../development/libraries/gdl { };
 
   gdome2 = callPackage ../development/libraries/gdome2 { };
@@ -18597,6 +18608,10 @@ with pkgs;
 
   geocode-glib = callPackage ../development/libraries/geocode-glib {};
 
+  geocode-glib_2 = geocode-glib.override {
+    libsoup = libsoup_3;
+  };
+
   geoipWithDatabase = makeOverridable (callPackage ../development/libraries/geoip) {
     drvName = "geoip-tools";
     geoipDatabase = geolite-legacy;
@@ -18970,7 +18985,8 @@ with pkgs;
 
   ace = callPackage ../development/libraries/ace { };
 
-  atk = callPackage ../development/libraries/atk { };
+  # Not moved to aliases while we decide if we should split the package again.
+  atk = at-spi2-core;
 
   atkmm = callPackage ../development/libraries/atkmm { };
 
@@ -19628,6 +19644,8 @@ with pkgs;
 
   libchamplain = callPackage ../development/libraries/libchamplain { };
 
+  libchamplain_libsoup3 = libchamplain.override { withLibsoup3 = true; };
+
   libchardet = callPackage ../development/libraries/libchardet { };
 
   libchewing = callPackage ../development/libraries/libchewing { };
@@ -20361,9 +20379,7 @@ with pkgs;
 
   libopusenc = callPackage ../development/libraries/libopusenc { };
 
-  libosinfo = callPackage ../development/libraries/libosinfo {
-    inherit (gnome) libsoup;
-  };
+  libosinfo = callPackage ../development/libraries/libosinfo { };
 
   libosip = callPackage ../development/libraries/osip {};
 
@@ -22112,6 +22128,8 @@ with pkgs;
 
   spice-gtk = callPackage ../development/libraries/spice-gtk { };
 
+  spice-gtk_libsoup2 = spice-gtk.override { withLibsoup2 = true; };
+
   spice-protocol = callPackage ../development/libraries/spice-protocol { };
 
   spice-up = callPackage ../applications/office/spice-up { };
@@ -22442,6 +22460,10 @@ with pkgs;
     stdenv = clangStdenv;
   };
 
+  vte-gtk4 = vte.override {
+    gtkVersion = "4";
+  };
+
   vte_290 = callPackage ../development/libraries/vte/2.90.nix { };
 
   vtk_8 = libsForQt515.callPackage ../development/libraries/vtk/8.x.nix {
@@ -27763,6 +27785,8 @@ with pkgs;
 
   inherit (gnome) empathy;
 
+  endeavour = callPackage ../applications/misc/endeavour { };
+
   enhanced-ctorrent = callPackage ../applications/networking/enhanced-ctorrent { };
 
   entangle = callPackage ../applications/video/entangle {
@@ -27867,6 +27891,7 @@ with pkgs;
 
   inherit (gnome) evince;
   evolution-data-server = gnome.evolution-data-server;
+  evolution-data-server-gtk4 = evolution-data-server.override { withGtk3 = false; withGtk4 = true; };
   evolution-ews = callPackage ../applications/networking/mailreaders/evolution/evolution-ews { };
   evolution = callPackage ../applications/networking/mailreaders/evolution/evolution { };
   evolutionWithPlugins = callPackage ../applications/networking/mailreaders/evolution/evolution/wrapper.nix { plugins = [ evolution evolution-ews ]; };
@@ -34602,7 +34627,7 @@ with pkgs;
 
   gnome-tour = callPackage ../desktops/gnome/core/gnome-tour { };
 
-  chrome-gnome-shell = callPackage ../desktops/gnome/extensions/chrome-gnome-shell { };
+  gnome-browser-connector = callPackage ../desktops/gnome/extensions/gnome-browser-connector { };
 
   gnome-2048 = callPackage ../desktops/gnome/games/gnome-2048 { };