summary refs log tree commit diff
path: root/pkgs/tools/security/bitwarden/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/tools/security/bitwarden/default.nix')
-rw-r--r--pkgs/tools/security/bitwarden/default.nix87
1 files changed, 87 insertions, 0 deletions
diff --git a/pkgs/tools/security/bitwarden/default.nix b/pkgs/tools/security/bitwarden/default.nix
new file mode 100644
index 00000000000..e6874d085d2
--- /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