nixos_configs/overlays/ollama.nix
2024-12-23 22:08:45 -05:00

48 lines
1.3 KiB
Nix

{
config,
pkgs,
lib,
...
}: {
nixpkgs.overlays = [
(final: prev: {
ollama-intel = prev.ollama.overrideAttrs (oldAttrs: {
buildInputs =
oldAttrs.buildInputs
or []
++ [prev.intel-compute-runtime.drivers];
propagatedBuildInputs =
oldAttrs.propagetedBuildInputs
or []
++ [prev.intel-compute-runtime.drivers];
NIX_CFLAGS_COMPILE = "${oldAttrs.NIX_CFLAGS_COMPILE or ""} -mavx2 -mfma -O3";
cmakeFlags = [
"GGML_NATIVE=true"
"BUILD_SHARED_LIBS=true"
"GGML_BLAS=true"
"GGML_SYCL=true"
"GGML_SYCL_F16=false"
"CMAKE_C_COMPILER=icx"
"CMAKE_CXX_COMPILER=icpx"
];
postInstall =
(oldAttrs.postInstall or "")
+ ''
mkdir -p "$out/bin"
cat << EOF > "$out/bin/ollama-wrapped"
#!/bin/sh
export LD_LIBRARY_PATH="${prev.intel-compute-runtime.drivers}/lib"
export OLLAMA_INTEL_GPU=-1
exec "$out/bin/ollama-base" "\$@"
EOF
chmod +x "$out/bin/ollama-wrapped"
mv $out/bin/ollama $out/bin/ollama-base
ln -s "$out/bin/ollama-wrapped" "$out/bin/ollama"
'';
});
})
];
}