about summary refs log tree commit diff
path: root/nixpkgs/pkgs/desktops/gnome/core
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/desktops/gnome/core')
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/adwaita-icon-theme/default.nix10
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/baobab/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/dconf-editor/default.nix19
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/dconf-editor/schema-override-variable.patch4
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/eog/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/epiphany/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/evince/default.nix6
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/evolution-data-server/default.nix18
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/evolution-data-server/drop-tentative-settings-constructor.patch40
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/evolution-data-server/hardcode-gsettings.patch99
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/gdm/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/gnome-backgrounds/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/gnome-bluetooth/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/gnome-calculator/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/gnome-contacts/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/gnome-control-center/default.nix34
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/gnome-control-center/paths.patch33
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/gnome-disk-utility/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/gnome-font-viewer/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/gnome-initial-setup/0001-fix-paths.patch17
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/gnome-initial-setup/default.nix11
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/gnome-remote-desktop/default.nix32
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/gnome-session/default.nix11
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/gnome-settings-daemon/add-gnome-session-ctl-option.patch58
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/gnome-settings-daemon/default.nix15
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/gnome-shell-extensions/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/gnome-shell-extensions/fix_gmenu.patch27
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/gnome-shell/default.nix21
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/gnome-shell/fix-paths.patch4
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/gnome-shell/greeter-logo-size.patch21
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/gnome-shell/wrap-services.patch12
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/gnome-software/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/gnome-system-monitor/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/gnome-terminal/default.nix6
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/gnome-tour/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/gucharmap/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/mutter/43/default.nix16
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/mutter/default.nix10
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/nautilus/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/sushi/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/zenity/default.nix6
41 files changed, 393 insertions, 205 deletions
diff --git a/nixpkgs/pkgs/desktops/gnome/core/adwaita-icon-theme/default.nix b/nixpkgs/pkgs/desktops/gnome/core/adwaita-icon-theme/default.nix
index addf2f1f92ba..5d287f4e6fd9 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/adwaita-icon-theme/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome/core/adwaita-icon-theme/default.nix
@@ -1,8 +1,9 @@
 { lib
 , stdenv
 , fetchurl
+, meson
+, ninja
 , pkg-config
-, autoreconfHook
 , gnome
 , gtk3
 , gdk-pixbuf
@@ -12,16 +13,17 @@
 
 stdenv.mkDerivation rec {
   pname = "adwaita-icon-theme";
-  version = "44.0";
+  version = "45.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/adwaita-icon-theme/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "SInFYBu/7NJdgLo0IgnQqTbc9pHuVr1uykzeNh8aZkw=";
+    sha256 = "JEK/sG9ObMlb9uJoL9/5j6Xt3GiHUbnWIVxiPLTkL/E=";
   };
 
   nativeBuildInputs = [
+    meson
+    ninja
     pkg-config
-    autoreconfHook
     gtk3
   ];
 
diff --git a/nixpkgs/pkgs/desktops/gnome/core/baobab/default.nix b/nixpkgs/pkgs/desktops/gnome/core/baobab/default.nix
index d27c4947c33b..e813f5f591ab 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/baobab/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome/core/baobab/default.nix
@@ -18,11 +18,11 @@
 
 stdenv.mkDerivation rec {
   pname = "baobab";
-  version = "44.0";
+  version = "45.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "hFtju5Ej10VoyBJsVxu8dCc0g/+SAXmizx7du++hv8A=";
+    sha256 = "p9LPMIpsg57gsL8HT49f1g1iri8GSpSzxhDWVgt1joY=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/desktops/gnome/core/dconf-editor/default.nix b/nixpkgs/pkgs/desktops/gnome/core/dconf-editor/default.nix
index d6da42ab5508..4da661748c95 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/dconf-editor/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome/core/dconf-editor/default.nix
@@ -2,6 +2,7 @@
 , stdenv
 , fetchurl
 , fetchpatch
+, desktop-file-utils
 , meson
 , ninja
 , vala
@@ -11,7 +12,6 @@
 , gtk3
 , libhandy
 , gnome
-, python3
 , dconf
 , libxml2
 , gettext
@@ -22,20 +22,27 @@
 
 stdenv.mkDerivation rec {
   pname = "dconf-editor";
-  version = "43.0";
+  version = "45.0.1";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "sha256-k1o8Lddswqk81a7ppU05R/sRHrOW9LY9xfC6j40JkTY=";
+    sha256 = "sha256-EYApdnju2uYhfMUUomOMGH0vHR7ycgy5B5t0DEKZQd0=";
   };
 
   patches = [
+    # Fix crash with GSETTINGS_SCHEMA_DIR env var.
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/dconf-editor/-/commit/baf183737d459dcde065c9f8f6fe5be7ed874de6.patch";
+      hash = "sha256-Vp0qjJChDr6IarUD+tZPLJhdI8v8r6EzWNfqFSnGvqQ=";
+    })
+
     # Look for compiled schemas in NIX_GSETTINGS_OVERRIDES_DIR
     # environment variable, to match what we patched GLib to do.
     ./schema-override-variable.patch
   ];
 
   nativeBuildInputs = [
+    desktop-file-utils
     meson
     ninja
     vala
@@ -46,7 +53,6 @@ stdenv.mkDerivation rec {
     docbook-xsl-nons
     libxml2
     gobject-introspection
-    python3
   ];
 
   buildInputs = [
@@ -56,11 +62,6 @@ stdenv.mkDerivation rec {
     dconf
   ];
 
-  postPatch = ''
-    chmod +x meson_post_install.py
-    patchShebangs meson_post_install.py
-  '';
-
   passthru = {
     updateScript = gnome.updateScript {
       packageName = pname;
diff --git a/nixpkgs/pkgs/desktops/gnome/core/dconf-editor/schema-override-variable.patch b/nixpkgs/pkgs/desktops/gnome/core/dconf-editor/schema-override-variable.patch
index feaa604e5b67..06896d1aa4ee 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/dconf-editor/schema-override-variable.patch
+++ b/nixpkgs/pkgs/desktops/gnome/core/dconf-editor/schema-override-variable.patch
@@ -10,5 +10,5 @@ index 27b2b17a..87f7ba86 100644
 +        if (nix_var_schema_dir != null)
 +            source = try_prepend_dir (source, (!) nix_var_schema_dir);
          string? var_schema_dir = GLib.Environment.get_variable ("GSETTINGS_SCHEMA_DIR");
-         if (var_schema_dir != null)
-             source = try_prepend_dir (source, (!) var_schema_dir);
+         if (var_schema_dir != null) {
+             string[] extra_schema_dirs = ((!) var_schema_dir).split (Path.SEARCHPATH_SEPARATOR_S);
diff --git a/nixpkgs/pkgs/desktops/gnome/core/eog/default.nix b/nixpkgs/pkgs/desktops/gnome/core/eog/default.nix
index d52dd04a4a19..1641fa5bbf60 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/eog/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome/core/eog/default.nix
@@ -31,13 +31,13 @@
 
 stdenv.mkDerivation rec {
   pname = "eog";
-  version = "44.3";
+  version = "45.1";
 
   outputs = [ "out" "dev" "devdoc" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "sha256-1rLXD0tDL/jPSUyPkCmyYh0I54F5ODF9ZAY65sTanYw=";
+    sha256 = "sha256-wX+GcExyKzbAGhaPHlFDm+C7J58sZkb0i2bp0POiTNI=";
   };
 
   patches = [
diff --git a/nixpkgs/pkgs/desktops/gnome/core/epiphany/default.nix b/nixpkgs/pkgs/desktops/gnome/core/epiphany/default.nix
index 8e396cc3f95d..900b02bc3df6 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/epiphany/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome/core/epiphany/default.nix
@@ -36,11 +36,11 @@
 
 stdenv.mkDerivation rec {
   pname = "epiphany";
-  version = "44.6";
+  version = "45.1";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "UzXdVzWB22HhJthU3BauUZZXpbh5B4mkfSXkPhfNOkM=";
+    sha256 = "fJlO807NYOkV3jMe4SPAiTj5YjzvrabVC5njycWtgTU=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/desktops/gnome/core/evince/default.nix b/nixpkgs/pkgs/desktops/gnome/core/evince/default.nix
index 8312a4ca1726..a2959626c837 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/evince/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome/core/evince/default.nix
@@ -28,7 +28,6 @@
 , gobject-introspection
 , yelp-tools
 , gspell
-, adwaita-icon-theme
 , gsettings-desktop-schemas
 , gnome-desktop
 , dbus
@@ -43,13 +42,13 @@
 
 stdenv.mkDerivation rec {
   pname = "evince";
-  version = "44.3";
+  version = "45.0";
 
   outputs = [ "out" "dev" "devdoc" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/evince/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "O4uhWBpHpun1f2tqoI8PtnVJxgEhqiTjEUDpOUe4NiI=";
+    sha256 = "0YZH1Cdcvd8NMoF7HQTjBzQqhb6RTsTa0tgIKq+KpKg=";
   };
 
   depsBuildBuild = [
@@ -71,7 +70,6 @@ stdenv.mkDerivation rec {
   ];
 
   buildInputs = [
-    adwaita-icon-theme
     atk
     dbus # only needed to find the service directory
     djvulibre
diff --git a/nixpkgs/pkgs/desktops/gnome/core/evolution-data-server/default.nix b/nixpkgs/pkgs/desktops/gnome/core/evolution-data-server/default.nix
index a604efb9cc59..f372f688eabc 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/evolution-data-server/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome/core/evolution-data-server/default.nix
@@ -23,6 +23,7 @@
 , gperf
 , wrapGAppsHook
 , glib-networking
+, gsettings-desktop-schemas
 , pcre
 , vala
 , cmake
@@ -50,13 +51,13 @@
 
 stdenv.mkDerivation rec {
   pname = "evolution-data-server";
-  version = "3.48.4";
+  version = "3.50.1";
 
   outputs = [ "out" "dev" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/evolution-data-server/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "mX4/k7F++wr/zAF77oeAul+iwAnjZVG7yRoIrlUtbWA=";
+    sha256 = "kfT/w4objS/ok5g0RJrFQcC/9KObRE7cKpUpNEoo6Yo=";
   };
 
   patches = [
@@ -64,11 +65,16 @@ stdenv.mkDerivation rec {
       src = ./fix-paths.patch;
       inherit tzdata;
     })
+
+    # Avoid using wrapper function, which the hardcode gsettings
+    # patch generator cannot handle.
+    ./drop-tentative-settings-constructor.patch
   ];
 
   prePatch = ''
     substitute ${./hardcode-gsettings.patch} hardcode-gsettings.patch \
-      --subst-var-by EDS ${glib.makeSchemaPath "$out" "${pname}-${version}"}
+      --subst-var-by EDS ${glib.makeSchemaPath "$out" "${pname}-${version}"} \
+      --subst-var-by GDS ${glib.getSchemaPath gsettings-desktop-schemas}
     patches="$patches $PWD/hardcode-gsettings.patch"
   '';
 
@@ -86,6 +92,7 @@ stdenv.mkDerivation rec {
 
   buildInputs = [
     glib
+    libsecret
     libsoup_3
     gnome-online-accounts
     p11-kit
@@ -116,7 +123,6 @@ stdenv.mkDerivation rec {
 
   propagatedBuildInputs = [
     db
-    libsecret
     nss
     nspr
     libical
@@ -158,9 +164,9 @@ stdenv.mkDerivation rec {
         "org.gnome.evolution-data-server.addressbook" = "EDS";
         "org.gnome.evolution-data-server.calendar" = "EDS";
         "org.gnome.evolution-data-server" = "EDS";
-
+        "org.gnome.desktop.interface" = "GDS";
       };
-      inherit src;
+      inherit src patches;
     };
     updateScript =
       let
diff --git a/nixpkgs/pkgs/desktops/gnome/core/evolution-data-server/drop-tentative-settings-constructor.patch b/nixpkgs/pkgs/desktops/gnome/core/evolution-data-server/drop-tentative-settings-constructor.patch
new file mode 100644
index 000000000000..a86d1966eb6b
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome/core/evolution-data-server/drop-tentative-settings-constructor.patch
@@ -0,0 +1,40 @@
+diff --git a/src/calendar/libecal/e-reminder-watcher.c b/src/calendar/libecal/e-reminder-watcher.c
+index f1614f2..c01e8b2 100644
+--- a/src/calendar/libecal/e-reminder-watcher.c
++++ b/src/calendar/libecal/e-reminder-watcher.c
+@@ -2609,26 +2609,6 @@ e_reminder_watcher_load_clock_format (EReminderWatcher *watcher)
+ 	g_free (clock_format);
+ }
+ 
+-static GSettings*
+-e_reminder_watcher_load_settings_tentative (const gchar *schema_id)
+-{
+-	GSettings *settings;
+-	GSettingsSchemaSource *schema_source;
+-	GSettingsSchema *schema;
+-
+-	schema_source = g_settings_schema_source_get_default ();
+-	schema = g_settings_schema_source_lookup (schema_source, schema_id, TRUE);
+-
+-	if (schema == NULL) {
+-		return NULL;
+-	}
+-
+-	settings = g_settings_new (schema_id);
+-	/* only unref after g_settings_new() to avoid needless realloc */
+-	g_settings_schema_unref (schema);
+-	return settings;
+-}
+-
+ static void
+ e_reminder_watcher_init (EReminderWatcher *watcher)
+ {
+@@ -2647,7 +2627,7 @@ e_reminder_watcher_init (EReminderWatcher *watcher)
+ 	watcher->priv = e_reminder_watcher_get_instance_private (watcher);
+ 	watcher->priv->cancellable = g_cancellable_new ();
+ 	watcher->priv->settings = g_settings_new ("org.gnome.evolution-data-server.calendar");
+-	watcher->priv->desktop_settings = e_reminder_watcher_load_settings_tentative ("org.gnome.desktop.interface");
++	watcher->priv->desktop_settings = g_settings_new ("org.gnome.desktop.interface");
+ 	if (watcher->priv->desktop_settings) {
+ 		g_signal_connect_object (
+ 			watcher->priv->desktop_settings,
diff --git a/nixpkgs/pkgs/desktops/gnome/core/evolution-data-server/hardcode-gsettings.patch b/nixpkgs/pkgs/desktops/gnome/core/evolution-data-server/hardcode-gsettings.patch
index 15a42fe4e2a6..4857efc4c230 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/evolution-data-server/hardcode-gsettings.patch
+++ b/nixpkgs/pkgs/desktops/gnome/core/evolution-data-server/hardcode-gsettings.patch
@@ -128,10 +128,10 @@ index e85a56b..59d3fe2 100644
  	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 4aaabee..dd6ce6d 100644
+index 63e1016..0492756 100644
 --- a/src/addressbook/libedata-book/e-book-meta-backend.c
 +++ b/src/addressbook/libedata-book/e-book-meta-backend.c
-@@ -143,7 +143,18 @@ ebmb_is_power_saver_enabled (void)
+@@ -144,7 +144,18 @@ ebmb_is_power_saver_enabled (void)
  	GSettings *settings;
  	gboolean enabled = FALSE;
  
@@ -175,15 +175,42 @@ index 42f3457..b4926af 100644
  	cbc->priv->notifyid = 0;
  	cbc->priv->update_alarms_id = 0;
  	cbc->priv->alarm_enabled = FALSE;
+diff --git a/src/calendar/backends/file/e-cal-backend-file.c b/src/calendar/backends/file/e-cal-backend-file.c
+index 2525856..7ecc1a8 100644
+--- a/src/calendar/backends/file/e-cal-backend-file.c
++++ b/src/calendar/backends/file/e-cal-backend-file.c
+@@ -3682,7 +3682,20 @@ e_cal_backend_file_receive_objects (ECalBackendSync *backend,
+ 			if (is_declined) {
+ 				GSettings *settings;
+ 
+-				settings = g_settings_new ("org.gnome.evolution-data-server.calendar");
++				{
++					g_autoptr(GSettingsSchemaSource) schema_source;
++					g_autoptr(GSettingsSchema) schema;
++					schema_source = g_settings_schema_source_new_from_directory("@EDS@",
++												    g_settings_schema_source_get_default(),
++												    TRUE,
++												    NULL);
++					schema = g_settings_schema_source_lookup(schema_source,
++										 "org.gnome.evolution-data-server.calendar",
++										 FALSE);
++					settings = g_settings_new_full(schema,
++								       NULL,
++								       NULL);
++				}
+ 				can_delete = g_settings_get_boolean (settings, "delete-meeting-on-decline");
+ 				g_clear_object (&settings);
+ 			}
 diff --git a/src/calendar/libecal/e-reminder-watcher.c b/src/calendar/libecal/e-reminder-watcher.c
-index 5087de1..5c24b87 100644
+index c01e8b2..59fb4c4 100644
 --- a/src/calendar/libecal/e-reminder-watcher.c
 +++ b/src/calendar/libecal/e-reminder-watcher.c
-@@ -2578,7 +2578,19 @@ e_reminder_watcher_init (EReminderWatcher *watcher)
+@@ -2626,8 +2626,33 @@ e_reminder_watcher_init (EReminderWatcher *watcher)
  
  	watcher->priv = e_reminder_watcher_get_instance_private (watcher);
  	watcher->priv->cancellable = g_cancellable_new ();
 -	watcher->priv->settings = g_settings_new ("org.gnome.evolution-data-server.calendar");
+-	watcher->priv->desktop_settings = g_settings_new ("org.gnome.desktop.interface");
 +	{
 +		g_autoptr(GSettingsSchemaSource) schema_source;
 +		g_autoptr(GSettingsSchema) schema;
@@ -197,11 +224,25 @@ index 5087de1..5c24b87 100644
 +		watcher->priv->settings = g_settings_new_full(schema, NULL,
 +							      NULL);
 +	}
- 	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;
++	{
++		g_autoptr(GSettingsSchemaSource) schema_source;
++		g_autoptr(GSettingsSchema) schema;
++		schema_source = g_settings_schema_source_new_from_directory("@GDS@",
++									    g_settings_schema_source_get_default(),
++									    TRUE,
++									    NULL);
++		schema = g_settings_schema_source_lookup(schema_source,
++							 "org.gnome.desktop.interface",
++							 FALSE);
++		watcher->priv->desktop_settings = g_settings_new_full(schema,
++								      NULL,
++								      NULL);
++	}
+ 	if (watcher->priv->desktop_settings) {
+ 		g_signal_connect_object (
+ 			watcher->priv->desktop_settings,
 diff --git a/src/calendar/libedata-cal/e-cal-meta-backend.c b/src/calendar/libedata-cal/e-cal-meta-backend.c
-index cd91f07..79ede04 100644
+index 27fa153..3679d72 100644
 --- a/src/calendar/libedata-cal/e-cal-meta-backend.c
 +++ b/src/calendar/libedata-cal/e-cal-meta-backend.c
 @@ -156,7 +156,18 @@ ecmb_is_power_saver_enabled (void)
@@ -224,11 +265,33 @@ index cd91f07..79ede04 100644
  
  	if (g_settings_get_boolean (settings, "limit-operations-in-power-saver-mode")) {
  		GPowerProfileMonitor *power_monitor;
+@@ -2633,7 +2644,20 @@ ecmb_receive_object_sync (ECalMetaBackend *meta_backend,
+ 			if (is_declined) {
+ 				GSettings *settings;
+ 
+-				settings = g_settings_new ("org.gnome.evolution-data-server.calendar");
++				{
++					g_autoptr(GSettingsSchemaSource) schema_source;
++					g_autoptr(GSettingsSchema) schema;
++					schema_source = g_settings_schema_source_new_from_directory("@EDS@",
++												    g_settings_schema_source_get_default(),
++												    TRUE,
++												    NULL);
++					schema = g_settings_schema_source_lookup(schema_source,
++										 "org.gnome.evolution-data-server.calendar",
++										 FALSE);
++					settings = g_settings_new_full(schema,
++								       NULL,
++								       NULL);
++				}
+ 				is_declined = g_settings_get_boolean (settings, "delete-meeting-on-decline");
+ 				g_clear_object (&settings);
+ 			}
 diff --git a/src/camel/camel-cipher-context.c b/src/camel/camel-cipher-context.c
-index 8013ba7..1bba6d1 100644
+index bef9188..ce92f6c 100644
 --- a/src/camel/camel-cipher-context.c
 +++ b/src/camel/camel-cipher-context.c
-@@ -1625,7 +1625,18 @@ camel_cipher_can_load_photos (void)
+@@ -1631,7 +1631,18 @@ camel_cipher_can_load_photos (void)
  	GSettings *settings;
  	gboolean load_photos;
  
@@ -249,10 +312,10 @@ index 8013ba7..1bba6d1 100644
  	g_clear_object (&settings);
  
 diff --git a/src/camel/camel-gpg-context.c b/src/camel/camel-gpg-context.c
-index 205372e..f75a88e 100644
+index db5fc2e..162e00f 100644
 --- a/src/camel/camel-gpg-context.c
 +++ b/src/camel/camel-gpg-context.c
-@@ -582,7 +582,18 @@ gpg_ctx_get_executable_name (void)
+@@ -747,7 +747,18 @@ gpg_ctx_get_executable_name (void)
  		GSettings *settings;
  		gchar *path;
  
@@ -298,11 +361,11 @@ index e61160c..b6553a4 100644
  		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 78abb89..9f2a891 100644
+index ef34665..59f294b 100644
 --- a/src/camel/providers/imapx/camel-imapx-server.c
 +++ b/src/camel/providers/imapx/camel-imapx-server.c
-@@ -5591,7 +5591,18 @@ camel_imapx_server_skip_old_flags_update (CamelStore *store)
- 	if (!skip_old_flags_update) {
+@@ -5627,7 +5627,18 @@ camel_imapx_server_do_old_flags_update (CamelFolder *folder)
+ 	if (do_old_flags_update) {
  		GSettings *eds_settings;
  
 -		eds_settings = g_settings_new ("org.gnome.evolution-data-server");
@@ -322,10 +385,10 @@ index 78abb89..9f2a891 100644
  		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 effaf06..1b2a003 100644
+index 6556f1e..90f0a5e 100644
 --- a/src/camel/providers/smtp/camel-smtp-transport.c
 +++ b/src/camel/providers/smtp/camel-smtp-transport.c
-@@ -1462,7 +1462,18 @@ smtp_helo (CamelSmtpTransport *transport,
+@@ -1471,7 +1471,18 @@ smtp_helo (CamelSmtpTransport *transport,
  		transport->authtypes = NULL;
  	}
  
@@ -442,7 +505,7 @@ index 3bb1071..199e822 100644
  		g_object_unref (settings);
  
 diff --git a/src/libedataserver/e-oauth2-service.c b/src/libedataserver/e-oauth2-service.c
-index 7eca355..795d822 100644
+index 2364f3e..e8f59f2 100644
 --- a/src/libedataserver/e-oauth2-service.c
 +++ b/src/libedataserver/e-oauth2-service.c
 @@ -94,7 +94,18 @@ eos_default_guess_can_process (EOAuth2Service *service,
diff --git a/nixpkgs/pkgs/desktops/gnome/core/gdm/default.nix b/nixpkgs/pkgs/desktops/gnome/core/gdm/default.nix
index cfdde43ae776..f44278f896c3 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/gdm/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome/core/gdm/default.nix
@@ -43,13 +43,13 @@ in
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "gdm";
-  version = "44.1";
+  version = "45.0.1";
 
   outputs = [ "out" "dev" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/gdm/${lib.versions.major finalAttrs.version}/${finalAttrs.pname}-${finalAttrs.version}.tar.xz";
-    sha256 = "aCZrOr59KPxGnQBnqsnF2rsMp5UswffCOKBJUfPcWw0=";
+    sha256 = "ZXJXjAXjxladbtJp994qrzoDVldlRYbYJDkHu3pv+oU=";
   };
 
   mesonFlags = [
diff --git a/nixpkgs/pkgs/desktops/gnome/core/gnome-backgrounds/default.nix b/nixpkgs/pkgs/desktops/gnome/core/gnome-backgrounds/default.nix
index 3710866a41a8..808ff7c0c293 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/gnome-backgrounds/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome/core/gnome-backgrounds/default.nix
@@ -8,11 +8,11 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-backgrounds";
-  version = "44.0";
+  version = "45.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-backgrounds/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "SoOTs4cTXypqQkoaDDrJTgdCtiuCNaCSPJKfUeBL4E4=";
+    sha256 = "zuDmiPuuXvenXzNa2i0Qd54I68qURfFYbeMsWptt7i0=";
   };
 
   patches = [
diff --git a/nixpkgs/pkgs/desktops/gnome/core/gnome-bluetooth/default.nix b/nixpkgs/pkgs/desktops/gnome/core/gnome-bluetooth/default.nix
index 0e88bb20914e..7c80f475e564 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/gnome-bluetooth/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome/core/gnome-bluetooth/default.nix
@@ -27,14 +27,14 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-bluetooth";
-  version = "42.6";
+  version = "42.7";
 
   # 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 = "WGT+bx5xhxXbJrYiAbdaWQIM9CR/7DdkWzVZzS26WdA=";
+    sha256 = "lN8XKdvsO7EF5Yjq9TEru6oFxJ6nMyAqENw/dTK9+Gk=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/desktops/gnome/core/gnome-calculator/default.nix b/nixpkgs/pkgs/desktops/gnome/core/gnome-calculator/default.nix
index 6d3d4b394f5e..73863ccfaf33 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/gnome-calculator/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome/core/gnome-calculator/default.nix
@@ -25,11 +25,11 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-calculator";
-  version = "44.0";
+  version = "45.0.2";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-calculator/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "FOdjMp+IMJp+FSeA1XNhtUMQDjI5BrNOBlX9wxW3EEM=";
+    sha256 = "fcvzI4SJcXHL5Ug+xmTZlOXnVekSrh35EWJPA8kIZ8I=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/desktops/gnome/core/gnome-contacts/default.nix b/nixpkgs/pkgs/desktops/gnome/core/gnome-contacts/default.nix
index a8e99ecec45e..5f938a1fb79b 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/gnome-contacts/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome/core/gnome-contacts/default.nix
@@ -27,11 +27,11 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-contacts";
-  version = "44.0";
+  version = "45.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-contacts/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "fdEWO8HwavY4La5AFcQ0Q+4sEpKBKPyZ/USSktDee+0=";
+    sha256 = "vR/fKm9kzdnyq7/tB+ZPKmmuNTb3T0gZjMN7rZ/NlD4=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/desktops/gnome/core/gnome-control-center/default.nix b/nixpkgs/pkgs/desktops/gnome/core/gnome-control-center/default.nix
index f266c4809139..d59b5a139065 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/gnome-control-center/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome/core/gnome-control-center/default.nix
@@ -20,13 +20,13 @@
 , gnome-desktop
 , gnome-online-accounts
 , gnome-settings-daemon
+, gnome-tecla
 , gnome
 , gsettings-desktop-schemas
 , gsound
 , gst_all_1
 , gtk4
 , ibus
-, libgnomekbd
 , libgtop
 , libgudev
 , libadwaita
@@ -50,6 +50,7 @@
 , polkit
 , python3
 , samba
+, setxkbmap
 , shadow
 , shared-mime-info
 , sound-theme-freedesktop
@@ -62,22 +63,23 @@
 , gnome-user-share
 , gnome-remote-desktop
 , wrapGAppsHook
+, xvfb-run
 }:
 
 stdenv.mkDerivation rec {
   pname = "gnome-control-center";
-  version = "44.3";
+  version = "45.1";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "sha256-BmplBS/D7ProYAJehfeX5qsrh6WMT4q5xm7CBxioDHo=";
+    sha256 = "sha256-0obHYnFQ4RKqy7S3uRcX+tjokHYGFHnfxhCy3XRLV3o=";
   };
 
   patches = [
     (substituteAll {
       src = ./paths.patch;
       gcm = gnome-color-manager;
-      inherit glibc libgnomekbd tzdata shadow;
+      inherit glibc tzdata shadow;
       inherit cups networkmanagerapplet;
     })
   ];
@@ -110,6 +112,7 @@ stdenv.mkDerivation rec {
     gnome-online-accounts
     gnome-remote-desktop # optional, sharing panel
     gnome-settings-daemon
+    gnome-tecla
     gnome-user-share # optional, sharing panel
     gsettings-desktop-schemas
     gsound
@@ -141,11 +144,34 @@ stdenv.mkDerivation rec {
     gst-plugins-good
   ]);
 
+  nativeCheckInputs = [
+    python3.pkgs.python-dbusmock
+    setxkbmap
+    xvfb-run
+  ];
+
+  doCheck = true;
+
   preConfigure = ''
     # For ITS rules
     addToSearchPath "XDG_DATA_DIRS" "${polkit.out}/share"
   '';
 
+  checkPhase = ''
+    runHook preCheck
+
+    testEnvironment=(
+      # Basically same as https://github.com/NixOS/nixpkgs/pull/141299
+      "ADW_DISABLE_PORTAL=1"
+      "XDG_DATA_DIRS=${glib.getSchemaDataDirPath gsettings-desktop-schemas}"
+    )
+
+    env "''${testEnvironment[@]}" xvfb-run \
+      meson test --print-errorlogs
+
+    runHook postCheck
+  '';
+
   postInstall = ''
     # Pull in WebP support for gnome-backgrounds.
     # In postInstall to run before gappsWrapperArgsHook.
diff --git a/nixpkgs/pkgs/desktops/gnome/core/gnome-control-center/paths.patch b/nixpkgs/pkgs/desktops/gnome/core/gnome-control-center/paths.patch
index a1852811d400..165497f11e2a 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/gnome-control-center/paths.patch
+++ b/nixpkgs/pkgs/desktops/gnome/core/gnome-control-center/paths.patch
@@ -1,17 +1,17 @@
 diff --git a/panels/color/cc-color-panel.c b/panels/color/cc-color-panel.c
-index 603178efc..c363a6a5c 100644
+index f6c84e3d2..cd897f8f5 100644
 --- a/panels/color/cc-color-panel.c
 +++ b/panels/color/cc-color-panel.c
-@@ -591,7 +591,7 @@ gcm_prefs_calibrate_cb (CcColorPanel *prefs)
+@@ -614,7 +614,7 @@ gcm_prefs_calibrate_cb (CcColorPanel *self)
  
    /* run with modal set */
    argv = g_ptr_array_new_with_free_func (g_free);
 -  g_ptr_array_add (argv, g_strdup ("gcm-calibrate"));
 +  g_ptr_array_add (argv, g_build_filename ("@gcm@", "bin", "gcm-calibrate", NULL));
    g_ptr_array_add (argv, g_strdup ("--device"));
-   g_ptr_array_add (argv, g_strdup (cd_device_get_id (prefs->current_device)));
+   g_ptr_array_add (argv, g_strdup (cd_device_get_id (self->current_device)));
    g_ptr_array_add (argv, g_strdup ("--parent-window"));
-@@ -1029,7 +1029,7 @@ gcm_prefs_profile_view (CcColorPanel *prefs, CdProfile *profile)
+@@ -989,7 +989,7 @@ gcm_prefs_profile_view (CcColorPanel *self, CdProfile *profile)
  
    /* open up gcm-viewer as a info pane */
    argv = g_ptr_array_new_with_free_func (g_free);
@@ -20,9 +20,9 @@ index 603178efc..c363a6a5c 100644
    g_ptr_array_add (argv, g_strdup ("--profile"));
    g_ptr_array_add (argv, g_strdup (cd_profile_get_id (profile)));
    g_ptr_array_add (argv, g_strdup ("--parent-window"));
-@@ -1275,15 +1275,12 @@ gcm_prefs_device_clicked (CcColorPanel *prefs, CdDevice *device)
+@@ -1221,15 +1221,12 @@ gcm_prefs_device_clicked (CcColorPanel *self, CdDevice *device)
  static void
- gcm_prefs_profile_clicked (CcColorPanel *prefs, CdProfile *profile, CdDevice *device)
+ gcm_prefs_profile_clicked (CcColorPanel *self, CdProfile *profile, CdDevice *device)
  {
 -  g_autofree gchar *s = NULL;
 -
@@ -34,9 +34,9 @@ index 603178efc..c363a6a5c 100644
 -  if (cd_profile_get_filename (profile) != NULL &&
 -      (s = g_find_program_in_path ("gcm-viewer")) != NULL)
 +  if (cd_profile_get_filename (profile) != NULL)
-     gtk_widget_set_sensitive (prefs->toolbutton_profile_view, TRUE);
+     gtk_widget_set_sensitive (self->toolbutton_profile_view, TRUE);
    else
-     gtk_widget_set_sensitive (prefs->toolbutton_profile_view, FALSE);
+     gtk_widget_set_sensitive (self->toolbutton_profile_view, FALSE);
 diff --git a/panels/datetime/tz.h b/panels/datetime/tz.h
 index a2376f8a4..98769e08f 100644
 --- a/panels/datetime/tz.h
@@ -54,23 +54,6 @@ index a2376f8a4..98769e08f 100644
  
  typedef struct _TzDB TzDB;
  typedef struct _TzLocation TzLocation;
-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
-+++ b/panels/keyboard/cc-input-list-box.c
-@@ -223,10 +223,10 @@ row_layout_cb (CcInputListBox *self,
-   layout_variant = cc_input_source_get_layout_variant (source);
- 
-   if (layout_variant && layout_variant[0])
--    commandline = g_strdup_printf ("gkbd-keyboard-display -l \"%s\t%s\"",
-+    commandline = g_strdup_printf ("@libgnomekbd@/bin/gkbd-keyboard-display -l \"%s\t%s\"",
- 				   layout, layout_variant);
-   else
--    commandline = g_strdup_printf ("gkbd-keyboard-display -l %s",
-+    commandline = g_strdup_printf ("@libgnomekbd@/bin/gkbd-keyboard-display -l %s",
- 				   layout);
- 
-   g_spawn_command_line_async (commandline, NULL);
 diff --git a/panels/network/connection-editor/net-connection-editor.c b/panels/network/connection-editor/net-connection-editor.c
 index 505b8ee25..62e94009f 100644
 --- a/panels/network/connection-editor/net-connection-editor.c
diff --git a/nixpkgs/pkgs/desktops/gnome/core/gnome-disk-utility/default.nix b/nixpkgs/pkgs/desktops/gnome/core/gnome-disk-utility/default.nix
index 5613207b3e10..b0189cc1321d 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/gnome-disk-utility/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome/core/gnome-disk-utility/default.nix
@@ -27,11 +27,11 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-disk-utility";
-  version = "44.0";
+  version = "45.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-disk-utility/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "sha256-AgMQl4ls2zfYcXpYI/k+NyPU385/3EACyd/LFrfno+8=";
+    sha256 = "sha256-PYYl+qmQR7xK79KZIa1yirTXAM/4bg8uxn6Nuod9DdM=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/desktops/gnome/core/gnome-font-viewer/default.nix b/nixpkgs/pkgs/desktops/gnome/core/gnome-font-viewer/default.nix
index 30fafeee2ae8..9e5003ae2f35 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/gnome-font-viewer/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome/core/gnome-font-viewer/default.nix
@@ -18,11 +18,11 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-font-viewer";
-  version = "44.0";
+  version = "45.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-font-viewer/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "oVEd8wsijMLvEXXdnSuTQ46pEuJZE0BLJjzz1Fe7n5c=";
+    sha256 = "l8traN2mDeCrMDg4NYbx5LwdpaSPRAJb1rvnTqBcKwg=";
   };
 
   doCheck = true;
diff --git a/nixpkgs/pkgs/desktops/gnome/core/gnome-initial-setup/0001-fix-paths.patch b/nixpkgs/pkgs/desktops/gnome/core/gnome-initial-setup/0001-fix-paths.patch
index 232375952253..f3cd9f6f0427 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/gnome-initial-setup/0001-fix-paths.patch
+++ b/nixpkgs/pkgs/desktops/gnome/core/gnome-initial-setup/0001-fix-paths.patch
@@ -17,11 +17,11 @@ index 196abf6..613d0e5 100644
  		return TRUE;
  
  	if (variant[0])
--		commandline = g_strdup_printf ("gkbd-keyboard-display -l \"%s\t%s\"", layout, variant);
-+		commandline = g_strdup_printf ("@libgnomekbd@/bin/gkbd-keyboard-display -l \"%s\t%s\"", layout, variant);
+-		commandline = g_strdup_printf ("tecla \"%s+%s\"", layout, variant);
++		commandline = g_strdup_printf ("@tecla@/bin/tecla \"%s+%s\"", layout, variant);
  	else
--		commandline = g_strdup_printf ("gkbd-keyboard-display -l %s", layout);
-+		commandline = g_strdup_printf ("@libgnomekbd@/bin/gkbd-keyboard-display -l %s", layout);
+-		commandline = g_strdup_printf ("tecla %s", layout);
++		commandline = g_strdup_printf ("@tecla@/bin/tecla %s", layout);
  	g_spawn_command_line_async (commandline, NULL);
  	g_free (commandline);
  
@@ -38,15 +38,6 @@ diff --git a/gnome-initial-setup/pages/timezone/tz.h b/gnome-initial-setup/pages
 index a2376f8..5cb7bc9 100644
 --- a/gnome-initial-setup/pages/timezone/tz.h
 +++ b/gnome-initial-setup/pages/timezone/tz.h
-@@ -4,7 +4,7 @@
-  * Copyright (C) 2000-2001 Ximian, Inc.
-  *
-  * Authors: Hans Petter Jansson <hpj@ximian.com>
-- * 
-+ *
-  * Largely based on Michael Fulbright's work on Anaconda.
-  *
-  * This program is free software; you can redistribute it and/or modify
 @@ -28,7 +28,7 @@
  G_BEGIN_DECLS
  
diff --git a/nixpkgs/pkgs/desktops/gnome/core/gnome-initial-setup/default.nix b/nixpkgs/pkgs/desktops/gnome/core/gnome-initial-setup/default.nix
index 31950375369c..969d5012cc55 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/gnome-initial-setup/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome/core/gnome-initial-setup/default.nix
@@ -2,6 +2,7 @@
 , lib
 , fetchurl
 , substituteAll
+, dconf
 , gettext
 , meson
 , ninja
@@ -32,27 +33,29 @@
 , libadwaita
 , libnma-gtk4
 , tzdata
-, libgnomekbd
+, gnome-tecla
 , gsettings-desktop-schemas
 }:
 
 stdenv.mkDerivation rec {
   pname = "gnome-initial-setup";
-  version = "44.0";
+  version = "45.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "WTz8bcj4KphnG5TANbl9vojvVucIeAsq0dIyTk0Eu/8=";
+    sha256 = "sa/nZHmPiUi+25XHqzG9eFKaxctIHEH3p3d/Jk3lS9g=";
   };
 
   patches = [
     (substituteAll {
       src = ./0001-fix-paths.patch;
-      inherit tzdata libgnomekbd;
+      inherit tzdata;
+      tecla = gnome-tecla;
     })
   ];
 
   nativeBuildInputs = [
+    dconf
     gettext
     meson
     ninja
diff --git a/nixpkgs/pkgs/desktops/gnome/core/gnome-remote-desktop/default.nix b/nixpkgs/pkgs/desktops/gnome/core/gnome-remote-desktop/default.nix
index 2b7bda34744f..9b2f0876d7f5 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/gnome-remote-desktop/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome/core/gnome-remote-desktop/default.nix
@@ -8,6 +8,7 @@
 , asciidoc
 , wrapGAppsHook
 , glib
+, libei
 , libepoxy
 , libdrm
 , nv-codec-headers-11
@@ -21,20 +22,16 @@
 , fdk_aac
 , tpm2-tss
 , fuse3
-, mesa
-, libgudev
-, xvfb-run
-, dbus
 , gnome
 }:
 
 stdenv.mkDerivation rec {
   pname = "gnome-remote-desktop";
-  version = "44.2";
+  version = "45.1";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    hash = "sha256-ep/9NBtfy2NtJmden2JpZQlSFj//UpUydhjMLVzIe44=";
+    hash = "sha256-3NnBisIwZpVjH88AqIZFw443DroFxp3zn1QCBNTq/Y0=";
   };
 
   nativeBuildInputs = [
@@ -54,6 +51,7 @@ stdenv.mkDerivation rec {
     fuse3
     gdk-pixbuf # For libnotify
     glib
+    libei
     libepoxy
     libdrm
     nv-codec-headers-11
@@ -62,33 +60,13 @@ stdenv.mkDerivation rec {
     libxkbcommon
     pipewire
     systemd
-  ] ++ nativeCheckInputs;
-
-  nativeCheckInputs = [
-    mesa # for gbm
-    libgudev
-    xvfb-run
-    python3.pkgs.dbus-python
-    python3.pkgs.pygobject3
-    dbus # for dbus-run-session
   ];
 
   mesonFlags = [
     "-Dsystemd_user_unit_dir=${placeholder "out"}/lib/systemd/user"
+    "-Dtests=false" # Too deep of a rabbit hole.
   ];
 
-  # Too deep of a rabbit hole.
-  doCheck = false;
-
-  postPatch = ''
-    patchShebangs \
-      tests/vnc-test-runner.sh \
-      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"
-  '';
-
   passthru = {
     updateScript = gnome.updateScript {
       packageName = pname;
diff --git a/nixpkgs/pkgs/desktops/gnome/core/gnome-session/default.nix b/nixpkgs/pkgs/desktops/gnome/core/gnome-session/default.nix
index 3b33d289ddb0..dc0cade8d410 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/gnome-session/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome/core/gnome-session/default.nix
@@ -1,5 +1,4 @@
 { fetchurl
-, fetchpatch
 , lib
 , stdenv
 , substituteAll
@@ -32,13 +31,13 @@
 stdenv.mkDerivation rec {
   pname = "gnome-session";
   # Also bump ./ctl.nix when bumping major version.
-  version = "44.0";
+  version = "45.0";
 
   outputs = [ "out" "sessions" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-session/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "zPgpqWUmE16en5F1JlFdNqUJK9+jFvNzfdjFpSTb8sY=";
+    sha256 = "cG0v/KysOFU6PAGFeT9aK0qslAu154nZU8mAgWO+8vE=";
   };
 
   patches = [
@@ -48,12 +47,6 @@ stdenv.mkDerivation rec {
       dbusLaunch = "${dbus.lib}/bin/dbus-launch";
       bash = "${bash}/bin/bash";
     })
-    # See #226355. Can be removed on update to v45.
-    (fetchpatch {
-      name = "fix-gnome-boxes-crash.patch";
-      url = "https://gitlab.gnome.org/GNOME/gnome-session/commit/fab1a3b91677035d541de2c141f8073c4057342c.patch";
-      hash = "sha256-2xeoNgV8UDexkufXDqimAplX0GC99tUWUqjw3kfN+5Q=";
-    })
   ];
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/desktops/gnome/core/gnome-settings-daemon/add-gnome-session-ctl-option.patch b/nixpkgs/pkgs/desktops/gnome/core/gnome-settings-daemon/add-gnome-session-ctl-option.patch
new file mode 100644
index 000000000000..8bdf39ce37b6
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome/core/gnome-settings-daemon/add-gnome-session-ctl-option.patch
@@ -0,0 +1,58 @@
+From aae1e774dd9de22fe3520cf9eb2bfbf7216f5eb0 Mon Sep 17 00:00:00 2001
+From: WORLDofPEACE <worldofpeace@protonmail.ch>
+Date: Sun, 20 Sep 2020 16:09:36 -0400
+Subject: [PATCH] build: add a gnome_session_ctl_path option
+
+In gsd.service.in the ExecStopPost expects g-s-d libexecdir to
+be from the same prefix as gnome-session's, and this is not necessarily
+true as there are linux distro's that install their packages into their
+own individual prefixes (like NixOS or Guix).
+---
+ meson_options.txt      | 1 +
+ plugins/gsd.service.in | 2 +-
+ plugins/meson.build    | 6 ++++++
+ 3 files changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/meson_options.txt b/meson_options.txt
+index 3e04cf64f..21e003c61 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -1,4 +1,5 @@
+ option('udev_dir', type: 'string', value: '', description: 'Absolute path of the udev base directory')
++option('gnome_session_ctl_path', type: 'string', value: '', description: 'Absolute path to the gnome-session-ctl binary')
+ option('systemd', type: 'boolean', value: true, description: 'Enable systemd integration')
+ 
+ option('alsa', type: 'boolean', value: true, description: 'build with ALSA support (not optional on Linux platforms)')
+diff --git a/plugins/gsd.service.in b/plugins/gsd.service.in
+index 79b5f5536..bfbde6d05 100644
+--- a/plugins/gsd.service.in
++++ b/plugins/gsd.service.in
+@@ -23,4 +23,4 @@ BusName=@plugin_dbus_name@
+ TimeoutStopSec=5
+ # We cannot use OnFailure as e.g. dependency failures are normal
+ # https://github.com/systemd/systemd/issues/12352
+-ExecStopPost=@libexecdir@/gnome-session-ctl --exec-stop-check
++ExecStopPost=@gnome_session_ctl@ --exec-stop-check
+diff --git a/plugins/meson.build b/plugins/meson.build
+index 83e018854..266a0f093 100644
+--- a/plugins/meson.build
++++ b/plugins/meson.build
+@@ -20,6 +20,11 @@ all_plugins = [
+ 
+ disabled_plugins = []
+ 
++gnome_session_ctl = get_option('gnome_session_ctl_path')
++if gnome_session_ctl == ''
++  gnome_session_ctl = join_paths(gsd_libexecdir, 'gnome-session-ctl')
++endif
++
+ if not enable_smartcard
+     disabled_plugins += ['smartcard']
+ endif
+@@ -125,6 +130,7 @@ foreach plugin: all_plugins
+         unit_conf.set('plugin_name', plugin_name)
+         unit_conf.set('description', plugin_description)
+         unit_conf.set('libexecdir', gsd_libexecdir)
++        unit_conf.set('gnome_session_ctl', gnome_session_ctl)
+         unit_conf.set('plugin_dbus_name', plugin_dbus_name)
+         unit_conf.set('plugin_restart', plugin_restart_rule.get(plugin_name, 'on-failure'))
diff --git a/nixpkgs/pkgs/desktops/gnome/core/gnome-settings-daemon/default.nix b/nixpkgs/pkgs/desktops/gnome/core/gnome-settings-daemon/default.nix
index a06a04b908fc..699f9961c11f 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/gnome-settings-daemon/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome/core/gnome-settings-daemon/default.nix
@@ -1,5 +1,5 @@
-{ lib, stdenv
-, fetchpatch
+{ stdenv
+, lib
 , substituteAll
 , fetchurl
 , meson
@@ -34,26 +34,22 @@
 , wrapGAppsHook
 , python3
 , tzdata
-, nss
 , gcr_4
 , gnome-session-ctl
 }:
 
 stdenv.mkDerivation rec {
   pname = "gnome-settings-daemon";
-  version = "44.1";
+  version = "45.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-settings-daemon/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "EmU7ctgfFRMApH1wCslBCsG8zjjoPxvdGc3tKTKUOYk=";
+    sha256 = "u03EaVDiqQ848jIlhIhW0qextxjInQKFzhl7cBa7Hcg=";
   };
 
   patches = [
     # https://gitlab.gnome.org/GNOME/gnome-settings-daemon/-/merge_requests/202
-    (fetchpatch {
-      url = "https://gitlab.gnome.org/GNOME/gnome-settings-daemon/commit/aae1e774dd9de22fe3520cf9eb2bfbf7216f5eb0.patch";
-      sha256 = "O4m0rOW8Zrgu3Q0p0OA8b951VC0FjYbOUk9MLzB9icI=";
-    })
+    ./add-gnome-session-ctl-option.patch
 
     (substituteAll {
       src = ./fix-paths.patch;
@@ -89,7 +85,6 @@ stdenv.mkDerivation rec {
     upower
     colord
     libgweather
-    nss
     polkit
     geocode-glib_2
     geoclue2
diff --git a/nixpkgs/pkgs/desktops/gnome/core/gnome-shell-extensions/default.nix b/nixpkgs/pkgs/desktops/gnome/core/gnome-shell-extensions/default.nix
index 56f0e6102298..493e0342333f 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/gnome-shell-extensions/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome/core/gnome-shell-extensions/default.nix
@@ -13,11 +13,11 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-shell-extensions";
-  version = "44.0";
+  version = "45.1";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-shell-extensions/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "jDRecvMaHjf1UGPgsVmXMBsBGU7WmHcv2HrrUMuxAas=";
+    sha256 = "JC4VoMBuggw/2N1q6sGo74Zc5YiC5Zda8dZZNLtNQmE=";
   };
 
   patches = [
diff --git a/nixpkgs/pkgs/desktops/gnome/core/gnome-shell-extensions/fix_gmenu.patch b/nixpkgs/pkgs/desktops/gnome/core/gnome-shell-extensions/fix_gmenu.patch
index 555664e8ae25..1254f532d611 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/gnome-shell-extensions/fix_gmenu.patch
+++ b/nixpkgs/pkgs/desktops/gnome/core/gnome-shell-extensions/fix_gmenu.patch
@@ -1,11 +1,22 @@
+diff --git a/extensions/apps-menu/extension.js b/extensions/apps-menu/extension.js
+index 6eb58f1..28e1195 100644
 --- a/extensions/apps-menu/extension.js
 +++ b/extensions/apps-menu/extension.js
-@@ -1,6 +1,8 @@
- /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
- /* exported init enable disable */
+@@ -10,7 +10,7 @@ import Atk from 'gi://Atk';
+ import Clutter from 'gi://Clutter';
+ import Gio from 'gi://Gio';
+ import GLib from 'gi://GLib';
+-import GMenu from 'gi://GMenu';
++import GIRepository from 'gi://GIRepository';
+ import GObject from 'gi://GObject';
+ import Gtk from 'gi://Gtk';
+ import Meta from 'gi://Meta';
+@@ -25,6 +25,8 @@ import * as Main from 'resource:///org/gnome/shell/ui/main.js';
+ import * as PanelMenu from 'resource:///org/gnome/shell/ui/panelMenu.js';
+ import * as PopupMenu from 'resource:///org/gnome/shell/ui/popupMenu.js';
  
-+imports.gi.GIRepository.Repository.prepend_search_path('@gmenu_path@');
-+
- const {
-     Atk, Clutter, Gio, GLib, GMenu, GObject, Gtk, Meta, Shell, St
- } = imports.gi;
++GIRepository.Repository.prepend_search_path('@gmenu_path@');
++const {default: GMenu} = await import('gi://GMenu');
+ const appSys = Shell.AppSystem.get_default();
+ 
+ const APPLICATION_ICON_SIZE = 32;
diff --git a/nixpkgs/pkgs/desktops/gnome/core/gnome-shell/default.nix b/nixpkgs/pkgs/desktops/gnome/core/gnome-shell/default.nix
index 176cb4271b8d..2471061ae4f0 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/gnome-shell/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome/core/gnome-shell/default.nix
@@ -28,7 +28,7 @@
 , libpulseaudio
 , libical
 , gobject-introspection
-, wrapGAppsHook
+, wrapGAppsHook4
 , libxslt
 , gcr_4
 , accountsservice
@@ -37,7 +37,6 @@
 , upower
 , ibus
 , libnma-gtk4
-, libgnomekbd
 , gnome-desktop
 , gsettings-desktop-schemas
 , gnome-keyring
@@ -57,6 +56,7 @@
 , gnome-clocks
 , gnome-settings-daemon
 , gnome-autoar
+, gnome-tecla
 , asciidoc
 , bash-completion
 , mesa
@@ -67,22 +67,22 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "gnome-shell";
-  version = "44.5";
+  version = "45.1";
 
   outputs = [ "out" "devdoc" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-shell/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "wWr84Dgd1ZNCfXCER6nR+sdInrApRe+zfpBMp0qSSjU=";
+    sha256 = "FfykvWEpqLP5kBl/vR7ljXS2QVEK+q8Igqf6NmNPxfI=";
   };
 
   patches = [
     # Hardcode paths to various dependencies so that they can be found at runtime.
     (substituteAll {
       src = ./fix-paths.patch;
-      gkbd_keyboard_display = "${lib.getBin libgnomekbd}/bin/gkbd-keyboard-display";
       glib_compile_schemas = "${glib.dev}/bin/glib-compile-schemas";
       gsettings = "${glib.bin}/bin/gsettings";
+      tecla = "${lib.getBin gnome-tecla}/bin/tecla";
       unzip = "${lib.getBin unzip}/bin/unzip";
     })
 
@@ -95,11 +95,8 @@ stdenv.mkDerivation rec {
 
     # Fix greeter logo being too big.
     # https://gitlab.gnome.org/GNOME/gnome-shell/issues/2591
-    (fetchpatch {
-      url = "https://gitlab.gnome.org/GNOME/gnome-shell/commit/ffb8bd5fa7704ce70ce7d053e03549dd15dce5ae.patch";
-      revert = true;
-      sha256 = "14h7ahlxgly0n3sskzq9dhxzbyb04fn80pv74vz1526396676dzl";
-    })
+    # Reverts https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1101
+    ./greeter-logo-size.patch
 
     # Work around failing fingerprint auth
     (fetchpatch {
@@ -117,7 +114,7 @@ stdenv.mkDerivation rec {
     docbook_xml_dtd_45
     gtk-doc
     perl
-    wrapGAppsHook
+    wrapGAppsHook4
     sassc
     desktop-file-utils
     libxslt.bin
@@ -187,7 +184,7 @@ stdenv.mkDerivation rec {
 
     # We can generate it ourselves.
     rm -f man/gnome-shell.1
-    rm data/theme/gnome-shell.css
+    rm data/theme/gnome-shell-{light,dark}.css
   '';
 
   postInstall = ''
diff --git a/nixpkgs/pkgs/desktops/gnome/core/gnome-shell/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome/core/gnome-shell/fix-paths.patch
index e70c4851e9d5..e27847378bb2 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/gnome-shell/fix-paths.patch
+++ b/nixpkgs/pkgs/desktops/gnome/core/gnome-shell/fix-paths.patch
@@ -39,8 +39,8 @@ index fff4e73c2..92859b099 100644
          if (xkbVariant.length > 0)
              description = `${description}\t${xkbVariant}`;
  
--        Util.spawn(['gkbd-keyboard-display', '-l', description]);
-+        Util.spawn(['@gkbd_keyboard_display@', '-l', description]);
+-        Util.spawn(['tecla', description]);
++        Util.spawn(['@tecla@', description]);
      }
  });
 diff --git a/subprojects/extensions-tool/src/command-install.c b/subprojects/extensions-tool/src/command-install.c
diff --git a/nixpkgs/pkgs/desktops/gnome/core/gnome-shell/greeter-logo-size.patch b/nixpkgs/pkgs/desktops/gnome/core/gnome-shell/greeter-logo-size.patch
new file mode 100644
index 000000000000..e58610ddc2b2
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome/core/gnome-shell/greeter-logo-size.patch
@@ -0,0 +1,21 @@
+diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js
+index a3e4372b4..36f6c1f47 100644
+--- a/js/gdm/loginDialog.js
++++ b/js/gdm/loginDialog.js
+@@ -43,6 +43,7 @@ import * as UserWidget from '../ui/userWidget.js';
+ const _FADE_ANIMATION_TIME = 250;
+ const _SCROLL_ANIMATION_TIME = 500;
+ const _TIMED_LOGIN_IDLE_THRESHOLD = 5.0;
++const _LOGO_ICON_HEIGHT = 48;
+ 
+ export const UserListItem = GObject.registerClass({
+     Signals: {'activate': {}},
+@@ -839,7 +840,7 @@ export const LoginDialog = GObject.registerClass({
+             const scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
+             const texture = this._textureCache.load_file_async(
+                 this._logoFile,
+-                -1, -1,
++                -1, _LOGO_ICON_HEIGHT,
+                 scaleFactor, resourceScale);
+             this._logoBin.add_child(texture);
+         }
diff --git a/nixpkgs/pkgs/desktops/gnome/core/gnome-shell/wrap-services.patch b/nixpkgs/pkgs/desktops/gnome/core/gnome-shell/wrap-services.patch
index 5ce4a2fd46d7..eca485c32124 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/gnome-shell/wrap-services.patch
+++ b/nixpkgs/pkgs/desktops/gnome/core/gnome-shell/wrap-services.patch
@@ -1,19 +1,19 @@
 diff --git a/js/dbusServices/dbus-service.in b/js/dbusServices/dbus-service.in
 old mode 100644
 new mode 100755
-index 524166102..6d0722a1c
+index 5c698f58a..1ed61a7e3
 --- a/js/dbusServices/dbus-service.in
 +++ b/js/dbusServices/dbus-service.in
 @@ -1,3 +1,9 @@
-+#!@gjs@
++#!@gjs@ -m
 +
 +// gjs determines the package name from argv[0], which is .*-wrapped
 +// so we need to override it to the original one.
 +imports.package._findEffectiveEntryPointName = () => '@service@'
 +
- imports.package.start({
-     name: '@PACKAGE_NAME@',
-     prefix: '@prefix@',
+ import {programInvocationName, programArgs} from 'system';
+ 
+ imports.package.init({
 diff --git a/js/dbusServices/dbus-service.service.in b/js/dbusServices/dbus-service.service.in
 index 3b0d09abe..4fd4bb66d 100644
 --- a/js/dbusServices/dbus-service.service.in
@@ -21,7 +21,7 @@ index 3b0d09abe..4fd4bb66d 100644
 @@ -1,3 +1,3 @@
  [D-BUS Service]
  Name=@service@
--Exec=@gjs@ @pkgdatadir@/@service@
+-Exec=@gjs@ -m @pkgdatadir@/@service@
 +Exec=@pkgdatadir@/@service@
 diff --git a/js/dbusServices/meson.build b/js/dbusServices/meson.build
 index eb941ed90..552051e5a 100644
diff --git a/nixpkgs/pkgs/desktops/gnome/core/gnome-software/default.nix b/nixpkgs/pkgs/desktops/gnome/core/gnome-software/default.nix
index 99ab7e4d5ca2..931a2d643dd2 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/gnome-software/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome/core/gnome-software/default.nix
@@ -45,11 +45,11 @@ in
 
 stdenv.mkDerivation rec {
   pname = "gnome-software";
-  version = "44.4";
+  version = "45.1";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-software/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "i1N2fvbMVKLbWI7xxZJoOLDWe42bIRc95ROc0PvSgJU=";
+    sha256 = "1ySF96bgkX9k7b7daP17VyRsbr8QxaRRCLY5RmNXeKI=";
   };
 
   patches = [
diff --git a/nixpkgs/pkgs/desktops/gnome/core/gnome-system-monitor/default.nix b/nixpkgs/pkgs/desktops/gnome/core/gnome-system-monitor/default.nix
index f3e2677d6e0d..60de20502b37 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/gnome-system-monitor/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome/core/gnome-system-monitor/default.nix
@@ -23,11 +23,11 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-system-monitor";
-  version = "44.0";
+  version = "45.0.2";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-system-monitor/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "wrq37dupKCfEyN5EKT5+PITJ5QdvMZhYh/+Jac7EXm4=";
+    sha256 = "xeJy2Qv5mGo/hhPXbg0n+kLfrO5cAZLnOSG7lLGGii4=";
   };
 
   patches = [
diff --git a/nixpkgs/pkgs/desktops/gnome/core/gnome-terminal/default.nix b/nixpkgs/pkgs/desktops/gnome/core/gnome-terminal/default.nix
index 0fa7a713ce0c..bc524bc800db 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/gnome-terminal/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome/core/gnome-terminal/default.nix
@@ -12,6 +12,7 @@
 , glib
 , gtk4
 , gtk3
+, libhandy
 , gsettings-desktop-schemas
 , vte
 , gettext
@@ -29,14 +30,14 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-terminal";
-  version = "3.48.2";
+  version = "3.50.1";
 
   src = fetchFromGitLab {
     domain = "gitlab.gnome.org";
     owner = "GNOME";
     repo = "gnome-terminal";
     rev = version;
-    sha256 = "sha256-WvFKFh5BK6AS+Lqyh27xIfH1rxs1+YTkywX4w9UashQ=";
+    sha256 = "sha256-lJAzmz8tvEbr371VtYjlV4+z3cSy4QrmP0vmD5WiJD4=";
   };
 
   nativeBuildInputs = [
@@ -61,6 +62,7 @@ stdenv.mkDerivation rec {
     glib
     gtk4
     gtk3
+    libhandy
     gsettings-desktop-schemas
     vte
     libuuid
diff --git a/nixpkgs/pkgs/desktops/gnome/core/gnome-tour/default.nix b/nixpkgs/pkgs/desktops/gnome/core/gnome-tour/default.nix
index bb658fcd4489..9ded6a332654 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/gnome-tour/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome/core/gnome-tour/default.nix
@@ -22,11 +22,11 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-tour";
-  version = "44.0";
+  version = "45.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    hash = "sha256-Bt52d90cWQ0OozoDLJzPTDfGK8ViFbgjyHnkLuYwwrY=";
+    hash = "sha256-W+S470uPTV7KzMMQSNtuCFqPe/+tqghDuOiniP8dre4=";
   };
 
   cargoVendorDir = "vendor";
diff --git a/nixpkgs/pkgs/desktops/gnome/core/gucharmap/default.nix b/nixpkgs/pkgs/desktops/gnome/core/gucharmap/default.nix
index 0b2484c7cb40..91bea357d251 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/gucharmap/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome/core/gucharmap/default.nix
@@ -45,7 +45,7 @@ let
   };
 in stdenv.mkDerivation rec {
   pname = "gucharmap";
-  version = "15.0.4";
+  version = "15.1.2";
 
   outputs = [ "out" "lib" "dev" "devdoc" ];
 
@@ -54,7 +54,7 @@ in stdenv.mkDerivation rec {
     owner = "GNOME";
     repo = "gucharmap";
     rev = version;
-    sha256 = "sha256-lfWIaAr5FGWvDkNLOPe19hVQiFarbYVXwM78jZc5FFk=";
+    sha256 = "sha256-tvFw2k5xCl+QE6cHvLj5KKdYFSghN7PVgHPmd27wh7k=";
   };
 
   strictDeps = true;
diff --git a/nixpkgs/pkgs/desktops/gnome/core/mutter/43/default.nix b/nixpkgs/pkgs/desktops/gnome/core/mutter/43/default.nix
index 1d07bf167c80..e565603ae576 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/mutter/43/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome/core/mutter/43/default.nix
@@ -67,6 +67,18 @@ stdenv.mkDerivation (finalAttrs: {
       url = "https://gitlab.gnome.org/GNOME/mutter/-/commit/285a5a4d54ca83b136b787ce5ebf1d774f9499d5.patch";
       sha256 = "/npUE3idMSTVlFptsDpZmGWjZ/d2gqruVlJKq4eF4xU=";
     })
+
+    # Remove support for window shading.
+    # The corresponding key was removed in gsettings-desktop-schemas 45.alpha.
+    # https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2884
+    #
+    # Fetch the patch from magpie as they share same code base and this feature
+    # is never supported on wayland (note that magpie 0.9.x won't support wayland).
+    # https://github.com/BuddiesOfBudgie/magpie/issues/9
+    (fetchpatch {
+      url = "https://github.com/BuddiesOfBudgie/magpie/commit/4177c466375462ca8ed8fdb60913df4422f19144.patch";
+      sha256 = "NVx40WDnlUL050D529KVohvNBdVrheXxmJ73U3+KSeQ=";
+    })
   ];
 
   mesonFlags = [
@@ -136,6 +148,10 @@ stdenv.mkDerivation (finalAttrs: {
 
   postPatch = ''
     patchShebangs src/backends/native/gen-default-modes.py
+
+    # https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3187
+    substituteInPlace meson.build \
+      --replace "dependency('sysprof-4')" "dependency('sysprof-6')"
   '';
 
   postInstall = ''
diff --git a/nixpkgs/pkgs/desktops/gnome/core/mutter/default.nix b/nixpkgs/pkgs/desktops/gnome/core/mutter/default.nix
index d9aa514bb0e6..03414346f643 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/mutter/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome/core/mutter/default.nix
@@ -35,6 +35,7 @@
 , libXau
 , libinput
 , libdrm
+, libei
 , gsettings-desktop-schemas
 , glib
 , atk
@@ -66,13 +67,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "mutter";
-  version = "44.5";
+  version = "45.1";
 
   outputs = [ "out" "dev" "man" "devdoc" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/mutter/${lib.versions.major finalAttrs.version}/mutter-${finalAttrs.version}.tar.xz";
-    sha256 = "8kfg7WXrYvKwd1RtUoPtbUf0Ar2mpDFkE1AdjK7Slnk=";
+    sha256 = "LNPF77Itt2x5MRyxiJoaqy/rNbSk3QPzgiqreZnaISw=";
   };
 
   mesonFlags = [
@@ -123,6 +124,7 @@ stdenv.mkDerivation (finalAttrs: {
     harfbuzz
     libcanberra
     libdrm
+    libei
     libgudev
     libinput
     libstartup_notification
@@ -170,7 +172,7 @@ stdenv.mkDerivation (finalAttrs: {
   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-12/doc" "$devdoc"
+    moveToOutput "share/mutter-13/doc" "$devdoc"
   '';
 
   # Install udev files into our own tree.
@@ -179,7 +181,7 @@ stdenv.mkDerivation (finalAttrs: {
   separateDebugInfo = true;
 
   passthru = {
-    libdir = "${finalAttrs.finalPackage}/lib/mutter-12";
+    libdir = "${finalAttrs.finalPackage}/lib/mutter-13";
 
     tests = {
       libdirExists = runCommand "mutter-libdir-exists" {} ''
diff --git a/nixpkgs/pkgs/desktops/gnome/core/nautilus/default.nix b/nixpkgs/pkgs/desktops/gnome/core/nautilus/default.nix
index 1364fe421161..395b4f41c76b 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/nautilus/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome/core/nautilus/default.nix
@@ -38,13 +38,13 @@
 
 stdenv.mkDerivation rec {
   pname = "nautilus";
-  version = "44.2.1";
+  version = "45.1";
 
   outputs = [ "out" "dev" "devdoc" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "2cYvAkcn96dvxqXaeIorAkffAaccKmARQ8YqrA/0Hkw=";
+    sha256 = "I72qmoVGbFk3qJ2t3QgO0DvMK0notkr2ByBjU73oL+M=";
   };
 
   patches = [
diff --git a/nixpkgs/pkgs/desktops/gnome/core/sushi/default.nix b/nixpkgs/pkgs/desktops/gnome/core/sushi/default.nix
index b9a7685435e6..5c54f03d7d53 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/sushi/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome/core/sushi/default.nix
@@ -23,11 +23,11 @@
 
 stdenv.mkDerivation rec {
   pname = "sushi";
-  version = "44.2";
+  version = "45.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/sushi/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "bAAv4K6hkCe6RIta7JTVzXU8l1L5lu4DMVJChzjqQ+k=";
+    sha256 = "al8UsFo0cf5DhTzCsOGuVITX+fhvfqN2F5gpub9Kwd0=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/desktops/gnome/core/zenity/default.nix b/nixpkgs/pkgs/desktops/gnome/core/zenity/default.nix
index 6ff36b1c1960..e8be274a1f60 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/zenity/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome/core/zenity/default.nix
@@ -1,6 +1,7 @@
 { stdenv
 , lib
 , fetchurl
+, help2man
 , meson
 , ninja
 , pkg-config
@@ -15,14 +16,15 @@
 
 stdenv.mkDerivation rec {
   pname = "zenity";
-  version = "3.99.0";
+  version = "3.99.2";
 
   src = fetchurl {
     url = "mirror://gnome/sources/zenity/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "kOdDSnKLoD8fAkJIY8w5NV0kBxWNf5ZAPVHPVs8m7s8=";
+    sha256 = "oZR4kGuYi082fl6mOlkh5PmMuCVbugXrXK2LWhikFo8=";
   };
 
   nativeBuildInputs = [
+    help2man
     meson
     ninja
     pkg-config