Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / applications / misc / dbeaver / default.nix
blobbd4504611758ac04b103896897e10f251c6812cc
1 { lib
2 , stdenv
3 , copyDesktopItems
4 , fetchFromGitHub
5 , makeDesktopItem
6 , makeWrapper
7 , fontconfig
8 , freetype
9 , glib
10 , gtk3
11 , jdk17
12 , libX11
13 , libXrender
14 , libXtst
15 , zlib
16 , maven
17 , webkitgtk
18 , glib-networking
21 let
22   mavenJdk17 = maven.override {
23     jdk = jdk17;
24   };
26 mavenJdk17.buildMavenPackage rec {
27   pname = "dbeaver";
28   version = "22.2.2"; # When updating also update mvnHash
30   src = fetchFromGitHub {
31     owner = "dbeaver";
32     repo = "dbeaver";
33     rev = version;
34     hash = "sha256-TUdtrhQ1JzqZx+QNauNA1P/+WDSSeOGIgGX3SdS0JTI=";
35   };
37   mvnHash = "sha256-ERZYDsPxp1YXteSmunFIgTGZUYqjZJhqrNytLnIUNBQ=";
38   mvnParameters = "-P desktop,all-platforms";
40   nativeBuildInputs = [
41     copyDesktopItems
42     makeWrapper
43   ];
45   buildInputs = [
46     fontconfig
47     freetype
48     glib
49     gtk3
50     jdk17
51     libX11
52     libXrender
53     libXtst
54     zlib
55   ] ++ lib.optionals stdenv.isLinux [
56     webkitgtk
57     glib-networking
58   ];
60   desktopItems = [
61     (makeDesktopItem {
62       name = "dbeaver";
63       exec = "dbeaver";
64       icon = "dbeaver";
65       desktopName = "dbeaver";
66       comment = "SQL Integrated Development Environment";
67       genericName = "SQL Integrated Development Environment";
68       categories = [ "Development" ];
69     })
70   ];
72   installPhase =
73     let
74       productTargetPath = "product/community/target/products/org.jkiss.dbeaver.core.product";
76       platformMap = {
77         aarch64-darwin = "aarch64";
78         aarch64-linux = "aarch64";
79         x86_64-darwin = "x86_64";
80         x86_64-linux = "x86_64";
81       };
83       systemPlatform = platformMap.${stdenv.hostPlatform.system} or (throw "dbeaver not supported on ${stdenv.hostPlatform.system}");
84     in
85     if stdenv.isDarwin then ''
86       runHook preInstall
88       mkdir -p $out/Applications $out/bin
89       cp -r ${productTargetPath}/macosx/cocoa/${systemPlatform}/DBeaver.app $out/Applications
91       sed -i "/^-vm/d; /bin\/java/d" $out/Applications/DBeaver.app/Contents/Eclipse/dbeaver.ini
93       ln -s $out/Applications/DBeaver.app/Contents/MacOS/dbeaver $out/bin/dbeaver
95       wrapProgram $out/Applications/DBeaver.app/Contents/MacOS/dbeaver \
96         --prefix JAVA_HOME : ${jdk17.home} \
97         --prefix PATH : ${jdk17}/bin
99       runHook postInstall
100     '' else ''
101       runHook preInstall
103       mkdir -p $out/
104       cp -r ${productTargetPath}/linux/gtk/${systemPlatform}/dbeaver $out/dbeaver
106       # Patch binaries.
107       interpreter=$(cat $NIX_CC/nix-support/dynamic-linker)
108       patchelf --set-interpreter $interpreter $out/dbeaver/dbeaver
110       makeWrapper $out/dbeaver/dbeaver $out/bin/dbeaver \
111         --prefix PATH : ${jdk17}/bin \
112         --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath ([ glib gtk3 libXtst webkitgtk glib-networking ])} \
113         --prefix GIO_EXTRA_MODULES : "${glib-networking}/lib/gio/modules" \
114         --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
116       mkdir -p $out/share/pixmaps
117       ln -s $out/dbeaver/icon.xpm $out/share/pixmaps/dbeaver.xpm
119       runHook postInstall
120     '';
122   meta = with lib; {
123     homepage = "https://dbeaver.io/";
124     description = "Universal SQL Client for developers, DBA and analysts. Supports MySQL, PostgreSQL, MariaDB, SQLite, and more";
125     longDescription = ''
126       Free multi-platform database tool for developers, SQL programmers, database
127       administrators and analysts. Supports all popular databases: MySQL,
128       PostgreSQL, MariaDB, SQLite, Oracle, DB2, SQL Server, Sybase, MS Access,
129       Teradata, Firebird, Derby, etc.
130     '';
131     sourceProvenance = with sourceTypes; [
132       fromSource
133       binaryBytecode # dependencies from maven
134     ];
135     license = licenses.asl20;
136     platforms = [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ];
137     maintainers = with maintainers; [ jojosch mkg20001 ];
138     mainProgram = "dbeaver";
139   };