summary refs log tree commit diff
path: root/pkgs/tools/security/pass
diff options
context:
space:
mode:
authorsternenseemann <0rpkxez4ksa01gb3typccl0i@systemli.org>2021-06-11 19:27:02 +0200
committersternenseemann <0rpkxez4ksa01gb3typccl0i@systemli.org>2021-06-11 19:58:00 +0200
commit9b794eb21af842bda137bf9f1ecc95c2d2affc8c (patch)
tree7d36f21d68ee3c0ce4ba3c016c5d3fd8faf5ddb1 /pkgs/tools/security/pass
parentad502ab5c59a49eaf0c92f90201dffd4255a005a (diff)
downloadnixpkgs-9b794eb21af842bda137bf9f1ecc95c2d2affc8c.tar
nixpkgs-9b794eb21af842bda137bf9f1ecc95c2d2affc8c.tar.gz
nixpkgs-9b794eb21af842bda137bf9f1ecc95c2d2affc8c.tar.bz2
nixpkgs-9b794eb21af842bda137bf9f1ecc95c2d2affc8c.tar.lz
nixpkgs-9b794eb21af842bda137bf9f1ecc95c2d2affc8c.tar.xz
nixpkgs-9b794eb21af842bda137bf9f1ecc95c2d2affc8c.tar.zst
nixpkgs-9b794eb21af842bda137bf9f1ecc95c2d2affc8c.zip
pass: 1.7.3 -> 1.7.4
Mostly bug fixes, the following changes were required in the package:

* set-correct-program-name-for-sleep.patch needed to be rebased,
  b08781e2a6e183986eb1c24f51cdeff879b7a6af partially implemented
  the changes done in this patch, so we don't need to touch
  password-store.sh anymore.

* Remove wayland patch since it is part of the release now

* Reworked assert logic wrt to x11-/wayland- and dmenuSupport:
  passmenu now supports wayland as well via dmenu-wayland. Sadly
  the choice of menu is not changeable, pending
  https://lists.zx2c4.com/pipermail/password-store/2021-January/004363.html

* Rebased no-darwin-getopt.patch

* Note that f.el is no longer required

