diff options
author | Pol Dellaiera <pol.dellaiera@protonmail.com> | 2024-04-14 10:57:54 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-14 10:57:54 +0200 |
commit | 5d67f4277d84c14d2e098dfa524c37291ded8138 (patch) | |
tree | 49eae024005ccfd224c8d9c53e662a458a3c913f /pkgs/tools/misc | |
parent | c2529df52aff216f8681faeb6be2ade6239b2672 (diff) | |
parent | 4508b5990092ce3d4760b6908667137c88adad5f (diff) |
Merge pull request #303708 from abysssol/update-ollama-0.1.31
ollama: 0.1.30 -> 0.1.31
Diffstat (limited to 'pkgs/tools/misc')
-rw-r--r-- | pkgs/tools/misc/ollama/default.nix | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/pkgs/tools/misc/ollama/default.nix b/pkgs/tools/misc/ollama/default.nix index 74bd213b043f5..a377d200fbb8e 100644 --- a/pkgs/tools/misc/ollama/default.nix +++ b/pkgs/tools/misc/ollama/default.nix @@ -19,23 +19,24 @@ , linuxPackages , darwin - # one of `[ null "rocm" "cuda" ]` -, acceleration ? null - , testers , ollama + +, config + # one of `[ null false "rocm" "cuda" ]` +, acceleration ? null }: let pname = "ollama"; # don't forget to invalidate all hashes each update - version = "0.1.30"; + version = "0.1.31"; src = fetchFromGitHub { owner = "jmorganca"; repo = "ollama"; rev = "v${version}"; - hash = "sha256-+cdYT5NUf00Rx0fpCvWUNg4gi+PAOmZVDUdB3omibm0="; + hash = "sha256-Ip1zrhgGpeYo2zsN206/x+tcG/bmPJAq4zGatqsucaw="; fetchSubmodules = true; }; vendorHash = "sha256-Lj7CBvS51RqF63c01cOCgY7BCQeCKGu794qzb/S80C0="; @@ -55,13 +56,24 @@ let }; - validAccel = lib.assertOneOf "ollama.acceleration" acceleration [ null "rocm" "cuda" ]; - - warnIfNotLinux = api: (lib.warnIfNot stdenv.isLinux + accelIsValid = builtins.elem acceleration [ null false "rocm" "cuda" ]; + validateFallback = lib.warnIf (config.rocmSupport && config.cudaSupport) + (lib.concatStrings [ + "both `nixpkgs.config.rocmSupport` and `nixpkgs.config.cudaSupport` are enabled, " + "but they are mutually exclusive; falling back to cpu" + ]) + (!(config.rocmSupport && config.cudaSupport)); + validateLinux = api: (lib.warnIfNot stdenv.isLinux "building ollama with `${api}` is only supported on linux; falling back to cpu" stdenv.isLinux); - enableRocm = validAccel && (acceleration == "rocm") && (warnIfNotLinux "rocm"); - enableCuda = validAccel && (acceleration == "cuda") && (warnIfNotLinux "cuda"); + shouldEnable = assert accelIsValid; + mode: fallback: + ((acceleration == mode) + || (fallback && acceleration == null && validateFallback)) + && (validateLinux mode); + + enableRocm = shouldEnable "rocm" config.rocmSupport; + enableCuda = shouldEnable "cuda" config.cudaSupport; rocmClang = linkFarm "rocm-clang" { |