From 1b3229b48432f012954ad07675bec8944795a74a Mon Sep 17 00:00:00 2001 From: Tom Hunze Date: Thu, 3 Sep 2026 23:13:43 +0200 Subject: [PATCH 1/3] gcr: rename to gcr_3 Having the older ABI version as the default seems odd and the different gcr packages appear to be fundamentally incompatible, so drop the unsuffixed version similar to webkitgtk and as discussed in [1]. [1] https://github.com/NixOS/nixpkgs/pull/543345#issuecomment-5199018730 --- nixos/modules/programs/gnupg.nix | 2 +- nixos/modules/programs/nm-applet.nix | 2 +- .../modules/services/desktops/gnome/gnome-keyring.nix | 2 +- pkgs/applications/window-managers/phosh/default.nix | 4 ++-- pkgs/by-name/bu/budgie-control-center/package.nix | 4 ++-- pkgs/by-name/ci/cinnamon/package.nix | 4 ++-- pkgs/by-name/gc/{gcr => gcr_3}/package.nix | 1 + pkgs/by-name/ge/geary/package.nix | 4 ++-- pkgs/by-name/gn/gnome-keyring/package.nix | 4 ++-- pkgs/by-name/li/libcryptui/package.nix | 4 ++-- pkgs/by-name/ne/nemo-seahorse/package.nix | 6 +++--- pkgs/by-name/ne/networkmanager-openconnect/package.nix | 4 ++-- pkgs/by-name/pa/pan/package.nix | 4 ++-- pkgs/by-name/se/seahorse/package.nix | 10 +++++----- pkgs/by-name/sh/shotwell/package.nix | 4 ++-- pkgs/by-name/su/surf/package.nix | 4 ++-- pkgs/tools/security/pinentry/default.nix | 4 ++-- pkgs/top-level/aliases.nix | 1 + 18 files changed, 35 insertions(+), 33 deletions(-) rename pkgs/by-name/gc/{gcr => gcr_3}/package.nix (99%) diff --git a/nixos/modules/programs/gnupg.nix b/nixos/modules/programs/gnupg.nix index b8e88aa64023..f78713ed8428 100644 --- a/nixos/modules/programs/gnupg.nix +++ b/nixos/modules/programs/gnupg.nix @@ -209,7 +209,7 @@ in }; services.dbus.packages = mkIf (lib.elem "gnome3" (cfg.agent.pinentryPackage.flavors or [ ])) [ - pkgs.gcr + pkgs.gcr_3 ]; environment.systemPackages = [ cfg.package ]; diff --git a/nixos/modules/programs/nm-applet.nix b/nixos/modules/programs/nm-applet.nix index a1c69f52f624..4fd843c3f318 100644 --- a/nixos/modules/programs/nm-applet.nix +++ b/nixos/modules/programs/nm-applet.nix @@ -39,6 +39,6 @@ in serviceConfig.ExecStart = "${cfg.package}/bin/nm-applet ${lib.optionalString cfg.indicator "--indicator"}"; }; - services.dbus.packages = [ pkgs.gcr ]; + services.dbus.packages = [ pkgs.gcr_3 ]; }; } diff --git a/nixos/modules/services/desktops/gnome/gnome-keyring.nix b/nixos/modules/services/desktops/gnome/gnome-keyring.nix index 9140d261a770..1987c3d328b1 100644 --- a/nixos/modules/services/desktops/gnome/gnome-keyring.nix +++ b/nixos/modules/services/desktops/gnome/gnome-keyring.nix @@ -30,7 +30,7 @@ in services.dbus.packages = [ pkgs.gnome-keyring - pkgs.gcr + pkgs.gcr_3 ]; xdg.portal.extraPortals = [ pkgs.gnome-keyring ]; diff --git a/pkgs/applications/window-managers/phosh/default.nix b/pkgs/applications/window-managers/phosh/default.nix index d1e466f63464..353a27887e98 100644 --- a/pkgs/applications/window-managers/phosh/default.nix +++ b/pkgs/applications/window-managers/phosh/default.nix @@ -24,7 +24,7 @@ gnome-desktop, gnome-session, gnome-shell, - gcr, + gcr_3, pam, systemd, upower, @@ -108,7 +108,7 @@ stdenv.mkDerivation (finalAttrs: { evolution-data-server pulseaudio modemmanager - gcr + gcr_3 networkmanager polkit gmobile diff --git a/pkgs/by-name/bu/budgie-control-center/package.nix b/pkgs/by-name/bu/budgie-control-center/package.nix index afd7a1f47956..271bee669ad4 100644 --- a/pkgs/by-name/bu/budgie-control-center/package.nix +++ b/pkgs/by-name/bu/budgie-control-center/package.nix @@ -10,7 +10,7 @@ cups, docbook-xsl-nons, fontconfig, - gcr, + gcr_3, gdk-pixbuf, gettext, glib, @@ -105,7 +105,7 @@ stdenv.mkDerivation (finalAttrs: { colord colord-gtk fontconfig - gcr + gcr_3 gdk-pixbuf glib glib-networking diff --git a/pkgs/by-name/ci/cinnamon/package.nix b/pkgs/by-name/ci/cinnamon/package.nix index 9f239adca1c7..8ad3864c97d8 100644 --- a/pkgs/by-name/ci/cinnamon/package.nix +++ b/pkgs/by-name/ci/cinnamon/package.nix @@ -11,7 +11,7 @@ evolution-data-server, fetchFromGitHub, fetchpatch, - gcr, + gcr_3, gdk-pixbuf, gettext, libgnomekbd, @@ -104,7 +104,7 @@ stdenv.mkDerivation (finalAttrs: { cjs dbus evolution-data-server # for calendar-server - gcr + gcr_3 gdk-pixbuf glib graphene diff --git a/pkgs/by-name/gc/gcr/package.nix b/pkgs/by-name/gc/gcr_3/package.nix similarity index 99% rename from pkgs/by-name/gc/gcr/package.nix rename to pkgs/by-name/gc/gcr_3/package.nix index 035b303ba59e..7a9e079aa30f 100644 --- a/pkgs/by-name/gc/gcr/package.nix +++ b/pkgs/by-name/gc/gcr_3/package.nix @@ -107,6 +107,7 @@ stdenv.mkDerivation (finalAttrs: { passthru = { updateScript = gnome.updateScript { + attrPath = "gcr_3"; packageName = "gcr"; freeze = true; }; diff --git a/pkgs/by-name/ge/geary/package.nix b/pkgs/by-name/ge/geary/package.nix index ea99c747f6e1..6aaf173ab381 100644 --- a/pkgs/by-name/ge/geary/package.nix +++ b/pkgs/by-name/ge/geary/package.nix @@ -21,7 +21,7 @@ libxml2, gettext, sqlite, - gcr, + gcr_3, json-glib, itstool, libgee, @@ -72,7 +72,7 @@ stdenv.mkDerivation (finalAttrs: { adwaita-icon-theme enchant folks - gcr + gcr_3 glib-networking gmime3 gnome-online-accounts diff --git a/pkgs/by-name/gn/gnome-keyring/package.nix b/pkgs/by-name/gn/gnome-keyring/package.nix index 7d7a4f727aff..8e2a949adfc8 100644 --- a/pkgs/by-name/gn/gnome-keyring/package.nix +++ b/pkgs/by-name/gn/gnome-keyring/package.nix @@ -12,7 +12,7 @@ glib, libxslt, gettext, - gcr, + gcr_3, libcap_ng, libselinux, p11-kit, @@ -55,7 +55,7 @@ stdenv.mkDerivation (finalAttrs: { pam libcap_ng libselinux - gcr + gcr_3 p11-kit ]; diff --git a/pkgs/by-name/li/libcryptui/package.nix b/pkgs/by-name/li/libcryptui/package.nix index d8d591e76237..4c8c2fabcb44 100644 --- a/pkgs/by-name/li/libcryptui/package.nix +++ b/pkgs/by-name/li/libcryptui/package.nix @@ -16,7 +16,7 @@ gnupg, gpgme, dbus-glib, - gcr, + gcr_3, }: stdenv.mkDerivation (finalAttrs: { @@ -50,7 +50,7 @@ stdenv.mkDerivation (finalAttrs: { gnupg gpgme dbus-glib - gcr + gcr_3 ]; propagatedBuildInputs = [ dbus-glib ]; diff --git a/pkgs/by-name/ne/nemo-seahorse/package.nix b/pkgs/by-name/ne/nemo-seahorse/package.nix index 382bb69e81d5..b342e1b1274b 100644 --- a/pkgs/by-name/ne/nemo-seahorse/package.nix +++ b/pkgs/by-name/ne/nemo-seahorse/package.nix @@ -10,7 +10,7 @@ nemo, dbus-glib, libcryptui, - gcr, + gcr_3, libnotify, gnupg, gpgme, @@ -43,7 +43,7 @@ stdenv.mkDerivation (finalAttrs: { gpgme dbus-glib libcryptui - gcr + gcr_3 libnotify gnupg ]; @@ -74,7 +74,7 @@ stdenv.mkDerivation (finalAttrs: { services.desktopManager.gnome.extraGSettingsOverridePackages = with pkgs; [ nemo - gcr + gcr_3 libcryptui nemo-seahorse ]; diff --git a/pkgs/by-name/ne/networkmanager-openconnect/package.nix b/pkgs/by-name/ne/networkmanager-openconnect/package.nix index fc8157b434f1..75970ec83e46 100644 --- a/pkgs/by-name/ne/networkmanager-openconnect/package.nix +++ b/pkgs/by-name/ne/networkmanager-openconnect/package.nix @@ -9,7 +9,7 @@ intltool, pkg-config, networkmanager, - gcr, + gcr_3, libsecret, file, gtk3, @@ -48,7 +48,7 @@ stdenv.mkDerivation rec { libnma libnma-gtk4 gtk4 - gcr + gcr_3 libsecret ]; diff --git a/pkgs/by-name/pa/pan/package.nix b/pkgs/by-name/pa/pan/package.nix index 35ff4b4c3f35..1259e5b03921 100644 --- a/pkgs/by-name/pa/pan/package.nix +++ b/pkgs/by-name/pa/pan/package.nix @@ -18,7 +18,7 @@ spellChecking ? true, gnomeSupport ? true, libsecret, - gcr, + gcr_3, }: stdenv.mkDerivation (finalAttrs: { @@ -52,7 +52,7 @@ stdenv.mkDerivation (finalAttrs: { ++ lib.optionals spellChecking [ gspell ] ++ lib.optionals gnomeSupport [ libsecret - gcr + gcr_3 ]; cmakeFlags = [ diff --git a/pkgs/by-name/se/seahorse/package.nix b/pkgs/by-name/se/seahorse/package.nix index ae0ee5bcd2a0..7a3b8b8d1069 100644 --- a/pkgs/by-name/se/seahorse/package.nix +++ b/pkgs/by-name/se/seahorse/package.nix @@ -20,7 +20,7 @@ gpgme, python3, openldap, - gcr, + gcr_3, libsecret, avahi, p11-kit, @@ -59,14 +59,14 @@ stdenv.mkDerivation (finalAttrs: { openssh gnupg desktop-file-utils - gcr + gcr_3 ]; buildInputs = [ gtk3 glib glib-networking - gcr + gcr_3 gsettings-desktop-schemas gpgme libsecret @@ -98,7 +98,7 @@ stdenv.mkDerivation (finalAttrs: { # Add “org.gnome.crypto.pgp” GSettings schema to path # to make it available for “gpgme-backend” test. # It is used by Seahorse’s internal “common” library. - addToSearchPath XDG_DATA_DIRS "${glib.getSchemaDataDirPath gcr}" + addToSearchPath XDG_DATA_DIRS "${glib.getSchemaDataDirPath gcr_3}" # The same test also requires home directory so that it can store settings. export HOME=$TMPDIR ''; @@ -106,7 +106,7 @@ stdenv.mkDerivation (finalAttrs: { preFixup = '' gappsWrapperArgs+=( # Pick up icons from Gcr - --prefix XDG_DATA_DIRS : "${gcr}/share" + --prefix XDG_DATA_DIRS : "${gcr_3}/share" ) ''; diff --git a/pkgs/by-name/sh/shotwell/package.nix b/pkgs/by-name/sh/shotwell/package.nix index c81377d2fba2..1ac5aaa5a144 100644 --- a/pkgs/by-name/sh/shotwell/package.nix +++ b/pkgs/by-name/sh/shotwell/package.nix @@ -21,7 +21,7 @@ glib, glib-networking, json-glib, - gcr, + gcr_3, libgee, gexiv2_0_16, gettext, @@ -80,7 +80,7 @@ stdenv.mkDerivation (finalAttrs: { glib-networking gdk-pixbuf librsvg - gcr + gcr_3 adwaita-icon-theme libsecret libportal-gtk3 diff --git a/pkgs/by-name/su/surf/package.nix b/pkgs/by-name/su/surf/package.nix index 83e8f47c450e..2ddb6426e004 100644 --- a/pkgs/by-name/su/surf/package.nix +++ b/pkgs/by-name/su/surf/package.nix @@ -5,7 +5,7 @@ pkg-config, wrapGAppsHook3, glib, - gcr, + gcr_3, glib-networking, gsettings-desktop-schemas, gtk3, @@ -36,7 +36,7 @@ stdenv.mkDerivation { ]; buildInputs = [ glib - gcr + gcr_3 glib-networking gsettings-desktop-schemas libsoup_3 diff --git a/pkgs/tools/security/pinentry/default.nix b/pkgs/tools/security/pinentry/default.nix index 752805ce7009..4d3c358c1883 100644 --- a/pkgs/tools/security/pinentry/default.nix +++ b/pkgs/tools/security/pinentry/default.nix @@ -12,7 +12,7 @@ libsForQt5, qt6, ncurses, - gcr, + gcr_3, withLibsecret ? true, libsecret, }: @@ -28,7 +28,7 @@ let }; gnome3 = { flag = "gnome3"; - buildInputs = [ gcr ]; + buildInputs = [ gcr_3 ]; nativeBuildInputs = [ wrapGAppsHook3 ]; }; qt5 = { diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 8385add5e3c2..c8f367641c33 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -955,6 +955,7 @@ mapAliases { gcc12 = throw "gcc12 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 gcc12Stdenv = throw "gcc12Stdenv has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 gccgo12 = throw "gccgo12 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 + gcr = throw "'gcr' attribute has been removed from nixpkgs. Use a 'gcr_*' attribute with an explicit ABI version instead."; # Added 2026-09-03 gdc11 = throw "gdc11 has been removed from Nixpkgs, as it is unmaintained and obsolete"; # Added 2025-08-08 gdc = throw "gdc has been removed from Nixpkgs, as recent versions require complex bootstrapping"; # Added 2025-08-08 gdmd = throw "gdmd has been removed from Nixpkgs, as it depends on GDC which was removed"; # Added 2025-08-08 From 74fe719dab50b6142cb874257ba384604d179640 Mon Sep 17 00:00:00 2001 From: Tom Hunze Date: Thu, 3 Sep 2026 23:36:05 +0200 Subject: [PATCH 2/3] gcr_3: enable structuredAttrs --- pkgs/by-name/gc/gcr_3/package.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/by-name/gc/gcr_3/package.nix b/pkgs/by-name/gc/gcr_3/package.nix index 7a9e079aa30f..62ed7cf25e9c 100644 --- a/pkgs/by-name/gc/gcr_3/package.nix +++ b/pkgs/by-name/gc/gcr_3/package.nix @@ -30,6 +30,8 @@ stdenv.mkDerivation (finalAttrs: { pname = "gcr"; version = "3.41.2"; + __structuredAttrs = true; + outputs = [ "out" "dev" From bb7f06803a8c843026e982cfb62c3cbc03893063 Mon Sep 17 00:00:00 2001 From: Tom Hunze Date: Thu, 3 Sep 2026 23:36:15 +0200 Subject: [PATCH 3/3] gcr_4: enable structuredAttrs --- pkgs/by-name/gc/gcr_4/package.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/by-name/gc/gcr_4/package.nix b/pkgs/by-name/gc/gcr_4/package.nix index 9527d9837cb0..229d8e89d4a4 100644 --- a/pkgs/by-name/gc/gcr_4/package.nix +++ b/pkgs/by-name/gc/gcr_4/package.nix @@ -33,6 +33,8 @@ stdenv.mkDerivation (finalAttrs: { pname = "gcr"; version = "4.4.0.1"; + __structuredAttrs = true; + outputs = [ "out" "bin"