summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--maintainers/maintainer-list.nix5
-rw-r--r--pkgs/tools/security/krunner-pass/default.nix44
-rw-r--r--pkgs/tools/security/krunner-pass/pass-path.patch13
-rw-r--r--pkgs/top-level/all-packages.nix2
4 files changed, 64 insertions, 0 deletions
diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix
index ff567e6ca0d..e161599b899 100644
--- a/maintainers/maintainer-list.nix
+++ b/maintainers/maintainer-list.nix
@@ -3986,6 +3986,11 @@
     github = "yrashk";
     name = "Yurii Rashkovskii";
   };
+  ysndr = {
+    email = "me@ysndr.de";
+    github = "ysndr";
+    name = "Yannik Sander";
+  };
   yuriaisaka = {
     email = "yuri.aisaka+nix@gmail.com";
     github = "yuriaisaka";
diff --git a/pkgs/tools/security/krunner-pass/default.nix b/pkgs/tools/security/krunner-pass/default.nix
new file mode 100644
index 00000000000..dac6df56a79
--- /dev/null
+++ b/pkgs/tools/security/krunner-pass/default.nix
@@ -0,0 +1,44 @@
+{ mkDerivation, stdenv,
+  fetchFromGitHub,
+  cmake, extra-cmake-modules, gnumake,
+
+  pass, pass-otp ? null, krunner,
+}:
+let
+  pname = "krunner-pass";
+  version = "1.3.0";
+in
+mkDerivation rec {
+  name = "${pname}-${version}";
+
+  src = fetchFromGitHub {
+    owner = "akermu";
+    repo = "krunner-pass";
+    rev = "v${version}";
+    sha256 = "032fs2174ls545kjixbhzyd65wgxkw4s5vg8b20irc5c9ak3pxm0";
+  };
+
+  buildInputs  = [
+    pass
+    pass-otp
+    krunner
+  ];
+
+  nativeBuildInputs = [cmake extra-cmake-modules gnumake];
+
+  patches = [
+    ./pass-path.patch
+  ];
+
+  CXXFLAGS = [
+    ''-DNIXPKGS_PASS=\"${stdenv.lib.getBin pass}/bin/pass\"''
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Integrates krunner with pass the unix standard password manager (https://www.passwordstore.org/)";
+    homepage = https://github.com/akermu/krunner-pass;
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ ysndr ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/tools/security/krunner-pass/pass-path.patch b/pkgs/tools/security/krunner-pass/pass-path.patch
new file mode 100644
index 00000000000..4ceb3c5d92d
--- /dev/null
+++ b/pkgs/tools/security/krunner-pass/pass-path.patch
@@ -0,0 +1,13 @@
+diff --git a/pass.cpp b/pass.cpp
+index c02f9d0..85c5b99 100644
+--- a/pass.cpp
++++ b/pass.cpp
+@@ -193,7 +193,7 @@ void Pass::run(const Plasma::RunnerContext &context, const Plasma::QueryMatch &m
+     } else {
+         args << "show" << match.text();
+     }
+-    pass->start("pass", args);
++    pass->start(NIXPKGS_PASS, args);
+
+     connect(pass, static_cast<void(QProcess::*)(int, QProcess::ExitStatus)>(&QProcess::finished),
+             [=](int exitCode, QProcess::ExitStatus exitStatus) {
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 28fd339d93f..62ad5f27dfe 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -3176,6 +3176,8 @@ with pkgs;
 
   krename = libsForQt5.callPackage ../applications/misc/krename { };
 
+  krunner-pass = libsForQt5.callPackage ../tools/security/krunner-pass { };
+
   kronometer = libsForQt5.callPackage ../tools/misc/kronometer { };
 
   elisa = libsForQt5.callPackage ../applications/audio/elisa { };