about summary refs log tree commit diff
path: root/nixpkgs/pkgs/tools/security/pinentry/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/tools/security/pinentry/default.nix')
-rw-r--r--nixpkgs/pkgs/tools/security/pinentry/default.nix54
1 files changed, 54 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/tools/security/pinentry/default.nix b/nixpkgs/pkgs/tools/security/pinentry/default.nix
new file mode 100644
index 000000000000..ba7ef7a3cfdd
--- /dev/null
+++ b/nixpkgs/pkgs/tools/security/pinentry/default.nix
@@ -0,0 +1,54 @@
+{ fetchurl, fetchpatch, stdenv, lib, pkgconfig
+, libgpgerror, libassuan, libcap ? null, libsecret ? null, ncurses ? null, gtk2 ? null, gcr ? null, qt ? null
+, enableEmacs ? false
+}:
+
+stdenv.mkDerivation rec {
+  name = "pinentry-1.1.0";
+
+  src = fetchurl {
+    url = "mirror://gnupg/pinentry/${name}.tar.bz2";
+    sha256 = "0w35ypl960pczg5kp6km3dyr000m1hf0vpwwlh72jjkjza36c1v8";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libgpgerror libassuan libcap libsecret gtk2 gcr ncurses qt ];
+
+  prePatch = ''
+    substituteInPlace pinentry/pinentry-curses.c --replace ncursesw ncurses
+  '';
+
+  patches = lib.optionals (gtk2 != null) [
+    (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 = [
+    (stdenv.lib.withFeature   (libcap != null)    "libcap")
+    (stdenv.lib.enableFeature (libsecret != null) "libsecret")
+    (stdenv.lib.enableFeature (ncurses != null)   "pinentry-curses")
+    (stdenv.lib.enableFeature true                "pinentry-tty")
+    (stdenv.lib.enableFeature enableEmacs         "pinentry-emacs")
+    (stdenv.lib.enableFeature (gtk2 != null)      "pinentry-gtk2")
+    (stdenv.lib.enableFeature (gcr != null)       "pinentry-gnome3")
+    (stdenv.lib.enableFeature (qt != null)        "pinentry-qt")
+
+    "--with-libassuan-prefix=${libassuan.dev}"
+    "--with-libgpg-error-prefix=${libgpgerror.dev}"
+  ];
+
+  meta = with stdenv.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 = [ maintainers.ttuegel ];
+  };
+}