Reviews would be appreciated, I might've missed something.
Diffstat (limited to 'pkgs/tools/security/pass')
-rw-r--r--pkgs/tools/security/pass/clip-wayland-support.patch113
-rw-r--r--pkgs/tools/security/pass/default.nix31
-rw-r--r--pkgs/tools/security/pass/no-darwin-getopt.patch14
-rw-r--r--pkgs/tools/security/pass/set-correct-program-name-for-sleep.patch19
4 files changed, 24 insertions, 153 deletions
diff --git a/pkgs/tools/security/pass/clip-wayland-support.patch b/pkgs/tools/security/pass/clip-wayland-support.patch
deleted file mode 100644
index 7b8d2eb010d..00000000000
--- a/pkgs/tools/security/pass/clip-wayland-support.patch
+++ /dev/null
@@ -1,113 +0,0 @@
-From b0b784b1a57c0b06936e6f5d6560712b4b810cd3 Mon Sep 17 00:00:00 2001
-From: Brett Cornwall <brett@i--b.com>
-Date: Wed, 27 Feb 2019 00:08:33 -0700
-Subject: clip: Add support for wl-clipboard
-
-Edited to properly apply with
-`set-correct-program-name-for-sleep.patch`.
-
----
- README                |  4 +++-
- man/pass.1            |  5 +++++
- src/password-store.sh | 26 +++++++++++++++++++++-----
- 3 files changed, 29 insertions(+), 6 deletions(-)
-
-diff --git a/README b/README
-index 6b59965..1a46242 100644
---- a/README
-+++ b/README
-@@ -19,8 +19,10 @@ Depends on:
-   http://www.gnupg.org/
- - git
-   http://www.git-scm.com/
--- xclip
-+- xclip (for X11 environments)
-   http://sourceforge.net/projects/xclip/
-+- wl-clipboard (for wlroots Wayland-based environments)
-+  https://github.com/bugaevc/wl-clipboard
- - tree >= 1.7.0
-   http://mama.indstate.edu/users/ice/tree/
- - GNU getopt
-diff --git a/man/pass.1 b/man/pass.1
-index 01a3fbe..a555dcb 100644
---- a/man/pass.1
-+++ b/man/pass.1
-@@ -99,6 +99,8 @@ Decrypt and print a password named \fIpass-name\fP. If \fI--clip\fP or \fI-c\fP
- is specified, do not print the password but instead copy the first (or otherwise specified)
- line to the clipboard using
- .BR xclip (1)
-+or
-+.BR wl-clipboard(1)
- and then restore the clipboard after 45 (or \fIPASSWORD_STORE_CLIP_TIME\fP) seconds. If \fI--qrcode\fP
- or \fI-q\fP is specified, do not print the password but instead display a QR code using
- .BR qrencode (1)
-@@ -132,6 +134,8 @@ in generating passwords can be changed with the \fIPASSWORD_STORE_CHARACTER_SET\
- If \fI--clip\fP or \fI-c\fP is specified, do not print the password but instead copy
- it to the clipboard using
- .BR xclip (1)
-+or
-+.BR wl-clipboard(1)
- and then restore the clipboard after 45 (or \fIPASSWORD_STORE_CLIP_TIME\fP) seconds. If \fI--qrcode\fP
- or \fI-q\fP is specified, do not print the password but instead display a QR code using
- .BR qrencode (1)
-@@ -466,6 +470,7 @@ The location of the text editor used by \fBedit\fP.
- .BR tr (1),
- .BR git (1),
- .BR xclip (1),
-+.BR wl-clipboard (1),
- .BR qrencode (1).
- 
- .SH AUTHOR
-diff --git a/src/password-store.sh b/src/password-store.sh
-index d89d455..284eabf 100755
---- a/src/password-store.sh
-+++ b/src/password-store.sh
-@@ -152,16 +152,32 @@ check_sneaky_paths() {
- #
- 
- clip() {
-+	if [[ -n $WAYLAND_DISPLAY ]]; then
-+		local copy_cmd=( wl-copy )
-+		local paste_cmd=( wl-paste -n )
-+		if [[ $X_SELECTION == primary ]]; then
-+			copy_cmd+=( --primary )
-+			paste_cmd+=( --primary )
-+		fi
-+		local display_name="$WAYLAND_DISPLAY"
-+	elif [[ -n $DISPLAY ]]; then
-+		local copy_cmd=( xclip -selection "$X_SELECTION" )
-+		local paste_cmd=( xclip -o -selection "$X_SELECTION" )
-+		local display_name="$DISPLAY"
-+	else
-+		die "Error: No X11 or Wayland display detected"
-+	fi
-+	local sleep_argv0="password store sleep on display $display_name"
-+
- 	# This base64 business is because bash cannot store binary data in a shell
- 	# variable. Specifically, it cannot store nulls nor (non-trivally) store
- 	# trailing new lines.
--	local sleep_argv0="password store sleep on display $DISPLAY"
- 	pkill -P $(pgrep -f "^$sleep_argv0") 2>/dev/null && sleep 0.5
--	local before="$(xclip -o -selection "$X_SELECTION" 2>/dev/null | $BASE64)"
--	echo -n "$1" | xclip -selection "$X_SELECTION" || die "Error: Could not copy data to the clipboard"
-+	local before="$("${paste_cmd[@]}" 2>/dev/null | $BASE64)"
-+	echo -n "$1" | "${copy_cmd[@]}" || die "Error: Could not copy data to the clipboard"
- 	(
- 		( exec -a "$sleep_argv0" bash <(echo trap 'kill %1' TERM\; sleep "$CLIP_TIME & wait") )
--		local now="$(xclip -o -selection "$X_SELECTION" | $BASE64)"
-+		local now="$("${paste_cmd[@]}" | $BASE64)"
- 		[[ $now != $(echo -n "$1" | $BASE64) ]] && before="$now"
- 
- 		# It might be nice to programatically check to see if klipper exists,
-@@ -173,7 +189,7 @@ clip() {
- 		# so we axe it here:
- 		qdbus org.kde.klipper /klipper org.kde.klipper.klipper.clearClipboardHistory &>/dev/null
- 
--		echo "$before" | $BASE64 -d | xclip -selection "$X_SELECTION"
-+		echo "$before" | $BASE64 -d | "${copy_cmd[@]}"
- 	) >/dev/null 2>&1 & disown
- 	echo "Copied $2 to clipboard. Will clear in $CLIP_TIME seconds."
- }
--- 
-cgit v1.2.1-28-gf32c
-
diff --git a/pkgs/tools/security/pass/default.nix b/pkgs/tools/security/pass/default.nix
index a7872c50fb3..7468b5dcc8d 100644
--- a/pkgs/tools/security/pass/default.nix
+++ b/pkgs/tools/security/pass/default.nix
@@ -3,8 +3,9 @@
 , which, procps , qrencode , makeWrapper, pass, symlinkJoin
 
 , xclip ? null, xdotool ? null, dmenu ? null
-, x11Support ? !stdenv.isDarwin , dmenuSupport ? x11Support
+, x11Support ? !stdenv.isDarwin , dmenuSupport ? (x11Support || waylandSupport)
 , waylandSupport ? false, wl-clipboard ? null
+, ydotool ? null, dmenu-wayland ? null
 
 # For backwards-compatibility
 , tombPluginSupport ? false
@@ -13,12 +14,14 @@
 with lib;
 
 assert x11Support -> xclip != null;
+assert waylandSupport -> wl-clipboard != null;
 
-assert dmenuSupport -> dmenu != null
-                       && xdotool != null
-                       && x11Support;
+assert dmenuSupport -> x11Support || waylandSupport;
+assert dmenuSupport && x11Support
+  -> dmenu != null && xdotool != null;
+assert dmenuSupport && waylandSupport
+  -> dmenu-wayland != null && ydotool != null;
 
-assert waylandSupport -> wl-clipboard != null;
 
 let
   passExtensions = import ./extensions { inherit pkgs; };
@@ -52,21 +55,18 @@ let
 in
 
 stdenv.mkDerivation rec {
-  version = "1.7.3";
+  version = "1.7.4";
   pname = "password-store";
 
   src = fetchurl {
     url    = "https://git.zx2c4.com/password-store/snapshot/${pname}-${version}.tar.xz";
-    sha256 = "1x53k5dn3cdmvy8m4fqdld4hji5n676ksl0ql4armkmsds26av1b";
+    sha256 = "1h4k6w7g8pr169p5w9n6mkdhxl3pw51zphx7www6pvgjb7vgmafg";
   };
 
   patches = [
     ./set-correct-program-name-for-sleep.patch
     ./extension-dir.patch
-  ] ++ lib.optional stdenv.isDarwin ./no-darwin-getopt.patch
-    # TODO (@Ma27) this patch adds support for wl-clipboard and can be removed during the next
-    # version bump.
-    ++ lib.optional waylandSupport ./clip-wayland-support.patch;
+  ] ++ lib.optional stdenv.isDarwin ./no-darwin-getopt.patch;
 
   nativeBuildInputs = [ makeWrapper ];
 
@@ -74,8 +74,7 @@ stdenv.mkDerivation rec {
 
   postInstall = ''
     # Install Emacs Mode. NOTE: We can't install the necessary
-    # dependencies (s.el and f.el) here. The user has to do this
-    # himself.
+    # dependencies (s.el) here. The user has to do this themselves.
     mkdir -p "$out/share/emacs/site-lisp"
     cp "contrib/emacs/password-store.el" "$out/share/emacs/site-lisp/"
   '' + optionalString dmenuSupport ''
@@ -96,8 +95,10 @@ stdenv.mkDerivation rec {
     procps
   ] ++ optional stdenv.isDarwin openssl
     ++ optional x11Support xclip
-    ++ optionals dmenuSupport [ xdotool dmenu ]
-    ++ optional waylandSupport wl-clipboard);
+    ++ optional waylandSupport wl-clipboard
+    ++ optionals (waylandSupport && dmenuSupport) [ ydotool dmenu-wayland ]
+    ++ optionals (x11Support && dmenuSupport) [ xdotool dmenu ]
+  );
 
   postFixup = ''
     # Fix program name in --help
diff --git a/pkgs/tools/security/pass/no-darwin-getopt.patch b/pkgs/tools/security/pass/no-darwin-getopt.patch
index e8f7e138ff0..7e8b66dd7f1 100644
--- a/pkgs/tools/security/pass/no-darwin-getopt.patch
+++ b/pkgs/tools/security/pass/no-darwin-getopt.patch
@@ -1,9 +1,11 @@
-diff -Naur password-store-1.6.5-orig/src/platform/darwin.sh password-store-1.6.5/src/platform/darwin.sh
---- password-store-1.6.5-orig/src/platform/darwin.sh	2015-01-28 16:43:02.000000000 +0000
-+++ password-store-1.6.5/src/platform/darwin.sh	2015-02-15 16:09:02.000000000 +0000
-@@ -31,5 +31,4 @@
- 	mount -t hfs -o noatime -o nobrowse "$DARWIN_RAMDISK_DEV" "$SECURE_TMPDIR" || die "Error: could not mount filesystem on ramdisk."
+diff --git a/src/platform/darwin.sh b/src/platform/darwin.sh
+index f6cc471..e2e8bba 100644
+--- a/src/platform/darwin.sh
++++ b/src/platform/darwin.sh
+@@ -39,6 +39,5 @@ qrcode() {
+ 	fi
  }
  
--GETOPT="$(brew --prefix gnu-getopt 2>/dev/null || { which port &>/dev/null && echo /opt/local; } || echo /usr/local)/bin/getopt"
+-GETOPT="$({ test -x /usr/local/opt/gnu-getopt/bin/getopt && echo /usr/local/opt/gnu-getopt; } || brew --prefix gnu-getopt 2>/dev/null || { which port &>/dev/null && echo /opt/local; } || echo /usr/local)/bin/getopt"
  SHRED="srm -f -z"
+ BASE64="openssl base64"
diff --git a/pkgs/tools/security/pass/set-correct-program-name-for-sleep.patch b/pkgs/tools/security/pass/set-correct-program-name-for-sleep.patch
index f3a844ad2d6..a71a279c1ef 100644
--- a/pkgs/tools/security/pass/set-correct-program-name-for-sleep.patch
+++ b/pkgs/tools/security/pass/set-correct-program-name-for-sleep.patch
@@ -5,29 +5,10 @@ Subject: [PATCH] Patch the clip() function to work even when using
  single-binary coreutils
 
 ---
- src/password-store.sh  | 4 ++--
  src/platform/cygwin.sh | 4 ++--
  src/platform/darwin.sh | 4 ++--
  3 files changed, 6 insertions(+), 6 deletions(-)
 
-diff --git a/src/password-store.sh b/src/password-store.sh
-index 7264ffc..68551a4 100755
---- a/src/password-store.sh
-+++ b/src/password-store.sh
-@@ -155,11 +155,11 @@ clip() {
- 	# variable. Specifically, it cannot store nulls nor (non-trivally) store
- 	# trailing new lines.
- 	local sleep_argv0="password store sleep on display $DISPLAY"
--	pkill -f "^$sleep_argv0" 2>/dev/null && sleep 0.5
-+	pkill -P $(pgrep -f "^$sleep_argv0") 2>/dev/null && sleep 0.5
- 	local before="$(xclip -o -selection "$X_SELECTION" 2>/dev/null | $BASE64)"
- 	echo -n "$1" | xclip -selection "$X_SELECTION" || die "Error: Could not copy data to the clipboard"
- 	(
--		( exec -a "$sleep_argv0" bash <<<"trap 'kill %1' TERM; sleep '$CLIP_TIME' & wait" )
-+		( exec -a "$sleep_argv0" bash <(echo trap 'kill %1' TERM\; sleep "$CLIP_TIME & wait") )
- 		local now="$(xclip -o -selection "$X_SELECTION" | $BASE64)"
- 		[[ $now != $(echo -n "$1" | $BASE64) ]] && before="$now"
- 
 diff --git a/src/platform/cygwin.sh b/src/platform/cygwin.sh
 index 5a8d5ea..423e0ce 100644
 --- a/src/platform/cygwin.sh