Commit 0e3b99e2 authored by aleksana's avatar aleksana
Browse files

hmcl: refactor and make available on darwin

parent ab9788d6
Loading
Loading
Loading
Loading
+51 −53
Original line number Diff line number Diff line
@@ -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,33 +120,16 @@ stdenv.mkDerivation (finalAttrs: {

  nativeBuildInputs = [
    gobject-introspection
    makeWrapper
    wrapGAppsHook3
    copyDesktopItems
    imagemagick
    hmclJdkBuild
  ]
  ++ lib.optionals stdenv.hostPlatform.isDarwin [
    desktopToDarwinBundle
  ];

  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

    runHook postInstall
  '';

  fixupPhase =
    let
      libpath = lib.makeLibraryPath (
        [
  runtimeDeps = [
    libGL
    glfw
    glib
@@ -168,19 +147,38 @@ stdenv.mkDerivation (finalAttrs: {
    libpulseaudio
    wayland
    alsa-lib
        ]
      );
    in
  ];

  installPhase = ''
    runHook preInstall

    install -Dm444 $src $out/lib/hmcl/hmcl.jar
    install -Dm444 patch.jar $out/lib/hmcl/hmcl-terracotta-patch.jar

    jar xf $src assets/img
  ''
      runHook preFixup
  + 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
  '';

      makeBinaryWrapper ${hmclJdk}/bin/java $out/bin/hmcl \
  postFixup = ''
    makeShellWrapper ${hmclJdk}/bin/java $out/bin/hmcl \
      --add-flags "-jar $out/lib/hmcl/hmcl-terracotta-patch.jar" \
        --set LD_LIBRARY_PATH ${libpath} \
      --set LD_LIBRARY_PATH ${lib.makeLibraryPath finalAttrs.runtimeDeps} \
      --prefix PATH : "${lib.makeBinPath minecraftJdks}" \
      --run 'cd $HOME' \
      ''${gappsWrapperArgs[@]}

      runHook postFixup
  '';

  passthru.updateScript = lib.getExe (callPackage ./update.nix { });
+0 −1
Original line number Diff line number Diff line
@@ -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
  '';