nixpkgs/pkgs/applications/misc/dbeaver/default.nix

125 lines
3.2 KiB
Nix
Raw Normal View History

2021-01-04 11:26:50 +01:00
{ lib
, stdenv
, fetchFromGitHub
, makeDesktopItem
, makeWrapper
, fontconfig
, freetype
, glib
, gtk3
, jdk
, libX11
, libXrender
, libXtst
, zlib
, maven
}:
let
2018-01-09 00:22:32 +01:00
desktopItem = makeDesktopItem {
name = "dbeaver";
exec = "dbeaver";
icon = "dbeaver";
desktopName = "dbeaver";
comment = "SQL Integrated Development Environment";
genericName = "SQL Integrated Development Environment";
categories = "Development;";
2018-01-09 00:22:32 +01:00
};
2021-01-04 11:26:50 +01:00
in
stdenv.mkDerivation rec {
pname = "dbeaver-ce";
version = "7.3.2"; # When updating also update fetchedMavenDeps.sha256
src = fetchFromGitHub {
owner = "dbeaver";
repo = "dbeaver";
rev = version;
sha256 = "sha256-gh3++IEQzWOKGsazqeMp0aHuZ835etAou62cgz0GoNQ=";
};
fetchedMavenDeps = stdenv.mkDerivation {
name = "dbeaver-${version}-maven-deps";
inherit src;
buildInputs = [
maven
];
buildPhase = "mvn package -Dmaven.repo.local=$out/.m2";
# keep only *.{pom,jar,sha1,nbm} and delete all ephemeral files with lastModified timestamps inside
installPhase = ''
find $out -type f \
-name \*.lastUpdated -or \
-name resolver-status.properties -or \
-name _remote.repositories \
-delete
'';
# don't do any fixup
dontFixup = true;
outputHashAlgo = "sha256";
outputHashMode = "recursive";
outputHash = "sha256-uTKevwZvKiYOBz0hshh1rLEj7htYF7FQiTq6vZiVs7Q=";
};
2018-01-09 00:22:32 +01:00
buildInputs = [
2021-01-04 11:26:50 +01:00
fontconfig
freetype
glib
gtk3
jdk
libX11
libXrender
libXtst
makeWrapper
zlib
2018-01-09 00:22:32 +01:00
];
nativeBuildInputs = [
2021-01-04 11:26:50 +01:00
maven
2018-01-09 00:22:32 +01:00
];
2021-01-04 11:26:50 +01:00
buildPhase = ''
mvn package --offline -Dmaven.repo.local=$(cp -dpR ${fetchedMavenDeps}/.m2 ./ && chmod +w -R .m2 && pwd)/.m2
'';
2020-12-21 17:09:57 +01:00
2021-01-04 11:26:50 +01:00
installPhase =
let
productTargetPath = "product/standalone/target/products/org.jkiss.dbeaver.core.product";
in
''
mkdir -p $out/
cp -r ${productTargetPath}/linux/gtk/x86_64/dbeaver $out/dbeaver
2018-01-09 00:22:32 +01:00
2021-01-04 11:26:50 +01:00
# Patch binaries.
interpreter=$(cat $NIX_CC/nix-support/dynamic-linker)
patchelf --set-interpreter $interpreter $out/dbeaver/dbeaver
2018-01-09 00:22:32 +01:00
2021-01-04 11:26:50 +01:00
makeWrapper $out/dbeaver/dbeaver $out/bin/dbeaver \
--prefix PATH : ${jdk}/bin \
--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath ([ glib gtk3 libXtst ])} \
--prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
2018-01-09 00:22:32 +01:00
2021-01-04 11:26:50 +01:00
# Create desktop item.
mkdir -p $out/share/applications
cp ${desktopItem}/share/applications/* $out/share/applications
2018-01-09 00:22:32 +01:00
2021-01-04 11:26:50 +01:00
mkdir -p $out/share/pixmaps
ln -s $out/dbeaver/icon.xpm $out/share/pixmaps/dbeaver.xpm
'';
2018-01-09 00:22:32 +01:00
meta = with lib; {
2020-03-23 10:05:32 +01:00
homepage = "https://dbeaver.io/";
2018-01-09 00:22:32 +01:00
description = "Universal SQL Client for developers, DBA and analysts. Supports MySQL, PostgreSQL, MariaDB, SQLite, and more";
longDescription = ''
Free multi-platform database tool for developers, SQL programmers, database
administrators and analysts. Supports all popular databases: MySQL,
PostgreSQL, MariaDB, SQLite, Oracle, DB2, SQL Server, Sybase, MS Access,
Teradata, Firebird, Derby, etc.
'';
license = licenses.asl20;
platforms = [ "x86_64-linux" ];
2021-01-04 11:26:50 +01:00
maintainers = with maintainers; [ jojosch ];
2018-01-09 00:22:32 +01:00
};
}