diff --git a/pkgs/by-name/hm/hmcl/package.nix b/pkgs/by-name/hm/hmcl/package.nix index 29ef808d50a8..694f806474a0 100644 --- a/pkgs/by-name/hm/hmcl/package.nix +++ b/pkgs/by-name/hm/hmcl/package.nix @@ -5,9 +5,10 @@ replaceVars, terracotta, makeDesktopItem, + makeWrapper, wrapGAppsHook3, copyDesktopItems, - imagemagick, + desktopToDarwinBundle, jdk, jdk17, hmclJdk ? jdk.override { @@ -47,11 +48,6 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-bgZsQ/5CUeOkbahIV0hQSPHrYfK+EaAIV6uMZzpLOVM="; }; - icon = fetchurl { - url = "https://github.com/HMCL-dev/HMCL/raw/release-${finalAttrs.version}/HMCL/src/main/resources/assets/img/icon@8x.png"; - hash = "sha256-1OVq4ujA2ZHboB7zEk7004kYgl9YcoM4qLq154MZMGo="; - }; - # - HMCL prompts users to download prebuilt Terracotta binary for # multi-user functionality, which is messy and doesn’t work on NixOS. # - Building from source isn’t feasible because HMCL’s code relies on @@ -124,64 +120,66 @@ stdenv.mkDerivation (finalAttrs: { nativeBuildInputs = [ gobject-introspection + makeWrapper wrapGAppsHook3 copyDesktopItems - imagemagick hmclJdkBuild + ] + ++ lib.optionals stdenv.hostPlatform.isDarwin [ + desktopToDarwinBundle + ]; + + runtimeDeps = [ + libGL + glfw + glib + openal + libglvnd + vulkan-loader + ] + ++ lib.optionals stdenv.hostPlatform.isLinux [ + xorg.libX11 + xorg.libXxf86vm + xorg.libXext + xorg.libXcursor + xorg.libXrandr + xorg.libXtst + libpulseaudio + wayland + alsa-lib ]; installPhase = '' runHook preInstall - mkdir -p $out/{bin,lib/hmcl} - cp $src $out/lib/hmcl/hmcl.jar - cp patch.jar $out/lib/hmcl/hmcl-terracotta-patch.jar - - for n in 16 32 48 64 96 128 256 - do - size=$n"x"$n - mkdir -p $out/share/icons/hicolor/$size/apps - magick ${finalAttrs.icon} -resize $size $out/share/icons/hicolor/$size/apps/hmcl.png - done + install -Dm444 $src $out/lib/hmcl/hmcl.jar + install -Dm444 patch.jar $out/lib/hmcl/hmcl-terracotta-patch.jar + jar xf $src assets/img + '' + + lib.optionalString stdenv.hostPlatform.isLinux '' + install -Dm444 assets/img/icon-title.png $out/share/icons/hicolor/24x24/apps/hmcl.png + install -Dm444 assets/img/icon.png $out/share/icons/hicolor/32x32/apps/hmcl.png + install -Dm444 assets/img/icon-title@2x.png $out/share/icons/hicolor/48x48/apps/hmcl.png + install -Dm444 assets/img/icon@2x.png $out/share/icons/hicolor/64x64/apps/hmcl.png + install -Dm444 assets/img/icon@4x.png $out/share/icons/hicolor/128x128/apps/hmcl.png + install -Dm444 assets/img/icon@8x.png $out/share/icons/hicolor/256x256/apps/hmcl.png + '' + + lib.optionalString stdenv.hostPlatform.isDarwin '' + install -Dm444 assets/img/icon-mac.png $out/share/icons/hicolor/512x512/apps/hmcl.png + '' + + '' runHook postInstall ''; - fixupPhase = - let - libpath = lib.makeLibraryPath ( - [ - libGL - glfw - glib - openal - libglvnd - vulkan-loader - ] - ++ lib.optionals stdenv.hostPlatform.isLinux [ - xorg.libX11 - xorg.libXxf86vm - xorg.libXext - xorg.libXcursor - xorg.libXrandr - xorg.libXtst - libpulseaudio - wayland - alsa-lib - ] - ); - in - '' - runHook preFixup - - makeBinaryWrapper ${hmclJdk}/bin/java $out/bin/hmcl \ - --add-flags "-jar $out/lib/hmcl/hmcl-terracotta-patch.jar" \ - --set LD_LIBRARY_PATH ${libpath} \ - --prefix PATH : "${lib.makeBinPath minecraftJdks}"\ - ''${gappsWrapperArgs[@]} - - runHook postFixup - ''; + postFixup = '' + makeShellWrapper ${hmclJdk}/bin/java $out/bin/hmcl \ + --add-flags "-jar $out/lib/hmcl/hmcl-terracotta-patch.jar" \ + --set LD_LIBRARY_PATH ${lib.makeLibraryPath finalAttrs.runtimeDeps} \ + --prefix PATH : "${lib.makeBinPath minecraftJdks}" \ + --run 'cd $HOME' \ + ''${gappsWrapperArgs[@]} + ''; passthru.updateScript = lib.getExe (callPackage ./update.nix { }); diff --git a/pkgs/by-name/hm/hmcl/update.nix b/pkgs/by-name/hm/hmcl/update.nix index f58d578b95e1..1f65d2578cec 100644 --- a/pkgs/by-name/hm/hmcl/update.nix +++ b/pkgs/by-name/hm/hmcl/update.nix @@ -35,7 +35,6 @@ writeShellApplication { fi nix-update hmcl --version="$version" - update-source-version hmcl --source-key=icon --ignore-same-version update-source-version hmcl --source-key=terracottaNativeJava --ignore-same-version update-source-version hmcl --source-key=macOSProviderJava --ignore-same-version '';