about summary refs log tree commit diff
path: root/nixpkgs/pkgs/tools/security/rbw/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/tools/security/rbw/default.nix')
-rw-r--r--nixpkgs/pkgs/tools/security/rbw/default.nix83
1 files changed, 83 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/tools/security/rbw/default.nix b/nixpkgs/pkgs/tools/security/rbw/default.nix
new file mode 100644
index 000000000000..96616987510d
--- /dev/null
+++ b/nixpkgs/pkgs/tools/security/rbw/default.nix
@@ -0,0 +1,83 @@
+{ lib
+, stdenv
+, rustPlatform
+, fetchCrate
+, openssl
+, pkg-config
+, makeWrapper
+, installShellFiles
+, Security
+, libiconv
+
+# rbw-fzf
+, withFzf ? false, fzf, perl
+
+# rbw-rofi
+, withRofi ? false, rofi, xclip
+
+# pass-import
+, withPass ? false, pass
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "rbw";
+  version = "1.2.0";
+
+  src = fetchCrate {
+    inherit version;
+    crateName = pname;
+    sha256 = "14cnqc5cf6qm2g9ypv2pbqbvymawyrqn3fc778labgqg24khqcyq";
+  };
+
+  cargoSha256 = "0izn5bcvk1rx69sjwyfc49nmvw7k0jysqb0bpdpwdliaa06ggl86";
+
+  nativeBuildInputs = [
+    pkg-config
+    makeWrapper
+    installShellFiles
+  ];
+
+  buildInputs = lib.optionals stdenv.isDarwin [ Security libiconv ];
+
+  postPatch = lib.optionalString withFzf ''
+    patchShebangs bin/rbw-fzf
+    substituteInPlace bin/rbw-fzf \
+        --replace fzf ${fzf}/bin/fzf \
+        --replace perl ${perl}/bin/perl
+  '' + lib.optionalString withRofi ''
+    patchShebangs bin/rbw-rofi
+    substituteInPlace bin/rbw-rofi \
+        --replace rofi ${rofi}/bin/rofi \
+        --replace xclip ${xclip}/bin/xclip
+  '' + lib.optionalString withRofi ''
+    patchShebangs bin/pass-import
+    substituteInPlace bin/pass-import \
+        --replace pass ${pass}/bin/pass
+  '';
+
+  preConfigure = ''
+    export OPENSSL_INCLUDE_DIR="${openssl.dev}/include"
+    export OPENSSL_LIB_DIR="${openssl.out}/lib"
+  '';
+
+  postInstall = ''
+    for shell in bash zsh fish; do
+      $out/bin/rbw gen-completions $shell > rbw.$shell
+      installShellCompletion rbw.$shell
+    done
+  '' + lib.optionalString withFzf ''
+    cp bin/rbw-fzf $out/bin
+  '' + lib.optionalString withRofi ''
+    cp bin/rbw-rofi $out/bin
+  '' + lib.optionalString withPass ''
+    cp bin/pass-import $out/bin
+  '';
+
+  meta = with lib; {
+    description = "Unofficial command line client for Bitwarden";
+    homepage = "https://crates.io/crates/rbw";
+    changelog = "https://git.tozt.net/rbw/plain/CHANGELOG.md?id=${version}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ albakham luc65r marsam ];
+  };
+}