nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 appimageTools,
3 fetchurl,
4 version,
5 url,
6 hash,
7 pname,
8 meta,
9 stdenv,
10 lib,
11 passthru,
12 graphicsmagick,
13}:
14let
15 src = fetchurl { inherit url hash; };
16
17 appimageContents = appimageTools.extractType2 { inherit pname version src; };
18in
19appimageTools.wrapType2 {
20 inherit
21 meta
22 pname
23 version
24 src
25 passthru
26 ;
27
28 nativeBuildInputs = [ graphicsmagick ];
29
30 extraPkgs = pkgs: [ pkgs.ocl-icd ];
31
32 extraInstallCommands = ''
33 mkdir -p $out/share/applications
34
35 # setup icons (see https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=lmstudio#n55 for how Arch solved this; approach adapted to here)
36 src_icon="${appimageContents}/usr/share/icons/hicolor/0x0/apps/lm-studio.png"
37 sizes=("16x16" "32x32" "48x48" "64x64" "128x128" "256x256")
38 for size in "''${sizes[@]}"; do
39 install -dm755 "$out/share/icons/hicolor/$size/apps"
40 gm convert "$src_icon" -resize "$size" "$out/share/icons/hicolor/$size/apps/lm-studio.png"
41 done
42
43 install -m 444 -D ${appimageContents}/lm-studio.desktop -t $out/share/applications
44
45 # Rename the main executable from lmstudio to lm-studio
46 mv $out/bin/lmstudio $out/bin/lm-studio
47
48 substituteInPlace $out/share/applications/lm-studio.desktop \
49 --replace-fail 'Exec=AppRun --no-sandbox %U' 'Exec=lm-studio'
50
51 # lms cli tool
52 install -m 755 ${appimageContents}/resources/app/.webpack/lms $out/bin/
53
54 patchelf --set-interpreter "${stdenv.cc.bintools.dynamicLinker}" \
55 --set-rpath "${lib.getLib stdenv.cc.cc}/lib:${lib.getLib stdenv.cc.cc}/lib64:$out/lib:${
56 lib.makeLibraryPath [ (lib.getLib stdenv.cc.cc) ]
57 }" $out/bin/lms
58 '';
59}