about summary refs log tree commit diff
diff options
context:
space:
mode:
authoryzx9 <yuan.zx@outlook.com>2024-06-16 21:34:46 +0800
committeryzx9 <yuan.zx@outlook.com>2024-06-16 21:34:46 +0800
commit224aa24a1c6ce18991dec003b29d1fbe04f8eb3e (patch)
treef81c274a4abb864aff9bf20bb1eb28e9a4b08294
parentefb82816a2e188996741c7c67932f088a50bc701 (diff)
dbeaver-bin: add darwin support
-rw-r--r--pkgs/by-name/db/dbeaver-bin/package.nix94
-rwxr-xr-xpkgs/by-name/db/dbeaver-bin/update.sh4
2 files changed, 64 insertions, 34 deletions
diff --git a/pkgs/by-name/db/dbeaver-bin/package.nix b/pkgs/by-name/db/dbeaver-bin/package.nix
index 4f516930c313a..ee80efd1c3d6f 100644
--- a/pkgs/by-name/db/dbeaver-bin/package.nix
+++ b/pkgs/by-name/db/dbeaver-bin/package.nix
@@ -1,23 +1,27 @@
-{ lib
-, stdenvNoCC
-, fetchurl
-, makeWrapper
-, openjdk17
-, gnused
-, autoPatchelfHook
-, wrapGAppsHook3
+{
+  lib,
+  stdenvNoCC,
+  fetchurl,
+  undmg,
+  makeWrapper,
+  openjdk17,
+  gnused,
+  autoPatchelfHook,
+  wrapGAppsHook3,
 }:
 
 stdenvNoCC.mkDerivation (finalAttrs: {
   pname = "dbeaver-bin";
   version = "24.0.5";
 
-  nativeBuildInputs = [
-    makeWrapper
-    gnused
-    autoPatchelfHook
-    wrapGAppsHook3
-  ];
+  nativeBuildInputs =
+    [ makeWrapper ]
+    ++ lib.optionals (!stdenvNoCC.isDarwin) [
+      gnused
+      wrapGAppsHook3
+      autoPatchelfHook
+    ]
+    ++ lib.optionals stdenvNoCC.isDarwin [ undmg ];
 
   src =
     let
@@ -26,10 +30,14 @@ stdenvNoCC.mkDerivation (finalAttrs: {
       suffix = selectSystem {
         x86_64-linux = "linux.gtk.x86_64-nojdk.tar.gz";
         aarch64-linux = "linux.gtk.aarch64-nojdk.tar.gz";
+        x86_64-darwin = "macos-x86_64.dmg";
+        aarch64-darwin = "macos-aarch64.dmg";
       };
       hash = selectSystem {
         x86_64-linux = "sha256-q6VIr55hXn47kZrE2i6McEOfp2FBOvwB0CcUnRHFMZs=";
         aarch64-linux = "sha256-Xn3X1C31UALBAsZIGyMWdp0HNhJEm5N+7Go7nMs8W64=";
+        x86_64-darwin = "sha256-XOQaMNQHOC4dVJXIUn4l4Oa7Gohbq+JMDFusIy/U+tc=";
+        aarch64-darwin = "sha256-554ea5p1MR4XIHtSeByd4S/Ke4cKRZbITTNRRDoRqPI=";
       };
     in
     fetchurl {
@@ -40,28 +48,44 @@ stdenvNoCC.mkDerivation (finalAttrs: {
   dontConfigure = true;
   dontBuild = true;
 
-  installPhase = ''
-    runHook preInstall
-    mkdir -p $out/opt/dbeaver $out/bin
-    cp -r * $out/opt/dbeaver
-    makeWrapper $out/opt/dbeaver/dbeaver $out/bin/dbeaver \
-      --prefix PATH : "${openjdk17}/bin" \
-      --set JAVA_HOME "${openjdk17.home}"
+  sourceRoot = lib.optional stdenvNoCC.isDarwin "dbeaver.app";
 
-    mkdir -p $out/share/icons/hicolor/256x256/apps
-    ln -s $out/opt/dbeaver/dbeaver.png $out/share/icons/hicolor/256x256/apps/dbeaver.png
+  installPhase =
+    if !stdenvNoCC.isDarwin then
+      ''
+        runHook preInstall
+        mkdir -p $out/opt/dbeaver $out/bin
+        cp -r * $out/opt/dbeaver
+        makeWrapper $out/opt/dbeaver/dbeaver $out/bin/dbeaver \
+          --prefix PATH : "${openjdk17}/bin" \
+          --set JAVA_HOME "${openjdk17.home}"
 
-    mkdir -p $out/share/applications
-    ln -s $out/opt/dbeaver/dbeaver-ce.desktop $out/share/applications/dbeaver.desktop
+        mkdir -p $out/share/icons/hicolor/256x256/apps
+        ln -s $out/opt/dbeaver/dbeaver.png $out/share/icons/hicolor/256x256/apps/dbeaver.png
 
-    substituteInPlace $out/opt/dbeaver/dbeaver-ce.desktop \
-      --replace-fail "/usr/share/dbeaver-ce/dbeaver.png" "dbeaver" \
-      --replace-fail "/usr/share/dbeaver-ce/dbeaver" "$out/bin/dbeaver"
+        mkdir -p $out/share/applications
+        ln -s $out/opt/dbeaver/dbeaver-ce.desktop $out/share/applications/dbeaver.desktop
 
-    sed -i '/^Path=/d' $out/share/applications/dbeaver.desktop
+        substituteInPlace $out/opt/dbeaver/dbeaver-ce.desktop \
+          --replace-fail "/usr/share/dbeaver-ce/dbeaver.png" "dbeaver" \
+          --replace-fail "/usr/share/dbeaver-ce/dbeaver" "$out/bin/dbeaver"
 
-    runHook postInstall
-  '';
+        sed -i '/^Path=/d' $out/share/applications/dbeaver.desktop
+
+        runHook postInstall
+      ''
+    else
+      ''
+        runHook preInstall
+
+        mkdir -p $out/{Applications/dbeaver.app,bin}
+        cp -R . $out/Applications/dbeaver.app
+        makeWrapper $out/{Applications/dbeaver.app/Contents/MacOS,bin}/dbeaver \
+          --prefix PATH : "${openjdk17}/bin" \
+          --set JAVA_HOME "${openjdk17.home}"
+
+        runHook postInstall
+      '';
 
   passthru.updateScript = ./update.sh;
 
@@ -76,8 +100,12 @@ stdenvNoCC.mkDerivation (finalAttrs: {
     '';
     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     license = licenses.asl20;
-    platforms = platforms.linux;
-    maintainers = with maintainers; [ gepbird mkg20001 ];
+    platforms = platforms.linux ++ platforms.darwin;
+    maintainers = with maintainers; [
+      gepbird
+      mkg20001
+      yzx9
+    ];
     mainProgram = "dbeaver";
   };
 })
diff --git a/pkgs/by-name/db/dbeaver-bin/update.sh b/pkgs/by-name/db/dbeaver-bin/update.sh
index ad8461e5a2eb8..64b965da6db07 100755
--- a/pkgs/by-name/db/dbeaver-bin/update.sh
+++ b/pkgs/by-name/db/dbeaver-bin/update.sh
@@ -14,7 +14,9 @@ fi
 
 for i in \
     "x86_64-linux linux.gtk.x86_64-nojdk.tar.gz" \
-    "aarch64-linux linux.gtk.aarch64-nojdk.tar.gz"
+    "aarch64-linux linux.gtk.aarch64-nojdk.tar.gz" \
+    "x86_64-darwin macos-x86_64.dmg" \
+    "aarch64-darwin macos-aarch64.dmg"
 do
     set -- $i
     prefetch=$(nix-prefetch-url "https://github.com/dbeaver/dbeaver/releases/download/$latestVersion/dbeaver-ce-$latestVersion-$2")