From 81b001e825e08007b8751d128b6388a50208ed7c Mon Sep 17 00:00:00 2001 From: tv Date: Tue, 10 Apr 2018 13:25:51 +0200 Subject: [PATCH 1/5] tv pass: init at 1.7.1 Import from nixpkgs 09bca91e3b5a18d7f37f7632175ac71f2bf369ff. --- tv/5pkgs/simple/pass/default.nix | 111 ++++++++++++++++++ tv/5pkgs/simple/pass/no-darwin-getopt.patch | 9 ++ tv/5pkgs/simple/pass/rofi-pass.nix | 57 +++++++++ .../set-correct-program-name-for-sleep.patch | 69 +++++++++++ 4 files changed, 246 insertions(+) create mode 100644 tv/5pkgs/simple/pass/default.nix create mode 100644 tv/5pkgs/simple/pass/no-darwin-getopt.patch create mode 100644 tv/5pkgs/simple/pass/rofi-pass.nix create mode 100644 tv/5pkgs/simple/pass/set-correct-program-name-for-sleep.patch diff --git a/tv/5pkgs/simple/pass/default.nix b/tv/5pkgs/simple/pass/default.nix new file mode 100644 index 000000000..ad2afa8ed --- /dev/null +++ b/tv/5pkgs/simple/pass/default.nix @@ -0,0 +1,111 @@ +{ stdenv, lib, fetchurl, fetchFromGitHub +, coreutils, gnused, getopt, git, tree, gnupg, which, procps, qrencode +, makeWrapper + +, xclip ? null, xdotool ? null, dmenu ? null +, x11Support ? !stdenv.isDarwin +, tombPluginSupport ? false, tomb +}: + +with lib; + +assert x11Support -> xclip != null + && xdotool != null + && dmenu != null; + +let + plugins = map (p: (fetchFromGitHub { + owner = "roddhjav"; + repo = "pass-${p.name}"; + inherit (p) rev sha256; + })) + ([ + { name = "import"; + rev = "491935bd275f29ceac2b876b3a288011d1ce31e7"; + sha256 = "02mbh05ab8h7kc30hz718d1d1vkjz43b96c7p0xnd92610d2q66q"; } + { name = "update"; + rev = "cf576c9036fd18efb9ed29e0e9f811207b556fde"; + sha256 = "1hhbrg6a2walrvla6q4cd3pgrqbcrf9brzjkb748735shxfn52hd"; } + ] ++ stdenv.lib.optional tombPluginSupport { + name = "tomb"; + rev = "3368134898a42c1b758fabac625ec240e125c6be"; + sha256 = "0qqmxfg4w3r088qhlkhs44036mya82vjflsjjhw2hk8y0wd2i6ds"; } + ); + +in stdenv.mkDerivation rec { + version = "1.7.1"; + name = "password-store-${version}"; + + src = fetchurl { + url = "http://git.zx2c4.com/password-store/snapshot/${name}.tar.xz"; + sha256 = "0scqkpll2q8jhzcgcsh9kqz0gwdpvynivqjmmbzax2irjfaiklpn"; + }; + + patches = [ ./set-correct-program-name-for-sleep.patch + ] ++ stdenv.lib.optional stdenv.isDarwin ./no-darwin-getopt.patch; + + nativeBuildInputs = [ makeWrapper ]; + + installFlags = [ "PREFIX=$(out)" "WITH_ALLCOMP=yes" ]; + + postInstall = '' + # plugins + ${stdenv.lib.concatStringsSep "\n" (map (plugin: '' + pushd ${plugin} + PREFIX=$out make install + popd + '') plugins)} + + # Install Emacs Mode. NOTE: We can't install the necessary + # dependencies (s.el and f.el) here. The user has to do this + # himself. + mkdir -p "$out/share/emacs/site-lisp" + cp "contrib/emacs/password-store.el" "$out/share/emacs/site-lisp/" + '' + optionalString x11Support '' + cp "contrib/dmenu/passmenu" "$out/bin/" + ''; + + wrapperPath = with stdenv.lib; makeBinPath ([ + coreutils + getopt + git + gnupg + gnused + tree + which + qrencode + ] ++ optional tombPluginSupport tomb + ++ optional stdenv.isLinux procps + ++ ifEnable x11Support [ dmenu xclip xdotool ]); + + postFixup = '' + # Fix program name in --help + substituteInPlace $out/bin/pass \ + --replace 'PROGRAM="''${0##*/}"' "PROGRAM=pass" + + # Ensure all dependencies are in PATH + wrapProgram $out/bin/pass \ + --prefix PATH : "${wrapperPath}" + '' + stdenv.lib.optionalString x11Support '' + # We just wrap passmenu with the same PATH as pass. It doesn't + # need all the tools in there but it doesn't hurt either. + wrapProgram $out/bin/passmenu \ + --prefix PATH : "$out/bin:${wrapperPath}" + ''; + + meta = with stdenv.lib; { + description = "Stores, retrieves, generates, and synchronizes passwords securely"; + homepage = https://www.passwordstore.org/; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ lovek323 the-kenny fpletz ]; + platforms = platforms.unix; + + longDescription = '' + pass is a very simple password store that keeps passwords inside gpg2 + encrypted files inside a simple directory tree residing at + ~/.password-store. The pass utility provides a series of commands for + manipulating the password store, allowing the user to add, remove, edit, + synchronize, generate, and manipulate passwords. + ''; + }; +} diff --git a/tv/5pkgs/simple/pass/no-darwin-getopt.patch b/tv/5pkgs/simple/pass/no-darwin-getopt.patch new file mode 100644 index 000000000..e8f7e138f --- /dev/null +++ b/tv/5pkgs/simple/pass/no-darwin-getopt.patch @@ -0,0 +1,9 @@ +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." + } + +-GETOPT="$(brew --prefix gnu-getopt 2>/dev/null || { which port &>/dev/null && echo /opt/local; } || echo /usr/local)/bin/getopt" + SHRED="srm -f -z" diff --git a/tv/5pkgs/simple/pass/rofi-pass.nix b/tv/5pkgs/simple/pass/rofi-pass.nix new file mode 100644 index 000000000..61f51973e --- /dev/null +++ b/tv/5pkgs/simple/pass/rofi-pass.nix @@ -0,0 +1,57 @@ +{ stdenv, fetchFromGitHub, pass, rofi, coreutils, utillinux, xdotool, gnugrep +, libnotify, pwgen, findutils, gawk, gnused, xclip, makeWrapper +}: + +stdenv.mkDerivation rec { + name = "rofi-pass-${version}"; + version = "1.5.3"; + + src = fetchFromGitHub { + owner = "carnager"; + repo = "rofi-pass"; + rev = version; + sha256 = "1fn1j2rf3abc5qb44zfc8z8ffw6rva4xfp7597hwr1g3szacazpq"; + }; + + buildInputs = [ makeWrapper ]; + + dontBuild = true; + + installPhase = '' + mkdir -p $out/bin + cp -a rofi-pass $out/bin/rofi-pass + + mkdir -p $out/share/doc/rofi-pass/ + cp -a config.example $out/share/doc/rofi-pass/config.example + ''; + + wrapperPath = with stdenv.lib; makeBinPath [ + coreutils + findutils + gawk + gnugrep + gnused + libnotify + pass + pwgen + rofi + utillinux + xclip + xdotool + ]; + + fixupPhase = '' + patchShebangs $out/bin + + wrapProgram $out/bin/rofi-pass \ + --prefix PATH : "${wrapperPath}" + ''; + + meta = { + description = "A script to make rofi work with password-store"; + homepage = https://github.com/carnager/rofi-pass; + maintainers = with stdenv.lib.maintainers; [ the-kenny garbas ]; + license = stdenv.lib.licenses.gpl3; + platforms = with stdenv.lib.platforms; linux; + }; +} diff --git a/tv/5pkgs/simple/pass/set-correct-program-name-for-sleep.patch b/tv/5pkgs/simple/pass/set-correct-program-name-for-sleep.patch new file mode 100644 index 000000000..782e06e20 --- /dev/null +++ b/tv/5pkgs/simple/pass/set-correct-program-name-for-sleep.patch @@ -0,0 +1,69 @@ +From 25b44e00ed5df8ffe2782d38ad5cd9f514379599 Mon Sep 17 00:00:00 2001 +From: "Andrew R. M" +Date: Sat, 8 Apr 2017 13:50:01 -0400 +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 6a4172d..4dbd6b8 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 6e5dd86..f3574c4 100644 +--- a/src/platform/cygwin.sh ++++ b/src/platform/cygwin.sh +@@ -3,11 +3,11 @@ + + clip() { + 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="$(base64 < /dev/clipboard)" + echo -n "$1" > /dev/clipboard + ( +- ( exec -a "$sleep_argv0" sleep "$CLIP_TIME" ) ++ ( exec -a "$sleep_argv0" bash <(echo sleep "$CLIP_TIME") ) + local now="$(base64 < /dev/clipboard)" + [[ $now != $(echo -n "$1" | base64) ]] && before="$now" + echo "$before" | base64 -d > /dev/clipboard +diff --git a/src/platform/darwin.sh b/src/platform/darwin.sh +index 86eb325..deb04c4 100644 +--- a/src/platform/darwin.sh ++++ b/src/platform/darwin.sh +@@ -3,11 +3,11 @@ + + clip() { + local sleep_argv0="password store sleep for user $(id -u)" +- pkill -f "^$sleep_argv0" 2>/dev/null && sleep 0.5 ++ pkill -P $(pgrep -f "^$sleep_argv0") 2>/dev/null && sleep 0.5 + local before="$(pbpaste | openssl base64)" + echo -n "$1" | pbcopy + ( +- ( exec -a "$sleep_argv0" sleep "$CLIP_TIME" ) ++ ( exec -a "$sleep_argv0" bash <(echo sleep "$CLIP_TIME") ) + local now="$(pbpaste | openssl base64)" + [[ $now != $(echo -n "$1" | openssl base64) ]] && before="$now" + echo "$before" | openssl base64 -d | pbcopy +-- +2.12.2 + From 5bf85816d3c8b0e37a6f6a6ff2eaafc059b5199c Mon Sep 17 00:00:00 2001 From: tv Date: Tue, 10 Apr 2018 13:26:50 +0200 Subject: [PATCH 2/5] tv pass-otp: init at 1.1.0 Import from nixpkgs 09bca91e3b5a18d7f37f7632175ac71f2bf369ff. --- tv/5pkgs/simple/pass-otp/default.nix | 30 ++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 tv/5pkgs/simple/pass-otp/default.nix diff --git a/tv/5pkgs/simple/pass-otp/default.nix b/tv/5pkgs/simple/pass-otp/default.nix new file mode 100644 index 000000000..7f0f44bdf --- /dev/null +++ b/tv/5pkgs/simple/pass-otp/default.nix @@ -0,0 +1,30 @@ +{ stdenv, pass, fetchFromGitHub, oathToolkit }: +stdenv.mkDerivation rec { + name = "pass-otp-${version}"; + version = "1.1.0"; + + src = fetchFromGitHub { + owner = "tadfisher"; + repo = "pass-otp"; + rev = "v${version}"; + sha256 = "1cgj4zc8fq88n3h6c0vkv9i5al785mdprpgpbv5m22dz9p1wqvbb"; + }; + + buildInputs = [ pass oathToolkit ]; + + patchPhase = '' + sed -i -e 's|OATH=\$(which oathtool)|OATH=${oathToolkit}/bin/oathtool|' otp.bash + ''; + + installPhase = '' + make PREFIX=$out install + ''; + + meta = with stdenv.lib; { + description = "A pass extension for managing one-time-password (OTP) tokens"; + homepage = https://github.com/tadfisher/pass-otp; + license = licenses.gpl3; + maintainers = with maintainers; [ jwiegley tadfisher ]; + platforms = platforms.unix; + }; +} From a426bfd1bda89cc1af901f6196a323d7be4e4865 Mon Sep 17 00:00:00 2001 From: tv Date: Tue, 10 Apr 2018 13:27:34 +0200 Subject: [PATCH 3/5] tv: make pass and pass-otp work together pass's name argument has been modified to work with tv/5pkgs/simple/default.nix's callPackage. --- tv/5pkgs/simple/pass-otp/default.nix | 4 ++-- tv/5pkgs/simple/pass/default.nix | 12 +++++++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/tv/5pkgs/simple/pass-otp/default.nix b/tv/5pkgs/simple/pass-otp/default.nix index 7f0f44bdf..33411180a 100644 --- a/tv/5pkgs/simple/pass-otp/default.nix +++ b/tv/5pkgs/simple/pass-otp/default.nix @@ -1,4 +1,4 @@ -{ stdenv, pass, fetchFromGitHub, oathToolkit }: +{ stdenv, fetchFromGitHub, oathToolkit }: stdenv.mkDerivation rec { name = "pass-otp-${version}"; version = "1.1.0"; @@ -10,7 +10,7 @@ stdenv.mkDerivation rec { sha256 = "1cgj4zc8fq88n3h6c0vkv9i5al785mdprpgpbv5m22dz9p1wqvbb"; }; - buildInputs = [ pass oathToolkit ]; + buildInputs = [ oathToolkit ]; patchPhase = '' sed -i -e 's|OATH=\$(which oathtool)|OATH=${oathToolkit}/bin/oathtool|' otp.bash diff --git a/tv/5pkgs/simple/pass/default.nix b/tv/5pkgs/simple/pass/default.nix index ad2afa8ed..3b6928087 100644 --- a/tv/5pkgs/simple/pass/default.nix +++ b/tv/5pkgs/simple/pass/default.nix @@ -2,6 +2,8 @@ , coreutils, gnused, getopt, git, tree, gnupg, which, procps, qrencode , makeWrapper +, pass-otp + , xclip ? null, xdotool ? null, dmenu ? null , x11Support ? !stdenv.isDarwin , tombPluginSupport ? false, tomb @@ -34,7 +36,7 @@ let in stdenv.mkDerivation rec { version = "1.7.1"; - name = "password-store-${version}"; + name = "pass-${version}"; src = fetchurl { url = "http://git.zx2c4.com/password-store/snapshot/${name}.tar.xz"; @@ -56,6 +58,14 @@ in stdenv.mkDerivation rec { popd '') plugins)} + ln -s \ + ${pass-otp}/lib/password-store/extensions/otp.bash \ + $out/lib/password-store/extensions/ + + ln -s \ + ${pass-otp}/share/man/man1/pass-otp.1.gz \ + $out/share/man/man1/ + # Install Emacs Mode. NOTE: We can't install the necessary # dependencies (s.el and f.el) here. The user has to do this # himself. From 68ceb8df1318a87f0b121eda5a2a29eab360d578 Mon Sep 17 00:00:00 2001 From: tv Date: Tue, 10 Apr 2018 22:06:03 +0200 Subject: [PATCH 4/5] pass{,-otp}: init from tv --- {tv => krebs}/5pkgs/simple/pass-otp/default.nix | 0 {tv => krebs}/5pkgs/simple/pass/default.nix | 0 {tv => krebs}/5pkgs/simple/pass/no-darwin-getopt.patch | 0 {tv => krebs}/5pkgs/simple/pass/rofi-pass.nix | 0 .../5pkgs/simple/pass/set-correct-program-name-for-sleep.patch | 0 5 files changed, 0 insertions(+), 0 deletions(-) rename {tv => krebs}/5pkgs/simple/pass-otp/default.nix (100%) rename {tv => krebs}/5pkgs/simple/pass/default.nix (100%) rename {tv => krebs}/5pkgs/simple/pass/no-darwin-getopt.patch (100%) rename {tv => krebs}/5pkgs/simple/pass/rofi-pass.nix (100%) rename {tv => krebs}/5pkgs/simple/pass/set-correct-program-name-for-sleep.patch (100%) diff --git a/tv/5pkgs/simple/pass-otp/default.nix b/krebs/5pkgs/simple/pass-otp/default.nix similarity index 100% rename from tv/5pkgs/simple/pass-otp/default.nix rename to krebs/5pkgs/simple/pass-otp/default.nix diff --git a/tv/5pkgs/simple/pass/default.nix b/krebs/5pkgs/simple/pass/default.nix similarity index 100% rename from tv/5pkgs/simple/pass/default.nix rename to krebs/5pkgs/simple/pass/default.nix diff --git a/tv/5pkgs/simple/pass/no-darwin-getopt.patch b/krebs/5pkgs/simple/pass/no-darwin-getopt.patch similarity index 100% rename from tv/5pkgs/simple/pass/no-darwin-getopt.patch rename to krebs/5pkgs/simple/pass/no-darwin-getopt.patch diff --git a/tv/5pkgs/simple/pass/rofi-pass.nix b/krebs/5pkgs/simple/pass/rofi-pass.nix similarity index 100% rename from tv/5pkgs/simple/pass/rofi-pass.nix rename to krebs/5pkgs/simple/pass/rofi-pass.nix diff --git a/tv/5pkgs/simple/pass/set-correct-program-name-for-sleep.patch b/krebs/5pkgs/simple/pass/set-correct-program-name-for-sleep.patch similarity index 100% rename from tv/5pkgs/simple/pass/set-correct-program-name-for-sleep.patch rename to krebs/5pkgs/simple/pass/set-correct-program-name-for-sleep.patch From 554026a7796e59fcbc82fa44c11636e56a25a9f2 Mon Sep 17 00:00:00 2001 From: tv Date: Tue, 17 Apr 2018 20:17:29 +0200 Subject: [PATCH 5/5] font-size: init from tv --- {tv => krebs}/5pkgs/simple/font-size.nix | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {tv => krebs}/5pkgs/simple/font-size.nix (100%) diff --git a/tv/5pkgs/simple/font-size.nix b/krebs/5pkgs/simple/font-size.nix similarity index 100% rename from tv/5pkgs/simple/font-size.nix rename to krebs/5pkgs/simple/font-size.nix