diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 37e4efc678c1..894f9958cae1 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -23018,6 +23018,15 @@ githubId = 5253988; name = "yvt"; }; + yzx9 = { + email = "yuan.zx@outlook.com"; + github = "yzx9"; + githubId = 41458459; + name = "Zexin Yuan"; + keys = [{ + fingerprint = "FE16 B281 90EF 6C3F F661 6441 C2DD 1916 FE47 1BE2"; + }]; + }; zachcoyle = { email = "zach.coyle@gmail.com"; github = "zachcoyle"; diff --git a/pkgs/by-name/db/dbeaver-bin/package.nix b/pkgs/by-name/db/dbeaver-bin/package.nix index 4f516930c313..ee80efd1c3d6 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 ad8461e5a2eb..64b965da6db0 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")