Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at devShellTools-shell 155 lines 5.1 kB view raw
1{ 2 lib, 3 stdenvNoCC, 4 fetchurl, 5 undmg, 6 makeWrapper, 7 openjdk21, 8 gnused, 9 autoPatchelfHook, 10 autoSignDarwinBinariesHook, 11 wrapGAppsHook3, 12 gtk3, 13 glib, 14 webkitgtk_4_1, 15 glib-networking, 16 override_xmx ? "1024m", 17}: 18 19stdenvNoCC.mkDerivation (finalAttrs: { 20 pname = "dbeaver-bin"; 21 version = "25.1.3"; 22 23 src = 24 let 25 inherit (stdenvNoCC.hostPlatform) system; 26 selectSystem = attrs: attrs.${system} or (throw "Unsupported system: ${system}"); 27 suffix = selectSystem { 28 x86_64-linux = "linux.gtk.x86_64-nojdk.tar.gz"; 29 aarch64-linux = "linux.gtk.aarch64-nojdk.tar.gz"; 30 x86_64-darwin = "macos-x86_64.dmg"; 31 aarch64-darwin = "macos-aarch64.dmg"; 32 }; 33 hash = selectSystem { 34 x86_64-linux = "sha256-SJCm5HnyhhpFvAK5ei9rkjCKnv8k904Vy0mOqTNcZXM="; 35 aarch64-linux = "sha256-hE4Eu8eL4fJlCj7s+VM4moPBGleibg3nT363avB9gq4="; 36 x86_64-darwin = "sha256-RWewJ5A0j+W17bv0DtxHG1iEz6q87/FwOvn34tHoN7Q="; 37 aarch64-darwin = "sha256-vpVQF3o054s6ztpxJVGj8z3R4E2bc3LD+t8/4PO4hXw="; 38 }; 39 in 40 fetchurl { 41 url = "https://github.com/dbeaver/dbeaver/releases/download/${finalAttrs.version}/dbeaver-ce-${finalAttrs.version}-${suffix}"; 42 inherit hash; 43 }; 44 45 sourceRoot = lib.optional stdenvNoCC.hostPlatform.isDarwin "DBeaver.app"; 46 47 nativeBuildInputs = [ 48 makeWrapper 49 ] 50 ++ lib.optionals (!stdenvNoCC.hostPlatform.isDarwin) [ 51 gnused 52 wrapGAppsHook3 53 autoPatchelfHook 54 ] 55 ++ lib.optionals stdenvNoCC.hostPlatform.isDarwin [ 56 undmg 57 autoSignDarwinBinariesHook 58 ]; 59 60 dontConfigure = true; 61 dontBuild = true; 62 63 prePatch = '' 64 substituteInPlace ${lib.optionalString stdenvNoCC.hostPlatform.isDarwin "Contents/Eclipse/"}dbeaver.ini \ 65 --replace-fail '-Xmx1024m' '-Xmx${override_xmx}' 66 '' 67 # remove the bundled JRE configuration on Darwin 68 # dont use substituteInPlace here because it would match "-vmargs" 69 + lib.optionalString stdenvNoCC.hostPlatform.isDarwin '' 70 sed -i -e '/^-vm$/ { N; d; }' Contents/Eclipse/dbeaver.ini 71 ''; 72 73 preInstall = '' 74 # most directories are for different architectures, only keep what we need 75 shopt -s extglob 76 pushd ${lib.optionalString stdenvNoCC.hostPlatform.isDarwin "Contents/Eclipse/"}plugins/com.sun.jna_*/com/sun/jna/ 77 rm -r !(ptr|internal|linux-x86-64|linux-aarch64|darwin-x86-64|darwin-aarch64)/ 78 popd 79 '' 80 # remove the bundled JRE on Darwin 81 + lib.optionalString stdenvNoCC.hostPlatform.isDarwin '' 82 rm -r Contents/Eclipse/jre/ 83 ''; 84 85 installPhase = 86 if !stdenvNoCC.hostPlatform.isDarwin then 87 '' 88 runHook preInstall 89 90 mkdir -p $out/opt/dbeaver $out/bin 91 cp -r * $out/opt/dbeaver 92 makeWrapper $out/opt/dbeaver/dbeaver $out/bin/dbeaver \ 93 --prefix PATH : "${openjdk21}/bin" \ 94 --set JAVA_HOME "${openjdk21.home}" \ 95 --prefix GIO_EXTRA_MODULES : "${glib-networking}/lib/gio/modules" \ 96 --prefix LD_LIBRARY_PATH : "$out/lib:${ 97 lib.makeLibraryPath [ 98 gtk3 99 glib 100 webkitgtk_4_1 101 glib-networking 102 ] 103 }" 104 105 mkdir -p $out/share/icons/hicolor/256x256/apps 106 ln -s $out/opt/dbeaver/dbeaver.png $out/share/icons/hicolor/256x256/apps/dbeaver.png 107 108 mkdir -p $out/share/applications 109 ln -s $out/opt/dbeaver/dbeaver-ce.desktop $out/share/applications/dbeaver.desktop 110 111 substituteInPlace $out/opt/dbeaver/dbeaver-ce.desktop \ 112 --replace-fail "/usr/share/dbeaver-ce/dbeaver.png" "dbeaver" \ 113 --replace-fail "/usr/share/dbeaver-ce/dbeaver" "$out/bin/dbeaver" 114 115 sed -i '/^Path=/d' $out/share/applications/dbeaver.desktop 116 117 runHook postInstall 118 '' 119 else 120 '' 121 runHook preInstall 122 123 mkdir -p $out/{Applications/dbeaver.app,bin} 124 cp -R . $out/Applications/dbeaver.app 125 wrapProgram $out/Applications/dbeaver.app/Contents/MacOS/dbeaver \ 126 --prefix PATH : "${openjdk21}/bin" \ 127 --set JAVA_HOME "${openjdk21.home}" 128 makeWrapper $out/{Applications/dbeaver.app/Contents/MacOS/dbeaver,bin/dbeaver} 129 130 runHook postInstall 131 ''; 132 133 passthru.updateScript = ./update.sh; 134 135 meta = { 136 homepage = "https://dbeaver.io/"; 137 changelog = "https://github.com/dbeaver/dbeaver/releases/tag/${finalAttrs.version}"; 138 description = "Universal SQL Client for developers, DBA and analysts. Supports MySQL, PostgreSQL, MariaDB, SQLite, and more"; 139 longDescription = '' 140 Free multi-platform database tool for developers, SQL programmers, database 141 administrators and analysts. Supports all popular databases: MySQL, 142 PostgreSQL, MariaDB, SQLite, Oracle, DB2, SQL Server, Sybase, MS Access, 143 Teradata, Firebird, Derby, etc. 144 ''; 145 sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; 146 license = lib.licenses.asl20; 147 platforms = with lib.platforms; linux ++ darwin; 148 maintainers = with lib.maintainers; [ 149 gepbird 150 mkg20001 151 yzx9 152 ]; 153 mainProgram = "dbeaver"; 154 }; 155})