diff options
Diffstat (limited to 'nixpkgs/pkgs/tools/security/pinentry')
-rw-r--r-- | nixpkgs/pkgs/tools/security/pinentry/default.nix | 54 | ||||
-rw-r--r-- | nixpkgs/pkgs/tools/security/pinentry/mac.nix | 36 |
2 files changed, 90 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 ]; + }; +} diff --git a/nixpkgs/pkgs/tools/security/pinentry/mac.nix b/nixpkgs/pkgs/tools/security/pinentry/mac.nix new file mode 100644 index 000000000000..8168aa94b3d2 --- /dev/null +++ b/nixpkgs/pkgs/tools/security/pinentry/mac.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchFromGitHub, xcbuildHook, libiconv, Cocoa, ncurses, cf-private }: + +stdenv.mkDerivation rec { + name = "pinentry-mac-0.9.4"; + + src = fetchFromGitHub { + owner = "matthewbauer"; + repo = "pinentry-mac"; + rev = "6dfef256c8ea32d642fea847f27d800f024cf51e"; + sha256 = "0g75302697gqcxyf2hyqzvcbd5pyss1bl2xvfd40wqav7dlyvj83"; + }; + + nativeBuildInputs = [ xcbuildHook ]; + + buildInputs = [ + libiconv Cocoa ncurses + # Needed for OBJC_CLASS_$_NSArray symbols. + cf-private + ]; + + installPhase = '' + mkdir -p $out/Applications + mv Products/Release/pinentry-mac.app $out/Applications + ''; + + passthru = { + binaryPath = "Applications/pinentry-mac.app/Contents/MacOS/pinentry-mac"; + }; + + meta = { + description = "Pinentry for GPG on Mac"; + license = stdenv.lib.licenses.gpl2Plus; + homepage = https://github.com/GPGTools/pinentry-mac; + platforms = stdenv.lib.platforms.darwin; + }; +} |