diff --git a/pkgs/by-name/ko/koboldcpp/package.nix b/pkgs/by-name/ko/koboldcpp/package.nix index 996afba2ed51..8f23b6167e3d 100644 --- a/pkgs/by-name/ko/koboldcpp/package.nix +++ b/pkgs/by-name/ko/koboldcpp/package.nix @@ -5,6 +5,7 @@ makeWrapper, gitUpdater, python3Packages, + python311Packages ? null, # Ignored. Kept for compatibility with the release tk, addDriverRunpath, @@ -21,7 +22,7 @@ cublasSupport ? config.cudaSupport, # You can find a full list here: https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/ # For example if you're on an GTX 1080 that means you're using "Pascal" and you need to pass "sm_60" - arches ? cudaPackages.cudaFlags.arches or [ ], + cudaArches ? cudaPackages.cudaFlags.arches or [ ], clblastSupport ? stdenv.isLinux, clblast, @@ -31,15 +32,23 @@ vulkan-loader, metalSupport ? stdenv.isDarwin && stdenv.isAarch64, + march ? "", + mtune ? "", }: let makeBool = option: bool: (if bool then "${option}=1" else ""); - makeWrapperArgs = lib.optionalString config.cudaSupport '' + libraryPathWrapperArgs = lib.optionalString config.cudaSupport '' --prefix LD_LIBRARY_PATH: "${lib.makeLibraryPath [ addDriverRunpath.driverLink ]}" ''; + darwinFrameworks = + if (stdenv.isDarwin && stdenv.isx86_64) then + darwin.apple_sdk.frameworks + else + darwin.apple_sdk_11_0.frameworks; + effectiveStdenv = if cublasSupport then cudaPackages.backendStdenv else stdenv; in effectiveStdenv.mkDerivation (finalAttrs: { @@ -66,15 +75,15 @@ effectiveStdenv.mkDerivation (finalAttrs: { [ tk ] ++ finalAttrs.pythonInputs ++ lib.optionals effectiveStdenv.isDarwin [ - darwin.apple_sdk_11_0.frameworks.Accelerate - darwin.apple_sdk_11_0.frameworks.CoreVideo - darwin.apple_sdk_11_0.frameworks.CoreGraphics - darwin.apple_sdk_11_0.frameworks.CoreServices + darwinFrameworks.Accelerate + darwinFrameworks.CoreVideo + darwinFrameworks.CoreGraphics + darwinFrameworks.CoreServices ] ++ lib.optionals metalSupport [ - darwin.apple_sdk_11_0.frameworks.MetalKit - darwin.apple_sdk_11_0.frameworks.Foundation - darwin.apple_sdk_11_0.frameworks.MetalPerformanceShaders + darwinFrameworks.MetalKit + darwinFrameworks.Foundation + darwinFrameworks.MetalPerformanceShaders ] ++ lib.optionals openblasSupport [ openblas ] ++ lib.optionals cublasSupport [ @@ -92,27 +101,35 @@ effectiveStdenv.mkDerivation (finalAttrs: { pythonPath = finalAttrs.pythonInputs; darwinLdFlags = lib.optionals stdenv.isDarwin [ - "-F${darwin.apple_sdk_11_0.frameworks.CoreServices}/Library/Frameworks" - "-F${darwin.apple_sdk_11_0.frameworks.Accelerate}/Library/Frameworks" + "-F${darwinFrameworks.CoreServices}/Library/Frameworks" + "-F${darwinFrameworks.Accelerate}/Library/Frameworks" "-framework CoreServices" "-framework Accelerate" ]; metalLdFlags = lib.optionals metalSupport [ - "-F${darwin.apple_sdk_11_0.frameworks.Foundation}/Library/Frameworks" - "-F${darwin.apple_sdk_11_0.frameworks.Metal}/Library/Frameworks" + "-F${darwinFrameworks.Foundation}/Library/Frameworks" + "-F${darwinFrameworks.Metal}/Library/Frameworks" "-framework Foundation" "-framework Metal" ]; env.NIX_LDFLAGS = lib.concatStringsSep " " (finalAttrs.darwinLdFlags ++ finalAttrs.metalLdFlags); + env.NIX_CFLAGS_COMPILE = + lib.optionalString (march != "") ( + lib.warn "koboldcpp: the march argument is only kept for compatibility; use overrideAttrs intead" "-march=${march}" + ) + + lib.optionalString (mtune != "") ( + lib.warn "koboldcpp: the mtune argument is only kept for compatibility; use overrideAttrs intead" "-mtune=${mtune}" + ); + makeFlags = [ (makeBool "LLAMA_OPENBLAS" openblasSupport) (makeBool "LLAMA_CUBLAS" cublasSupport) (makeBool "LLAMA_CLBLAST" clblastSupport) (makeBool "LLAMA_VULKAN" vulkanSupport) (makeBool "LLAMA_METAL" metalSupport) - (lib.optionalString cublasSupport "CUDA_DOCKER_ARCH=sm_${builtins.head arches}") + (lib.optionals cublasSupport "CUDA_DOCKER_ARCH=sm_${builtins.head cudaArches}") ]; installPhase = '' @@ -141,7 +158,7 @@ effectiveStdenv.mkDerivation (finalAttrs: { postFixup = '' wrapPythonProgramsIn "$out/bin" "$pythonPath" makeWrapper "$out/bin/koboldcpp.unwrapped" "$out/bin/koboldcpp" \ - --prefix PATH ${lib.makeBinPath [ tk ]} ${makeWrapperArgs} + --prefix PATH ${lib.makeBinPath [ tk ]} ${libraryPathWrapperArgs} ''; passthru.updateScript = gitUpdater { rev-prefix = "v"; };