Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / applications / misc / keeweb / default.nix
blob7af5465ad9e0315faf744969ad0cd9cc588d346d
1 { lib
2 , stdenv
3 , fetchurl
4 , undmg
5 , dpkg
6 , autoPatchelfHook
7 , wrapGAppsHook
8 , makeWrapper
9 , alsa-lib
10 , at-spi2-atk
11 , gdk-pixbuf
12 , glibc
13 , nss
14 , udev
15 , xorg
16 , gnome
17 , mesa
18 , gtk3
19 , libusb1
20 , libsecret
21 , libappindicator
22 , xdotool
24 let
25   pname = "keeweb";
26   version = "1.18.7";
28   srcs = {
29     x86_64-linux = fetchurl {
30       url = "https://github.com/keeweb/keeweb/releases/download/v${version}/KeeWeb-${version}.linux.x64.deb";
31       hash = "sha256-/U+vn5TLIU9/J6cRFjuAdyGzlwC04mp4L2X2ETp+ZSE=";
32     };
33     x86_64-darwin = fetchurl {
34       url = "https://github.com/keeweb/keeweb/releases/download/v${version}/KeeWeb-${version}.mac.x64.dmg";
35       hash = "sha256-+ZFGrrw0tZ7F6lb/3iBIyGD+tp1puVhkPv10hfp6ATU=";
36     };
37     aarch64-darwin = fetchurl {
38       url = "https://github.com/keeweb/keeweb/releases/download/v${version}/KeeWeb-${version}.mac.arm64.dmg";
39       hash = "sha256-bkhwsWYLkec16vMOfXUce7jfrmI9W2xHiZvU1asebK4=";
40     };
41   };
42   src = srcs.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
44   libraries = [
45     alsa-lib
46     at-spi2-atk
47     gdk-pixbuf
48     nss
49     udev
50     xorg.libX11
51     xorg.libXcomposite
52     xorg.libXext
53     xorg.libXrandr
54     xorg.libXScrnSaver
55     xorg.libXtst
56     xorg.libxshmfence
57     gnome.gnome-keyring
58     mesa
59     gtk3
60     libusb1
61     libsecret
62     libappindicator
63     xdotool
64   ];
66   meta = with lib; {
67     description = "Free cross-platform password manager compatible with KeePass";
68     homepage = "https://keeweb.info/";
69     changelog = "https://github.com/keeweb/keeweb/blob/v${version}/release-notes.md";
70     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
71     license = licenses.mit;
72     maintainers = with maintainers; [ sikmir ];
73     platforms = builtins.attrNames srcs;
74   };
76 if stdenv.isDarwin
77 then stdenv.mkDerivation {
78   inherit pname version src meta;
80   nativeBuildInputs = [ undmg ];
82   sourceRoot = ".";
84   installPhase = ''
85     mkdir -p $out/Applications
86     cp -r *.app $out/Applications
87   '';
89 else stdenv.mkDerivation {
90   inherit pname version src meta;
92   nativeBuildInputs = [
93     autoPatchelfHook
94     wrapGAppsHook
95     makeWrapper
96   ];
98   buildInputs = libraries;
100   unpackPhase = ''
101     ${dpkg}/bin/dpkg-deb --fsys-tarfile $src | tar --extract
102   '';
104   installPhase = ''
105     runHook preInstall
107     mkdir -p $out/bin
108     cp -r usr/share $out/share
110     makeWrapper $out/share/keeweb-desktop/keeweb $out/bin/keeweb \
111       --argv0 "keeweb" \
112       --add-flags "$out/share/keeweb-desktop/resources/app.asar" \
113       --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath libraries}"
115     runHook postInstall
116   '';