aboutsummaryrefslogtreecommitdiff
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.nix76
1 files changed, 76 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 00000000000..9eb670102fb
--- /dev/null
+++ b/nixpkgs/pkgs/tools/security/rbw/default.nix
@@ -0,0 +1,76 @@
+{ lib
+, rustPlatform
+, fetchCrate
+, pinentry
+, openssl
+, pkgconfig
+, makeWrapper
+, cargo
+
+# rbw-fzf
+, withFzf ? false, fzf, perl
+
+# rbw-rofi
+, withRofi ? false, rofi, xclip
+
+# pass-import
+, withPass ? false, pass
+}:
+
+rustPlatform.buildRustPackage rec {
+ pname = "rbw";
+ version = "0.4.6";
+
+ src = fetchCrate {
+ inherit version;
+ crateName = "${pname}";
+ sha256 = "0vq7cwk3i57fvn54q2rgln74j4p9vqm5zyhap94s73swjywicwk0";
+ };
+
+ cargoSha256 = "1h253ncick2v9aki5rf1bdrg5rj3h4nrvx5q01gw03cgwnqvyiiy";
+
+ nativeBuildInputs = [
+ pkgconfig
+ makeWrapper
+ ];
+
+ postPatch = ''
+ substituteInPlace src/pinentry.rs \
+ --replace "Command::new(\"pinentry\")" "Command::new(\"${pinentry}/bin/pinentry\")"
+ '' + 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 = 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";
+ license = licenses.mit;
+ maintainers = with maintainers; [ albakham luc65r ];
+ platforms = platforms.all;
+ };
+}