From d1a2853933b49f3798c35b7cf8382bb788ee0320 Mon Sep 17 00:00:00 2001 From: aszlig Date: Mon, 11 Jun 2018 20:55:28 +0200 Subject: [PATCH] pinentry: Fix .override for pinentry_* When you evaluate nixos/tests/simple.nix, you'll run into an infinite recursion since 41b140cb25a2e10d94107393bd41509564f2fb82. The reason is that udisks2 now pulls in gnupg because it now depends on libblockdev, which in turn depends on volume_key and that depends on gnupg. Nevertheless, it's not the real reason, because this only means, that since gnupg is now pulled into the closure of a basic nixos configuration the real problem becomes visible: In nixos/modules/config/no-x-libs.nix there is an overlay which does something like this: nixpkgs.overlays = singleton (const (super: { pinentry = super.pinentry_ncurses; })); Now since pinentry_ncurses is already using pinentry.override we get an infinite recursion because now the pinentry attribute refers to pinentry_ncurses, which by itself is again referring to pinentry. This is solved by using the self.pinentry.override instead, so that the override used by pinentry_ncurses doesn't use the attribute from the overlay. Signed-off-by: aszlig Cc: @ttuegel Signed-off-by: aszlig --- pkgs/top-level/all-packages.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b6d0f3695321..d652824d8b9c 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4440,23 +4440,23 @@ with pkgs; libcap = if stdenv.isDarwin then null else libcap; }; - pinentry_ncurses = pinentry.override { + pinentry_ncurses = self.pinentry.override { gtk2 = null; }; - pinentry_emacs = pinentry.override { + pinentry_emacs = self.pinentry.override { enableEmacs = true; }; - pinentry_gnome = pinentry.override { + pinentry_gnome = self.pinentry.override { gcr = gnome3.gcr; }; - pinentry_qt4 = pinentry.override { + pinentry_qt4 = self.pinentry.override { qt = qt4; }; - pinentry_qt5 = pinentry.override { + pinentry_qt5 = self.pinentry.override { qt = qt5.qtbase; };