diff --git a/pkgs/tools/security/bitwarden/default.nix b/pkgs/tools/security/bitwarden/default.nix new file mode 100644 index 000000000000..e6874d085d29 --- /dev/null +++ b/pkgs/tools/security/bitwarden/default.nix @@ -0,0 +1,87 @@ +{ atomEnv +, autoPatchelfHook +, dpkg +, fetchurl +, libsecret +, makeDesktopItem +, makeWrapper +, stdenv +, udev +, wrapGAppsHook +}: + +let + inherit (stdenv.hostPlatform) system; + + pname = "bitwarden"; + + version = { + "x86_64-linux" = "1.15.2"; + }.${system} or ""; + + sha256 = { + "x86_64-linux" = "0yz4hkqqwq2zrdjfxk5kybhs90n80k6bkn0625m47b09lwl2di4f"; + }.${system} or ""; + + meta = with stdenv.lib; { + description = "A secure and free password manager for all of your devices"; + homepage = "https://bitwarden.com"; + license = licenses.gpl3; + maintainers = with maintainers; [ kiwi ]; + platforms = [ "x86_64-linux" ]; + }; + + linux = stdenv.mkDerivation rec { + inherit pname version meta; + + src = fetchurl { + url = "https://github.com/bitwarden/desktop/releases/download/" + + "v${version}/Bitwarden-${version}-amd64.deb"; + inherit sha256; + }; + + desktopItem = makeDesktopItem { + name = "bitwarden"; + exec = "bitwarden %U"; + icon = "bitwarden"; + comment = "A secure and free password manager for all of your devices"; + desktopName = "Bitwarden"; + categories = "Utility"; + }; + + dontBuild = true; + dontConfigure = true; + dontPatchElf = true; + dontWrapGApps = true; + + buildInputs = [ libsecret ] ++ atomEnv.packages; + + nativeBuildInputs = [ dpkg makeWrapper autoPatchelfHook wrapGAppsHook ]; + + unpackPhase = "dpkg-deb -x $src ."; + + installPhase = '' + mkdir -p "$out/bin" + cp -R "opt" "$out" + cp -R "usr/share" "$out/share" + chmod -R g-w "$out" + + # Desktop file + mkdir -p "$out/share/applications" + cp "${desktopItem}/share/applications/"* "$out/share/applications" + ''; + + runtimeDependencies = [ + udev.lib + ]; + + postFixup = '' + makeWrapper $out/opt/Bitwarden/bitwarden $out/bin/bitwarden \ + --prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [ libsecret stdenv.cc.cc ] }" \ + "''${gappsWrapperArgs[@]}" + ''; + }; + +in if stdenv.isDarwin +then throw "Bitwarden has not been packaged for macOS yet" +else linux diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c88bce35162c..20258f062d45 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -700,14 +700,16 @@ in bcachefs-tools = callPackage ../tools/filesystems/bcachefs-tools { }; + bitwarden = callPackage ../tools/security/bitwarden { }; + + bitwarden-cli = callPackage ../tools/security/bitwarden-cli { }; + bitwarden_rs = callPackage ../tools/security/bitwarden_rs { inherit (darwin.apple_sdk.frameworks) Security CoreServices; }; bitwarden_rs-vault = callPackage ../tools/security/bitwarden_rs/vault.nix { }; - bitwarden-cli = callPackage ../tools/security/bitwarden-cli { }; - bmap-tools = callPackage ../tools/misc/bmap-tools { }; bonnie = callPackage ../tools/filesystems/bonnie { };