about summary refs log tree commit diff
path: root/nixpkgs/pkgs/tools/security/bitwarden/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/tools/security/bitwarden/default.nix')
-rw-r--r--nixpkgs/pkgs/tools/security/bitwarden/default.nix72
1 files changed, 72 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/tools/security/bitwarden/default.nix b/nixpkgs/pkgs/tools/security/bitwarden/default.nix
new file mode 100644
index 000000000000..40552d149043
--- /dev/null
+++ b/nixpkgs/pkgs/tools/security/bitwarden/default.nix
@@ -0,0 +1,72 @@
+{ atomEnv
+, autoPatchelfHook
+, dpkg
+, fetchurl
+, lib
+, libsecret
+, libxshmfence
+, makeDesktopItem
+, makeWrapper
+, stdenv
+, udev
+, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "bitwarden";
+  version = "1.31.3";
+
+  src = fetchurl {
+    url = "https://github.com/bitwarden/desktop/releases/download/v${version}/Bitwarden-${version}-amd64.deb";
+    sha256 = "sha256-ASL4+FZh5st3V5Z+jsfvLD26hG9KNVI+tht7kL8lbL4=";
+  };
+
+  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;
+
+  nativeBuildInputs = [ dpkg makeWrapper autoPatchelfHook wrapGAppsHook ];
+
+  buildInputs = [ libsecret libxshmfence ] ++ atomEnv.packages;
+
+  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 = [
+    (lib.getLib udev)
+  ];
+
+  postFixup = ''
+    makeWrapper $out/opt/Bitwarden/bitwarden $out/bin/bitwarden \
+      --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ libsecret stdenv.cc.cc ] }" \
+      "''${gappsWrapperArgs[@]}"
+  '';
+
+  meta = with 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" ];
+  };
+}