From 96e17579a1091e01920b6cb2a6c196236e048542 Mon Sep 17 00:00:00 2001 From: Moraxyc Date: Wed, 2 Jul 2025 14:43:25 +0800 Subject: [PATCH 1/7] hmcl: avoid with lib --- pkgs/by-name/hm/hmcl/package.nix | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pkgs/by-name/hm/hmcl/package.nix b/pkgs/by-name/hm/hmcl/package.nix index 867d97f8c374..477edcba0345 100644 --- a/pkgs/by-name/hm/hmcl/package.nix +++ b/pkgs/by-name/hm/hmcl/package.nix @@ -113,13 +113,14 @@ stdenv.mkDerivation (finalAttrs: { runHook postFixup ''; - meta = with lib; { + meta = { homepage = "https://hmcl.huangyuhui.net"; description = "Minecraft Launcher which is multi-functional, cross-platform and popular"; + changelog = "https://docs.hmcl.net/changelog/stable.html"; mainProgram = "hmcl"; - sourceProvenance = with sourceTypes; [ binaryBytecode ]; - license = licenses.gpl3Only; - maintainers = with maintainers; [ daru-san ]; + sourceProvenance = with lib.sourceTypes; [ binaryBytecode ]; + license = lib.licenses.gpl3Only; + maintainers = with lib.maintainers; [ daru-san ]; inherit (hmclJdk.meta) platforms; }; }) From 9bb6f268c4e9b93c06623f59494f8165d11d7a47 Mon Sep 17 00:00:00 2001 From: Moraxyc Date: Wed, 2 Jul 2025 14:48:15 +0800 Subject: [PATCH 2/7] hmcl: correct finalAttrs usage --- pkgs/by-name/hm/hmcl/package.nix | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/pkgs/by-name/hm/hmcl/package.nix b/pkgs/by-name/hm/hmcl/package.nix index 477edcba0345..6aad2232f6d0 100644 --- a/pkgs/by-name/hm/hmcl/package.nix +++ b/pkgs/by-name/hm/hmcl/package.nix @@ -28,22 +28,20 @@ gobject-introspection, }: -let - version = "3.6.12"; - icon = fetchurl { - url = "https://github.com/huanghongxun/HMCL/raw/release-${version}/HMCLauncher/HMCL/HMCL.ico"; - hash = "sha256-+EYL33VAzKHOMp9iXoJaSGZfv+ymDDYIx6i/1o47Dmc="; - }; -in stdenv.mkDerivation (finalAttrs: { pname = "hmcl"; - inherit version; + version = "3.6.12"; src = fetchurl { - url = "https://github.com/huanghongxun/HMCL/releases/download/release-${version}/HMCL-${version}.jar"; + url = "https://github.com/huanghongxun/HMCL/releases/download/release-${finalAttrs.version}/HMCL-${finalAttrs.version}.jar"; hash = "sha256-ofrG7CVZIODJoHE6owR9P7viBlChamYF5PEpFeeOH4E="; }; + icon = fetchurl { + url = "https://github.com/huanghongxun/HMCL/raw/release-${finalAttrs.version}/HMCLauncher/HMCL/HMCL.ico"; + hash = "sha256-+EYL33VAzKHOMp9iXoJaSGZfv+ymDDYIx6i/1o47Dmc="; + }; + dontUnpack = true; dontWrapGApps = true; @@ -71,7 +69,7 @@ stdenv.mkDerivation (finalAttrs: { mkdir -p $out/{bin,lib/hmcl} cp $src $out/lib/hmcl/hmcl.jar - magick ${icon} hmcl.png + magick ${finalAttrs.icon} hmcl.png install -Dm644 hmcl-1.png $out/share/icons/hicolor/32x32/apps/hmcl.png runHook postInstall From c147291ac446f0f7857957553edd5a3802cf649b Mon Sep 17 00:00:00 2001 From: Moraxyc Date: Wed, 2 Jul 2025 14:51:45 +0800 Subject: [PATCH 3/7] =?UTF-8?q?hmcl:=20add=20comment=20explaining=20why=20?= =?UTF-8?q?it=E2=80=99s=20not=20built=20from=20source?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkgs/by-name/hm/hmcl/package.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/by-name/hm/hmcl/package.nix b/pkgs/by-name/hm/hmcl/package.nix index 6aad2232f6d0..b1f640094d19 100644 --- a/pkgs/by-name/hm/hmcl/package.nix +++ b/pkgs/by-name/hm/hmcl/package.nix @@ -33,6 +33,8 @@ stdenv.mkDerivation (finalAttrs: { version = "3.6.12"; src = fetchurl { + # HMCL has built-in keys, such as the Microsoft OAuth secret and the CurseForge API key. + # See https://github.com/HMCL-dev/HMCL/blob/refs/tags/release-3.6.12/.github/workflows/gradle.yml#L26-L28 url = "https://github.com/huanghongxun/HMCL/releases/download/release-${finalAttrs.version}/HMCL-${finalAttrs.version}.jar"; hash = "sha256-ofrG7CVZIODJoHE6owR9P7viBlChamYF5PEpFeeOH4E="; }; From e5dcb41b50ba42de1eab1e7fc292b3f2cfcaec8e Mon Sep 17 00:00:00 2001 From: Moraxyc Date: Wed, 2 Jul 2025 14:53:29 +0800 Subject: [PATCH 4/7] hmcl: add updateScript --- pkgs/by-name/hm/hmcl/package.nix | 3 +++ pkgs/by-name/hm/hmcl/update.nix | 40 ++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 pkgs/by-name/hm/hmcl/update.nix diff --git a/pkgs/by-name/hm/hmcl/package.nix b/pkgs/by-name/hm/hmcl/package.nix index b1f640094d19..3da50f490d83 100644 --- a/pkgs/by-name/hm/hmcl/package.nix +++ b/pkgs/by-name/hm/hmcl/package.nix @@ -26,6 +26,7 @@ vulkan-loader, libpulseaudio, gobject-introspection, + callPackage, }: stdenv.mkDerivation (finalAttrs: { @@ -113,6 +114,8 @@ stdenv.mkDerivation (finalAttrs: { runHook postFixup ''; + passthru.updateScript = lib.getExe (callPackage ./update.nix { }); + meta = { homepage = "https://hmcl.huangyuhui.net"; description = "Minecraft Launcher which is multi-functional, cross-platform and popular"; diff --git a/pkgs/by-name/hm/hmcl/update.nix b/pkgs/by-name/hm/hmcl/update.nix new file mode 100644 index 000000000000..9b974524f79b --- /dev/null +++ b/pkgs/by-name/hm/hmcl/update.nix @@ -0,0 +1,40 @@ +{ + writeShellApplication, + nix, + nix-update, + curl, + common-updater-scripts, + jq, +}: + +writeShellApplication { + name = "update-hmcl"; + runtimeInputs = [ + curl + jq + nix + common-updater-scripts + nix-update + ]; + + text = '' + # get old info + oldVersion=$(nix-instantiate --eval --strict -A "hmcl.version" | jq -e -r) + + get_latest_release() { + curl --fail ''${GITHUB_TOKEN:+ -H "Authorization: bearer $GITHUB_TOKEN"} \ + -s "https://api.github.com/repos/HMCL-dev/HMCL/releases/latest" | jq -r ".tag_name" + } + + version=$(get_latest_release) + version="''${version#release-}" + + if [[ "$oldVersion" == "$version" ]]; then + echo "Already up to date!" + exit 0 + fi + + nix-update hmcl --version="$version" + update-source-version hmcl --source-key=icon --ignore-same-version + ''; +} From 6cd7e9d3c626024d7c930f6a06508c6039b98ffa Mon Sep 17 00:00:00 2001 From: Moraxyc Date: Wed, 2 Jul 2025 19:39:30 +0800 Subject: [PATCH 5/7] hmcl: gen multiple size icons --- pkgs/by-name/hm/hmcl/package.nix | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/pkgs/by-name/hm/hmcl/package.nix b/pkgs/by-name/hm/hmcl/package.nix index 3da50f490d83..adb5a6f5bb25 100644 --- a/pkgs/by-name/hm/hmcl/package.nix +++ b/pkgs/by-name/hm/hmcl/package.nix @@ -41,8 +41,8 @@ stdenv.mkDerivation (finalAttrs: { }; icon = fetchurl { - url = "https://github.com/huanghongxun/HMCL/raw/release-${finalAttrs.version}/HMCLauncher/HMCL/HMCL.ico"; - hash = "sha256-+EYL33VAzKHOMp9iXoJaSGZfv+ymDDYIx6i/1o47Dmc="; + url = "https://github.com/huanghongxun/HMCL/raw/release-${finalAttrs.version}/HMCL/src/main/resources/assets/img/icon@8x.png"; + hash = "sha256-1OVq4ujA2ZHboB7zEk7004kYgl9YcoM4qLq154MZMGo="; }; dontUnpack = true; @@ -72,8 +72,13 @@ stdenv.mkDerivation (finalAttrs: { mkdir -p $out/{bin,lib/hmcl} cp $src $out/lib/hmcl/hmcl.jar - magick ${finalAttrs.icon} hmcl.png - install -Dm644 hmcl-1.png $out/share/icons/hicolor/32x32/apps/hmcl.png + + 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 ''; From c6603237ac6dc3da4ee9b32f6d531a4757231846 Mon Sep 17 00:00:00 2001 From: Moraxyc Date: Wed, 2 Jul 2025 19:41:19 +0800 Subject: [PATCH 6/7] hmcl: follow upstream, switch to HMCL-dev org --- pkgs/by-name/hm/hmcl/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/hm/hmcl/package.nix b/pkgs/by-name/hm/hmcl/package.nix index adb5a6f5bb25..bae260c8bc65 100644 --- a/pkgs/by-name/hm/hmcl/package.nix +++ b/pkgs/by-name/hm/hmcl/package.nix @@ -36,12 +36,12 @@ stdenv.mkDerivation (finalAttrs: { src = fetchurl { # HMCL has built-in keys, such as the Microsoft OAuth secret and the CurseForge API key. # See https://github.com/HMCL-dev/HMCL/blob/refs/tags/release-3.6.12/.github/workflows/gradle.yml#L26-L28 - url = "https://github.com/huanghongxun/HMCL/releases/download/release-${finalAttrs.version}/HMCL-${finalAttrs.version}.jar"; + url = "https://github.com/HMCL-dev/HMCL/releases/download/release-${finalAttrs.version}/HMCL-${finalAttrs.version}.jar"; hash = "sha256-ofrG7CVZIODJoHE6owR9P7viBlChamYF5PEpFeeOH4E="; }; icon = fetchurl { - url = "https://github.com/huanghongxun/HMCL/raw/release-${finalAttrs.version}/HMCL/src/main/resources/assets/img/icon@8x.png"; + url = "https://github.com/HMCL-dev/HMCL/raw/release-${finalAttrs.version}/HMCL/src/main/resources/assets/img/icon@8x.png"; hash = "sha256-1OVq4ujA2ZHboB7zEk7004kYgl9YcoM4qLq154MZMGo="; }; From 9bd5502f42070514b22dd821c5ec8fc2aa12603f Mon Sep 17 00:00:00 2001 From: Moraxyc Date: Wed, 2 Jul 2025 14:54:04 +0800 Subject: [PATCH 7/7] hmcl: add myself as maintainer --- pkgs/by-name/hm/hmcl/package.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkgs/by-name/hm/hmcl/package.nix b/pkgs/by-name/hm/hmcl/package.nix index bae260c8bc65..58a7124271cb 100644 --- a/pkgs/by-name/hm/hmcl/package.nix +++ b/pkgs/by-name/hm/hmcl/package.nix @@ -128,7 +128,10 @@ stdenv.mkDerivation (finalAttrs: { mainProgram = "hmcl"; sourceProvenance = with lib.sourceTypes; [ binaryBytecode ]; license = lib.licenses.gpl3Only; - maintainers = with lib.maintainers; [ daru-san ]; + maintainers = with lib.maintainers; [ + daru-san + moraxyc + ]; inherit (hmclJdk.meta) platforms; }; })