Merge pull request #133542 from fpletz/refactor/pinentry-remove-multiple-outputs

pinentry: remove multiple outputs

Sandro c86e8fd7 7a2f4373

Changed files
+168 -129
nixos
modules
config
programs
services
tests
pkgs
applications
version-management
blackbox
by-name
go
goldwarden
tools
security
pinentry
top-level
+1 -1
nixos/modules/config/no-x-libs.nix
···
networkmanager-sstp = super.networkmanager-vpnc.override { withGnome = false; };
networkmanager-vpnc = super.networkmanager-vpnc.override { withGnome = false; };
pango = super.pango.override { x11Support = false; };
-
pinentry = super.pinentry.override { enabledFlavors = [ "curses" "tty" "emacs" ]; withLibsecret = false; };
pipewire = super.pipewire.override { vulkanSupport = false; x11Support = false; };
pythonPackagesExtensions = super.pythonPackagesExtensions ++ [
(python-final: python-prev: {
···
networkmanager-sstp = super.networkmanager-vpnc.override { withGnome = false; };
networkmanager-vpnc = super.networkmanager-vpnc.override { withGnome = false; };
pango = super.pango.override { x11Support = false; };
+
pinentry-curses = super.pinentry-curses.override { withLibsecret = false; };
pipewire = super.pipewire.override { vulkanSupport = false; x11Support = false; };
pythonPackagesExtensions = super.pythonPackagesExtensions ++ [
(python-final: python-prev: {
+20 -22
nixos/modules/programs/gnupg.nix
···
{ config, lib, pkgs, ... }:
-
with lib;
-
let
cfg = config.programs.gnupg;
···
"curses";
in
-
{
options.programs.gnupg = {
package = mkPackageOption pkgs "gnupg" { };
···
'';
};
-
agent.pinentryFlavor = mkOption {
-
type = types.nullOr (types.enum pkgs.pinentry.flavors);
-
example = "gnome3";
-
default = defaultPinentryFlavor;
-
defaultText = literalMD ''matching the configured desktop environment'';
description = lib.mdDoc ''
-
Which pinentry interface to use. If not null, the path to the
-
pinentry binary will be set in /etc/gnupg/gpg-agent.conf.
-
If not set at all, it'll pick an appropriate flavor depending on the
-
system configuration (qt flavor for lxqt and plasma5, gtk2 for xfce
-
4.12, gnome3 on all other systems with X enabled, ncurses otherwise).
'';
};
···
};
config = mkIf cfg.agent.enable {
-
programs.gnupg.agent.settings = {
-
pinentry-program = lib.mkIf (cfg.agent.pinentryFlavor != null)
-
"${pkgs.pinentry.${cfg.agent.pinentryFlavor}}/bin/pinentry";
};
environment.etc."gnupg/gpg-agent.conf".source =
···
wantedBy = [ "sockets.target" ];
};
-
services.dbus.packages = mkIf (cfg.agent.pinentryFlavor == "gnome3") [ pkgs.gcr ];
-
environment.systemPackages = with pkgs; [ cfg.package ];
environment.interactiveShellInit = ''
# Bind gpg-agent to this TTY if gpg commands are used.
···
'';
assertions = [
-
{ assertion = cfg.agent.enableSSHSupport -> !config.programs.ssh.startAgent;
message = "You can't use ssh-agent and GnuPG agent with SSH support enabled at the same time!";
}
];
};
-
-
# uses attributes of the linked package
-
meta.buildDocsInSandbox = false;
}
···
{ config, lib, pkgs, ... }:
let
+
inherit (lib) mkRemovedOptionModule mkOption mkPackageOption types mkIf optionalString;
cfg = config.programs.gnupg;
···
"curses";
in
{
+
imports = [
+
(mkRemovedOptionModule [ "programs" "gnupg" "agent" "pinentryFlavor" ] "Use programs.gnupg.agent.pinentryPackage instead")
+
];
options.programs.gnupg = {
package = mkPackageOption pkgs "gnupg" { };
···
'';
};
+
agent.pinentryPackage = mkOption {
+
type = types.nullOr types.package;
+
example = lib.literalMD "pkgs.pinentry-gnome3";
+
default = pkgs.pinentry-curses;
+
defaultText = lib.literalMD "matching the configured desktop environment or `pkgs.pinentry-curses`";
description = lib.mdDoc ''
+
Which pinentry package to use. The path to the mainProgram as defined in
+
the package's meta attriutes will be set in /etc/gnupg/gpg-agent.conf.
+
If not set by the user, it'll pick an appropriate flavor depending on the
+
system configuration (qt flavor for lxqt and plasma5, gtk2 for xfce,
+
gnome3 on all other systems with X enabled, curses otherwise).
'';
};
···
};
config = mkIf cfg.agent.enable {
+
programs.gnupg.agent.settings = mkIf (cfg.agent.pinentryPackage != null) {
+
pinentry-program = lib.getExe cfg.agent.pinentryPackage;
};
environment.etc."gnupg/gpg-agent.conf".source =
···
wantedBy = [ "sockets.target" ];
};
+
services.dbus.packages = mkIf (lib.elem "gnome3" (cfg.agent.pinentryPackage.flavors or [])) [ pkgs.gcr ];
+
environment.systemPackages = [ cfg.package ];
environment.interactiveShellInit = ''
# Bind gpg-agent to this TTY if gpg commands are used.
···
'';
assertions = [
+
{
+
assertion = cfg.agent.enableSSHSupport -> !config.programs.ssh.startAgent;
message = "You can't use ssh-agent and GnuPG agent with SSH support enabled at the same time!";
}
];
};
}
+5
nixos/modules/programs/wayland/sway.nix
···
'';
}
];
environment = {
systemPackages = optional (cfg.package != null) cfg.package ++ cfg.extraPackages;
# Needed for the default wallpaper:
···
"sway/config".source = mkOptionDefault "${cfg.package}/etc/sway/config";
};
};
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1050913
xdg.portal.config.sway.default = mkDefault [ "wlr" "gtk" ];
# To make a Sway session available if a display manager like SDDM is enabled:
services.xserver.displayManager.sessionPackages = optionals (cfg.package != null) [ cfg.package ]; }
(import ./wayland-session.nix { inherit lib pkgs; })
···
'';
}
];
+
environment = {
systemPackages = optional (cfg.package != null) cfg.package ++ cfg.extraPackages;
# Needed for the default wallpaper:
···
"sway/config".source = mkOptionDefault "${cfg.package}/etc/sway/config";
};
};
+
+
programs.gnupg.agent.pinentryPackage = lib.mkDefault pkgs.pinentry-gnome3;
+
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1050913
xdg.portal.config.sway.default = mkDefault [ "wlr" "gtk" ];
+
# To make a Sway session available if a display manager like SDDM is enabled:
services.xserver.displayManager.sessionPackages = optionals (cfg.package != null) [ cfg.package ]; }
(import ./wayland-session.nix { inherit lib pkgs; })
+2 -10
nixos/modules/services/security/yubikey-agent.nix
···
let
cfg = config.services.yubikey-agent;
-
-
# reuse the pinentryFlavor option from the gnupg module
-
pinentryFlavor = config.programs.gnupg.agent.pinentryFlavor;
in
{
###### interface
···
# This overrides the systemd user unit shipped with the
# yubikey-agent package
systemd.user.services.yubikey-agent = mkIf (pinentryFlavor != null) {
-
path = [ pkgs.pinentry.${pinentryFlavor} ];
-
wantedBy = [
-
(if pinentryFlavor == "tty" || pinentryFlavor == "curses" then
-
"default.target"
-
else
-
"graphical-session.target")
-
];
};
# Yubikey-agent expects pcsd to be running in order to function.
···
let
cfg = config.services.yubikey-agent;
in
{
###### interface
···
# This overrides the systemd user unit shipped with the
# yubikey-agent package
systemd.user.services.yubikey-agent = mkIf (pinentryFlavor != null) {
+
path = [ config.programs.gnupg.agent.pinentryPackage ];
+
wantedBy = [ "default.target" ];
};
# Yubikey-agent expects pcsd to be running in order to function.
+1
nixos/modules/services/x11/desktop-managers/deepin.nix
···
services.upower.enable = mkDefault config.powerManagement.enable;
networking.networkmanager.enable = mkDefault true;
programs.dconf.enable = mkDefault true;
fonts.packages = with pkgs; [ noto-fonts ];
xdg.mime.enable = true;
···
services.upower.enable = mkDefault config.powerManagement.enable;
networking.networkmanager.enable = mkDefault true;
programs.dconf.enable = mkDefault true;
+
programs.gnupg.agent.pinentryPackage = pkgs.pinentry-qt;
fonts.packages = with pkgs; [ noto-fonts ];
xdg.mime.enable = true;
+2
nixos/modules/services/x11/desktop-managers/lxqt.nix
···
# Link some extra directories in /run/current-system/software/share
environment.pathsToLink = [ "/share" ];
# virtual file systems support for PCManFM-QT
services.gvfs.enable = true;
···
# Link some extra directories in /run/current-system/software/share
environment.pathsToLink = [ "/share" ];
+
programs.gnupg.agent.pinentryPackage = pkgs.pinentry-qt;
+
# virtual file systems support for PCManFM-QT
services.gvfs.enable = true;
+1
nixos/modules/services/x11/desktop-managers/plasma5.nix
···
serif = [ "Noto Serif" ];
};
programs.ssh.askPassword = mkDefault "${pkgs.plasma5Packages.ksshaskpass.out}/bin/ksshaskpass";
# Enable helpful DBus services.
···
serif = [ "Noto Serif" ];
};
+
programs.gnupg.agent.pinentryPackage = pkgs.pinentry-qt;
programs.ssh.askPassword = mkDefault "${pkgs.plasma5Packages.ksshaskpass.out}/bin/ksshaskpass";
# Enable helpful DBus services.
+1
nixos/modules/services/x11/desktop-managers/plasma6.nix
···
serif = ["Noto Serif"];
};
programs.ssh.askPassword = mkDefault "${kdePackages.ksshaskpass.out}/bin/ksshaskpass";
# Enable helpful DBus services.
···
serif = ["Noto Serif"];
};
+
programs.gnupg.agent.pinentryPackage = pkgs.pinentry-qt;
programs.ssh.askPassword = mkDefault "${kdePackages.ksshaskpass.out}/bin/ksshaskpass";
# Enable helpful DBus services.
+1
nixos/modules/services/x11/desktop-managers/xfce.nix
···
xfdesktop
] ++ optional cfg.enableScreensaver xfce4-screensaver) excludePackages;
programs.xfconf.enable = true;
programs.thunar.enable = true;
···
xfdesktop
] ++ optional cfg.enableScreensaver xfce4-screensaver) excludePackages;
+
programs.gnupg.agent.pinentryPackage = pkgs.pinentry-gtk2;
programs.xfconf.enable = true;
programs.thunar.enable = true;
+2
nixos/modules/services/x11/xserver.nix
···
boot.kernel.sysctl."fs.inotify.max_user_instances" = mkDefault 524288;
boot.kernel.sysctl."fs.inotify.max_user_watches" = mkDefault 524288;
systemd.defaultUnit = mkIf cfg.autorun "graphical.target";
systemd.services.display-manager =
···
boot.kernel.sysctl."fs.inotify.max_user_instances" = mkDefault 524288;
boot.kernel.sysctl."fs.inotify.max_user_watches" = mkDefault 524288;
+
programs.gnupg.agent.pinentryPackage = lib.mkDefault pkgs.pinentry-gnome3;
+
systemd.defaultUnit = mkIf cfg.autorun "graphical.target";
systemd.services.display-manager =
-1
nixos/tests/pass-secret-service.nix
···
programs.gnupg = {
agent.enable = true;
-
agent.pinentryFlavor = "tty";
dirmngr.enable = true;
};
};
···
programs.gnupg = {
agent.enable = true;
dirmngr.enable = true;
};
};
+1 -1
pkgs/applications/version-management/blackbox/default.nix
···
expect
which
coreutils
-
pinentry.tty
git
gnutar
procps
···
expect
which
coreutils
+
pinentry
git
gnutar
procps
+2 -2
pkgs/by-name/go/goldwarden/package.nix
···
, makeBinaryWrapper
, libfido2
, dbus
-
, pinentry
, nix-update-script
}:
···
postInstall = ''
wrapProgram $out/bin/goldwarden \
-
--suffix PATH : ${lib.makeBinPath [dbus pinentry]}
install -Dm644 $src/resources/com.quexten.goldwarden.policy -t $out/share/polkit-1/actions
'';
···
, makeBinaryWrapper
, libfido2
, dbus
+
, pinentry-gnome3
, nix-update-script
}:
···
postInstall = ''
wrapProgram $out/bin/goldwarden \
+
--suffix PATH : ${lib.makeBinPath [dbus pinentry-gnome3]}
install -Dm644 $src/resources/com.quexten.goldwarden.policy -t $out/share/polkit-1/actions
'';
+102 -82
pkgs/tools/security/pinentry/default.nix
···
-
{ fetchurl, mkDerivation, fetchpatch, stdenv, lib, pkg-config, autoreconfHook, wrapGAppsHook
-
, libgpg-error, libassuan, qtbase, wrapQtAppsHook
-
, ncurses, gtk2, gcr
-
, withLibsecret ? true, libsecret
-
, enabledFlavors ? [ "curses" "tty" "gtk2" "emacs" ]
-
++ lib.optionals stdenv.isLinux [ "gnome3" ]
-
++ lib.optionals (!stdenv.isDarwin) [ "qt" ]
}:
-
assert lib.isList enabledFlavors && enabledFlavors != [];
-
let
-
pinentryMkDerivation =
-
if (builtins.elem "qt" enabledFlavors)
-
then mkDerivation
-
else stdenv.mkDerivation;
-
-
enableFeaturePinentry = f:
-
let
-
flag = flavorInfo.${f}.flag or null;
-
in
-
lib.optionalString (flag != null)
-
(lib.enableFeature (lib.elem f enabledFlavors) ("pinentry-" + flag));
-
flavorInfo = {
-
curses = { bin = "curses"; flag = "curses"; buildInputs = [ ncurses ]; };
-
tty = { bin = "tty"; flag = "tty"; };
-
gtk2 = { bin = "gtk-2"; flag = "gtk2"; buildInputs = [ gtk2 ]; };
-
gnome3 = { bin = "gnome3"; flag = "gnome3"; buildInputs = [ gcr ]; nativeBuildInputs = [ wrapGAppsHook ]; };
-
qt = { bin = "qt"; flag = "qt"; buildInputs = [ qtbase ]; nativeBuildInputs = [ wrapQtAppsHook ]; };
-
emacs = { bin = "emacs"; flag = "emacs"; buildInputs = []; };
};
-
in
-
pinentryMkDerivation rec {
-
pname = "pinentry";
-
version = "1.2.1";
-
src = fetchurl {
-
url = "mirror://gnupg/pinentry/${pname}-${version}.tar.bz2";
-
sha256 = "sha256-RXoYXlqFI4+5RalV3GNSq5YtyLSHILYvyfpIx1QKQGc=";
-
};
-
nativeBuildInputs = [ pkg-config autoreconfHook ]
-
++ lib.concatMap(f: flavorInfo.${f}.nativeBuildInputs or []) enabledFlavors;
-
buildInputs = [ libgpg-error libassuan ]
-
++ lib.optional withLibsecret libsecret
-
++ lib.concatMap(f: flavorInfo.${f}.buildInputs or []) enabledFlavors;
-
dontWrapGApps = true;
-
dontWrapQtApps = true;
-
patches = [
-
./autoconf-ar.patch
-
] ++ lib.optionals (lib.elem "gtk2" enabledFlavors) [
-
(fetchpatch {
-
url = "https://salsa.debian.org/debian/pinentry/raw/debian/1.1.0-1/debian/patches/0007-gtk2-When-X11-input-grabbing-fails-try-again-over-0..patch";
-
sha256 = "15r1axby3fdlzz9wg5zx7miv7gqx2jy4immaw4xmmw5skiifnhfd";
-
})
-
];
-
configureFlags = [
-
"--with-libgpg-error-prefix=${libgpg-error.dev}"
-
"--with-libassuan-prefix=${libassuan.dev}"
-
(lib.enableFeature withLibsecret "libsecret")
-
] ++ (map enableFeaturePinentry (lib.attrNames flavorInfo));
-
postInstall =
-
lib.concatStrings (lib.flip map enabledFlavors (f:
-
let
-
binary = "pinentry-" + flavorInfo.${f}.bin;
-
in ''
-
moveToOutput bin/${binary} ${placeholder f}
-
ln -sf ${placeholder f}/bin/${binary} ${placeholder f}/bin/pinentry
-
'' + lib.optionalString (f == "gnome3") ''
-
wrapGApp ${placeholder f}/bin/${binary}
-
'' + lib.optionalString (f == "qt") ''
-
wrapQtApp ${placeholder f}/bin/${binary}
-
'')) + ''
-
ln -sf ${placeholder (lib.head enabledFlavors)}/bin/pinentry-${flavorInfo.${lib.head enabledFlavors}.bin} $out/bin/pinentry
-
'';
-
outputs = [ "out" ] ++ enabledFlavors;
-
passthru = { flavors = enabledFlavors; };
-
meta = with lib; {
-
homepage = "http://gnupg.org/aegypten2/";
-
description = "GnuPG’s interface to passphrase input";
-
license = licenses.gpl2Plus;
-
platforms = platforms.all;
-
longDescription = ''
-
Pinentry provides a console and (optional) GTK and Qt GUIs allowing users
-
to enter a passphrase when `gpg' or `gpg2' is run and needs it.
-
'';
-
maintainers = with maintainers; [ ttuegel fpletz ];
-
};
}
···
+
{ stdenv
+
, lib
+
, fetchurl
+
, fetchpatch
+
, pkg-config
+
, autoreconfHook
+
, wrapGAppsHook
+
, libgpg-error
+
, libassuan
+
, libsForQt5
+
, ncurses
+
, gtk2
+
, gcr
+
, withLibsecret ? true
+
, libsecret
}:
let
flavorInfo = {
+
tty = { flag = "tty"; };
+
curses = {
+
flag = "curses";
+
buildInputs = [ ncurses ];
+
};
+
gtk2 = {
+
flag = "gtk2";
+
buildInputs = [ gtk2 ];
+
};
+
gnome3 = {
+
flag = "gnome3";
+
buildInputs = [ gcr ];
+
nativeBuildInputs = [ wrapGAppsHook ];
+
};
+
qt = {
+
flag = "qt";
+
buildInputs = [ libsForQt5.qtbase ];
+
nativeBuildInputs = [ libsForQt5.wrapQtAppsHook ];
+
};
+
emacs = { flag = "emacs"; };
};
+
buildPinentry = pinentryExtraPname: buildFlavors:
+
let
+
enableFeaturePinentry = f:
+
lib.enableFeature (lib.elem f buildFlavors) ("pinentry-" + flavorInfo.${f}.flag);
+
pinentryMkDerivation =
+
if (lib.elem "qt" buildFlavors)
+
then libsForQt5.mkDerivation
+
else stdenv.mkDerivation;
+
in
+
pinentryMkDerivation rec {
+
pname = "pinentry-${pinentryExtraPname}";
+
version = "1.2.1";
+
src = fetchurl {
+
url = "mirror://gnupg/pinentry/pinentry-${version}.tar.bz2";
+
hash = "sha256-RXoYXlqFI4+5RalV3GNSq5YtyLSHILYvyfpIx1QKQGc=";
+
};
+
nativeBuildInputs = [ pkg-config autoreconfHook ]
+
++ lib.concatMap (f: flavorInfo.${f}.nativeBuildInputs or [ ]) buildFlavors;
+
buildInputs = [ libgpg-error libassuan ]
+
++ lib.optional withLibsecret libsecret
+
++ lib.concatMap (f: flavorInfo.${f}.buildInputs or [ ]) buildFlavors;
+
dontWrapGApps = true;
+
dontWrapQtApps = true;
+
patches = [
+
./autoconf-ar.patch
+
] ++ lib.optionals (lib.elem "gtk2" buildFlavors) [
+
(fetchpatch {
+
url = "https://salsa.debian.org/debian/pinentry/raw/debian/1.1.0-1/debian/patches/0007-gtk2-When-X11-input-grabbing-fails-try-again-over-0..patch";
+
sha256 = "15r1axby3fdlzz9wg5zx7miv7gqx2jy4immaw4xmmw5skiifnhfd";
+
})
+
];
+
configureFlags = [
+
"--with-libgpg-error-prefix=${libgpg-error.dev}"
+
"--with-libassuan-prefix=${libassuan.dev}"
+
(lib.enableFeature withLibsecret "libsecret")
+
] ++ (map enableFeaturePinentry (lib.attrNames flavorInfo));
+
postInstall =
+
lib.optionalString (lib.elem "gnome3" buildFlavors) ''
+
wrapGApp $out/bin/pinentry-gnome3
+
'' + lib.optionalString (lib.elem "qt" buildFlavors) ''
+
wrapQtApp $out/bin/pinentry-qt
+
'';
+
passthru = { flavors = buildFlavors; };
+
meta = with lib; {
+
homepage = "https://gnupg.org/software/pinentry/index.html";
+
description = "GnuPG’s interface to passphrase input";
+
license = licenses.gpl2Plus;
+
platforms =
+
if elem "gnome3" buildFlavors then platforms.linux else
+
if elem "qt" buildFlavors then (remove "aarch64-darwin" platforms.all) else
+
platforms.all;
+
longDescription = ''
+
Pinentry provides a console and (optional) GTK and Qt GUIs allowing users
+
to enter a passphrase when `gpg' or `gpg2' is run and needs it.
+
'';
+
maintainers = with maintainers; [ fpletz ];
+
mainProgram = "pinentry";
+
};
+
};
+
in
+
{
+
pinentry-curses = buildPinentry "curses" [ "curses" "tty" ];
+
pinentry-gtk2 = buildPinentry "gtk2" [ "gtk2" "curses" "tty" ];
+
pinentry-gnome3 = buildPinentry "gnome3" [ "gnome3" "curses" "tty" ];
+
pinentry-qt = buildPinentry "qt" [ "qt" "curses" "tty" ];
+
pinentry-emacs = buildPinentry "emacs" [ "emacs" "curses" "tty" ];
+
pinentry-all = buildPinentry "all" [ "curses" "tty" "gtk2" "gnome3" "qt" "emacs" ];
}
+11
pkgs/top-level/aliases.nix
···
timescaledb = postgresqlPackages.timescaledb;
tsearch_extras = postgresqlPackages.tsearch_extras;
pinentry_curses = throw "'pinentry_curses' has been renamed to/replaced by 'pinentry-curses'"; # Converted to throw 2023-09-10
pinentry_emacs = throw "'pinentry_emacs' has been renamed to/replaced by 'pinentry-emacs'"; # Converted to throw 2023-09-10
pinentry_gnome = throw "'pinentry_gnome' has been renamed to/replaced by 'pinentry-gnome'"; # Converted to throw 2023-09-10
pinentry_gtk2 = throw "'pinentry_gtk2' has been renamed to/replaced by 'pinentry-gtk2'"; # Converted to throw 2023-09-10
pinentry_qt = throw "'pinentry_qt' has been renamed to/replaced by 'pinentry-qt'"; # Converted to throw 2023-09-10
pinentry_qt5 = pinentry-qt; # Added 2020-02-11
PlistCpp = plistcpp; # Added 2024-01-05
pocket-updater-utility = pupdate; # Added 2024-01-25
poetry2nix = throw "poetry2nix is now maintained out-of-tree. Please use https://github.com/nix-community/poetry2nix/"; # Added 2023-10-26
···
timescaledb = postgresqlPackages.timescaledb;
tsearch_extras = postgresqlPackages.tsearch_extras;
+
# pinentry was using multiple outputs, this emulates the old interface for i.e. home-manager
+
# soon: throw "'pinentry' has been removed. Pick an appropriate variant like 'pinentry-curses' or 'pinentry-gnome3'";
+
pinentry = pinentry-all // {
+
curses = pinentry-curses;
+
gtk2 = pinentry-gtk2;
+
gnome2 = pinentry-gnome3;
+
qt = pinentry-qt;
+
emacs = pinentry-emacs;
+
flavors = [ "curses" "gtk2" "gnome2" "qt" "emacs" ];
+
}; # added 2024-01-15
pinentry_curses = throw "'pinentry_curses' has been renamed to/replaced by 'pinentry-curses'"; # Converted to throw 2023-09-10
pinentry_emacs = throw "'pinentry_emacs' has been renamed to/replaced by 'pinentry-emacs'"; # Converted to throw 2023-09-10
pinentry_gnome = throw "'pinentry_gnome' has been renamed to/replaced by 'pinentry-gnome'"; # Converted to throw 2023-09-10
pinentry_gtk2 = throw "'pinentry_gtk2' has been renamed to/replaced by 'pinentry-gtk2'"; # Converted to throw 2023-09-10
pinentry_qt = throw "'pinentry_qt' has been renamed to/replaced by 'pinentry-qt'"; # Converted to throw 2023-09-10
pinentry_qt5 = pinentry-qt; # Added 2020-02-11
+
PlistCpp = plistcpp; # Added 2024-01-05
pocket-updater-utility = pupdate; # Added 2024-01-25
poetry2nix = throw "poetry2nix is now maintained out-of-tree. Please use https://github.com/nix-community/poetry2nix/"; # Added 2023-10-26
+13 -9
pkgs/top-level/all-packages.nix
···
piknik = callPackage ../tools/networking/piknik { };
-
pinentry = libsForQt5.callPackage ../tools/security/pinentry { };
-
-
pinentry-curses = (lib.getOutput "curses" pinentry);
-
pinentry-emacs = (lib.getOutput "emacs" pinentry);
-
pinentry-gtk2 = (lib.getOutput "gtk2" pinentry);
-
pinentry-qt = (lib.getOutput "qt" pinentry);
-
pinentry-gnome = (lib.getOutput "gnome3" pinentry);
pinentry_mac = callPackage ../tools/security/pinentry/mac.nix {
inherit (darwin.apple_sdk.frameworks) Cocoa;
···
bgpq4 = callPackage ../tools/networking/bgpq4 { };
-
blackbox = callPackage ../applications/version-management/blackbox { };
bleachbit = callPackage ../applications/misc/bleachbit { };
···
linkchecker = callPackage ../tools/networking/linkchecker { };
-
tomb = callPackage ../os-specific/linux/tomb { };
sccache = callPackage ../development/tools/misc/sccache { };
···
piknik = callPackage ../tools/networking/piknik { };
+
inherit (callPackages ../tools/security/pinentry { })
+
pinentry-curses
+
pinentry-emacs
+
pinentry-gtk2
+
pinentry-gnome3
+
pinentry-qt
+
pinentry-all;
pinentry_mac = callPackage ../tools/security/pinentry/mac.nix {
inherit (darwin.apple_sdk.frameworks) Cocoa;
···
bgpq4 = callPackage ../tools/networking/bgpq4 { };
+
blackbox = callPackage ../applications/version-management/blackbox {
+
pinentry = pinentry-curses;
+
};
bleachbit = callPackage ../applications/misc/bleachbit { };
···
linkchecker = callPackage ../tools/networking/linkchecker { };
+
tomb = callPackage ../os-specific/linux/tomb {
+
pinentry = pinentry-curses;
+
};
sccache = callPackage ../development/tools/misc/sccache { };
+3 -1
pkgs/top-level/python-packages.nix
···
treq = callPackage ../development/python-modules/treq { };
-
trezor-agent = callPackage ../development/python-modules/trezor-agent { };
trezor = callPackage ../development/python-modules/trezor { };
···
treq = callPackage ../development/python-modules/treq { };
+
trezor-agent = callPackage ../development/python-modules/trezor-agent {
+
pinentry = pkgs.pinentry-curses;
+
};
trezor = callPackage ../development/python-modules/trezor { };