|
|
@@ -7,7 +7,8 @@
|
|
|
flake-utils.lib.eachDefaultSystem (system:
|
|
|
let
|
|
|
inherit (pkgs.stdenv) isAarch32 isAarch64 isDarwin;
|
|
|
- osSpecific = with pkgs; [ openmpi ] ++
|
|
|
+ buildInputs = with pkgs; [ openmpi ];
|
|
|
+ osSpecific = with pkgs; buildInputs ++
|
|
|
(
|
|
|
if isAarch64 && isDarwin then
|
|
|
with pkgs.darwin.apple_sdk_11_0.frameworks; [
|
|
|
@@ -29,18 +30,24 @@
|
|
|
nativeBuildInputs = with pkgs; [ cmake pkgconfig ];
|
|
|
llama-python =
|
|
|
pkgs.python3.withPackages (ps: with ps; [ numpy sentencepiece ]);
|
|
|
+ postPatch = ''
|
|
|
+ substituteInPlace ./ggml-metal.m \
|
|
|
+ --replace '[bundle pathForResource:@"ggml-metal" ofType:@"metal"];' "@\"$out/bin/ggml-metal.metal\";"
|
|
|
+ substituteInPlace ./*.py --replace '/usr/bin/env python' '${llama-python}/bin/python'
|
|
|
+ '';
|
|
|
+ postInstall = ''
|
|
|
+ mv $out/bin/main $out/bin/llama
|
|
|
+ mv $out/bin/server $out/bin/llama-server
|
|
|
+ '';
|
|
|
+ cmakeFlags = [ "-DLLAMA_BUILD_SERVER=ON" "-DLLAMA_MPI=ON" "-DBUILD_SHARED_LIBS=ON" "-DCMAKE_SKIP_BUILD_RPATH=ON" ];
|
|
|
in {
|
|
|
packages.default = pkgs.stdenv.mkDerivation {
|
|
|
name = "llama.cpp";
|
|
|
src = ./.;
|
|
|
- postPatch = ''
|
|
|
- substituteInPlace ./ggml-metal.m \
|
|
|
- --replace '[bundle pathForResource:@"ggml-metal" ofType:@"metal"];' "@\"$out/bin/ggml-metal.metal\";"
|
|
|
- substituteInPlace ./*.py --replace '/usr/bin/env python' '${llama-python}/bin/python'
|
|
|
- '';
|
|
|
+ postPatch = postPatch;
|
|
|
nativeBuildInputs = nativeBuildInputs;
|
|
|
buildInputs = osSpecific;
|
|
|
- cmakeFlags = [ "-DLLAMA_BUILD_SERVER=ON" "-DLLAMA_MPI=ON" "-DBUILD_SHARED_LIBS=ON" "-DCMAKE_SKIP_BUILD_RPATH=ON" ]
|
|
|
+ cmakeFlags = cmakeFlags
|
|
|
++ (if isAarch64 && isDarwin then [
|
|
|
"-DCMAKE_C_FLAGS=-D__ARM_FEATURE_DOTPROD=1"
|
|
|
"-DLLAMA_METAL=ON"
|
|
|
@@ -48,10 +55,19 @@
|
|
|
"-DLLAMA_BLAS=ON"
|
|
|
"-DLLAMA_BLAS_VENDOR=OpenBLAS"
|
|
|
]);
|
|
|
- postInstall = ''
|
|
|
- mv $out/bin/main $out/bin/llama
|
|
|
- mv $out/bin/server $out/bin/llama-server
|
|
|
- '';
|
|
|
+ postInstall = postInstall;
|
|
|
+ meta.mainProgram = "llama";
|
|
|
+ };
|
|
|
+ packages.opencl = pkgs.stdenv.mkDerivation {
|
|
|
+ name = "llama.cpp";
|
|
|
+ src = ./.;
|
|
|
+ postPatch = postPatch;
|
|
|
+ nativeBuildInputs = nativeBuildInputs;
|
|
|
+ buildInputs = with pkgs; buildInputs ++ [ clblast ];
|
|
|
+ cmakeFlags = cmakeFlags ++ [
|
|
|
+ "-DLLAMA_CLBLAST=ON"
|
|
|
+ ];
|
|
|
+ postInstall = postInstall;
|
|
|
meta.mainProgram = "llama";
|
|
|
};
|
|
|
apps.llama-server = {
|