1{ lib
2, rustPlatform
3, fetchFromGitHub
4, installShellFiles
5, pkg-config
6, oniguruma
7, openssl
8, stdenv
9, darwin
10, python3
11, perl
12}:
13
14rustPlatform.buildRustPackage rec {
15 pname = "bws";
16 version = "0.4.0";
17
18 src = fetchFromGitHub {
19 owner = "bitwarden";
20 repo = "sdk";
21 rev = "bws-v${version}";
22 hash = "sha256-oCAyUTVAUfXBEb2K7vkYBOzcwqCsm2wxEKsYLZcfm6w=";
23 };
24
25 cargoLock = {
26 lockFile = ./Cargo.lock;
27 outputHashes = {
28 "uniffi-0.25.2" = "sha256-YckrtociJV3VKGs5DJ0a1r1Cvq06S/mtr9iL1kLmAi8=";
29 };
30 };
31
32 nativeBuildInputs = [
33 installShellFiles
34 pkg-config
35 ] ++ lib.optionals stdenv.isLinux [
36 perl
37 ];
38
39 buildInputs =
40 [
41 oniguruma
42 ] ++ lib.optionals stdenv.isLinux [
43 openssl
44 ]
45 ++ lib.optionals stdenv.isDarwin [
46 darwin.apple_sdk.frameworks.SystemConfiguration
47 ];
48
49 env = {
50 PYO3_PYTHON = "${python3}/bin/python3";
51 RUSTONIG_SYSTEM_LIBONIG = true;
52 };
53
54 cargoBuildFlags = [ "--package" "bws" ];
55
56 cargoTestFlags = [ "--package" "bws" ];
57
58 postInstall = ''
59 installShellCompletion --cmd bws \
60 --bash <($out/bin/bws completions bash) \
61 --fish <($out/bin/bws completions fish) \
62 --zsh <($out/bin/bws completions zsh)
63 '';
64
65 meta = {
66 changelog = "https://github.com/bitwarden/sdk/blob/${src.rev}/crates/bws/CHANGELOG.md";
67 description = "Bitwarden Secrets Manager CLI";
68 homepage = "https://bitwarden.com/help/secrets-manager-cli/";
69 license = lib.licenses.unfree; # BITWARDEN SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT
70 mainProgram = "bws";
71 maintainers = with lib.maintainers; [ dit7ya ];
72 };
73}