diff --git a/pkgs/by-name/lm/lmstudio/package.nix b/pkgs/by-name/lm/lmstudio/package.nix index c41d543c446a..ba5eb9c4d2b0 100644 --- a/pkgs/by-name/lm/lmstudio/package.nix +++ b/pkgs/by-name/lm/lmstudio/package.nix @@ -2,13 +2,18 @@ lib, stdenv, callPackage, - version ? "0.3.14", - rev ? "3", ... }@args: let pname = "lmstudio"; - packageVersion = "${version}-${rev}"; # Combine version and rev + + version_aarch64-darwin = "0.3.14-5"; + hash_aarch64-darwin = "sha256-8OTfjEZ27ubRFvRQ84em2Gz3mS9w3oev41Qg6MMNjNU="; + version_x86_64-linux = "0.3.14-5"; + hash_x86_64-linux = "sha256-WrO95ez81/A0U1Tt1Oi2PyUp6nvsmQMzK0VUVH1TYbg="; + + passthru.updateScript = ./update.sh; + meta = { description = "LM Studio is an easy to use desktop app for experimenting with local and open-source Large Language Models (LLMs)"; homepage = "https://lmstudio.ai/"; @@ -26,18 +31,18 @@ in if stdenv.hostPlatform.isDarwin then callPackage ./darwin.nix { inherit pname meta; - version = packageVersion; + version = version_aarch64-darwin; url = args.url - or "https://installers.lmstudio.ai/darwin/arm64/${version}-${rev}/LM-Studio-${version}-${rev}-arm64.dmg"; - hash = args.hash or "sha256-doAhCbWFwDWlBQ+4YfJz6p7I4NZJxIOtdLYTr3mOGds="; + or "https://installers.lmstudio.ai/darwin/arm64/${version_aarch64-darwin}/LM-Studio-${version_aarch64-darwin}-arm64.dmg"; + hash = args.hash or hash_aarch64-darwin; } else callPackage ./linux.nix { inherit pname meta; - version = packageVersion; + version = version_x86_64-linux; url = args.url - or "https://installers.lmstudio.ai/linux/x64/${version}-${rev}/LM-Studio-${version}-${rev}-x64.AppImage"; - hash = args.hash or "sha256-IIJMk0cfLQdrx0nTSbpsbqOvD+f/qrH+rGdYN4mygaw="; + or "https://installers.lmstudio.ai/linux/x64/${version_x86_64-linux}/LM-Studio-${version_x86_64-linux}-x64.AppImage"; + hash = args.hash or hash_x86_64-linux; } diff --git a/pkgs/by-name/lm/lmstudio/update.sh b/pkgs/by-name/lm/lmstudio/update.sh new file mode 100755 index 000000000000..efbaf5a7d8d2 --- /dev/null +++ b/pkgs/by-name/lm/lmstudio/update.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p curl common-updater-scripts + +set -euo pipefail + +packages="$(curl -s -L "https://lmstudio.ai/" | grep -oE 'https://installers.lmstudio.ai[^"\]*' | sort -u | grep -v \\.exe)" +for system in "aarch64-darwin darwin/arm64" "x86_64-linux linux/x64"; do + set -- ${system} + + arch="${1}" + url=$(echo "${packages}" | grep "${2}") + version="$(echo "${url}" | cut -d/ -f6)" + hash=$(nix hash convert --hash-algo sha256 "$(nix-prefetch-url "${url}")") + + update-source-version lmstudio "${version}" "${hash}" --system="${arch}" --version-key="version_${arch}" +done