summaryrefslogtreecommitdiffstats
path: root/krebs/5pkgs/simple/pass/default.nix
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2018-04-10 22:06:03 +0200
committertv <tv@krebsco.de>2018-04-10 22:06:03 +0200
commit68ceb8df1318a87f0b121eda5a2a29eab360d578 (patch)
tree53cae84d294f43a0b0a7f1fe7accf0e678a674aa /krebs/5pkgs/simple/pass/default.nix
parenta426bfd1bda89cc1af901f6196a323d7be4e4865 (diff)
pass{,-otp}: init from tv
Diffstat (limited to 'krebs/5pkgs/simple/pass/default.nix')
-rw-r--r--krebs/5pkgs/simple/pass/default.nix121
1 files changed, 121 insertions, 0 deletions
diff --git a/krebs/5pkgs/simple/pass/default.nix b/krebs/5pkgs/simple/pass/default.nix
new file mode 100644
index 000000000..3b6928087
--- /dev/null
+++ b/krebs/5pkgs/simple/pass/default.nix
@@ -0,0 +1,121 @@
+{ stdenv, lib, fetchurl, fetchFromGitHub
+, coreutils, gnused, getopt, git, tree, gnupg, which, procps, qrencode
+, makeWrapper
+
+, pass-otp
+
+, 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 = "pass-${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)}
+
+ 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.
+ 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.
+ '';
+ };
+}