about summary refs log tree commit diff
path: root/pkgs/by-name/ke/keeweb/package.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/by-name/ke/keeweb/package.nix')
-rw-r--r--pkgs/by-name/ke/keeweb/package.nix139
1 files changed, 139 insertions, 0 deletions
diff --git a/pkgs/by-name/ke/keeweb/package.nix b/pkgs/by-name/ke/keeweb/package.nix
new file mode 100644
index 000000000000..48b9a603d841
--- /dev/null
+++ b/pkgs/by-name/ke/keeweb/package.nix
@@ -0,0 +1,139 @@
+{
+  lib,
+  libGL,
+  stdenv,
+  fetchurl,
+  undmg,
+  dpkg,
+  autoPatchelfHook,
+  wrapGAppsHook3,
+  alsa-lib,
+  at-spi2-atk,
+  gdk-pixbuf,
+  nss,
+  udev,
+  gnome-keyring,
+  mesa,
+  gtk3,
+  libusb1,
+  libsecret,
+  libappindicator,
+  xdotool,
+  libX11,
+  libXcomposite,
+  libXext,
+  libXrandr,
+  libXScrnSaver,
+  libXtst,
+  libxshmfence,
+}:
+let
+  pname = "keeweb";
+  version = "1.18.7";
+
+  srcs = {
+    x86_64-linux = fetchurl {
+      url = "https://github.com/keeweb/keeweb/releases/download/v${version}/KeeWeb-${version}.linux.x64.deb";
+      hash = "sha256-/U+vn5TLIU9/J6cRFjuAdyGzlwC04mp4L2X2ETp+ZSE=";
+    };
+    x86_64-darwin = fetchurl {
+      url = "https://github.com/keeweb/keeweb/releases/download/v${version}/KeeWeb-${version}.mac.x64.dmg";
+      hash = "sha256-+ZFGrrw0tZ7F6lb/3iBIyGD+tp1puVhkPv10hfp6ATU=";
+    };
+    aarch64-darwin = fetchurl {
+      url = "https://github.com/keeweb/keeweb/releases/download/v${version}/KeeWeb-${version}.mac.arm64.dmg";
+      hash = "sha256-bkhwsWYLkec16vMOfXUce7jfrmI9W2xHiZvU1asebK4=";
+    };
+  };
+  src =
+    srcs.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
+
+  libraries = [
+    alsa-lib
+    at-spi2-atk
+    gdk-pixbuf
+    libGL
+    nss
+    udev
+    libX11
+    libXcomposite
+    libXext
+    libXrandr
+    libXScrnSaver
+    libXtst
+    libxshmfence
+    gnome-keyring
+    mesa
+    gtk3
+    libusb1
+    libsecret
+    libappindicator
+    xdotool
+  ];
+
+  meta = {
+    description = "Free cross-platform password manager compatible with KeePass";
+    mainProgram = "keeweb";
+    homepage = "https://keeweb.info/";
+    changelog = "https://github.com/keeweb/keeweb/blob/v${version}/release-notes.md";
+    sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ sikmir ];
+    platforms = builtins.attrNames srcs;
+  };
+in
+if stdenv.hostPlatform.isDarwin then
+  stdenv.mkDerivation {
+    inherit
+      pname
+      version
+      src
+      meta
+      ;
+
+    nativeBuildInputs = [ undmg ];
+
+    sourceRoot = ".";
+
+    installPhase = ''
+      mkdir -p $out/Applications
+      cp -r *.app $out/Applications
+    '';
+  }
+else
+  stdenv.mkDerivation {
+    inherit
+      pname
+      version
+      src
+      meta
+      ;
+
+    nativeBuildInputs = [
+      autoPatchelfHook
+      wrapGAppsHook3
+    ];
+
+    buildInputs = libraries;
+
+    unpackPhase = ''
+      ${dpkg}/bin/dpkg-deb --fsys-tarfile $src | tar --extract
+    '';
+
+    installPhase = ''
+      runHook preInstall
+
+      mkdir -p $out/bin
+      cp -r usr/share $out/share
+
+      runHook postInstall
+    '';
+
+    postFixup = ''
+      makeWrapper $out/share/keeweb-desktop/keeweb $out/bin/keeweb \
+        --argv0 "keeweb" \
+        --add-flags "$out/share/keeweb-desktop/resources/app.asar" \
+        --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath libraries}" \
+        ''${gappsWrapperArgs[@]}
+    '';
+  }