Add llama-cpp to main flake
This commit is contained in:
parent
aca1bb473d
commit
3c3c232972
3 changed files with 108 additions and 13 deletions
56
flake.lock
generated
56
flake.lock
generated
|
@ -18,6 +18,24 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"flake-parts": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs-lib": "nixpkgs-lib"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1725234343,
|
||||||
|
"narHash": "sha256-+ebgonl3NbiKD2UD0x4BszCZQ6sTfL4xioaM49o5B3Y=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"rev": "567b938d64d4b4112ee253b9274472dc3a346eb6",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"flake-utils": {
|
"flake-utils": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"systems": "systems"
|
"systems": "systems"
|
||||||
|
@ -36,6 +54,30 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"llama-cpp": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-parts": [
|
||||||
|
"flake-parts"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1725824628,
|
||||||
|
"narHash": "sha256-oiVEb+PMKumREdoV1vEzxfSWFlHNNMgxADgfpFsR8pE=",
|
||||||
|
"owner": "ggerganov",
|
||||||
|
"repo": "llama.cpp",
|
||||||
|
"rev": "daa9623ab051a8162ae750b150b9522571b55f21",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "ggerganov",
|
||||||
|
"ref": "b3707",
|
||||||
|
"repo": "llama.cpp",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1722073938,
|
"lastModified": 1722073938,
|
||||||
|
@ -52,6 +94,18 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nixpkgs-lib": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1725233747,
|
||||||
|
"narHash": "sha256-Ss8QWLXdr2JCBPcYChJhz4xJm+h/xjl4G0c0XlP6a74=",
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://github.com/NixOS/nixpkgs/archive/356624c12086a18f2ea2825fed34523d60ccc4e3.tar.gz"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://github.com/NixOS/nixpkgs/archive/356624c12086a18f2ea2825fed34523d60ccc4e3.tar.gz"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1724208548,
|
"lastModified": 1724208548,
|
||||||
|
@ -103,7 +157,9 @@
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"devshell": "devshell",
|
"devshell": "devshell",
|
||||||
|
"flake-parts": "flake-parts",
|
||||||
"flake-utils": "flake-utils",
|
"flake-utils": "flake-utils",
|
||||||
|
"llama-cpp": "llama-cpp",
|
||||||
"nixpkgs": "nixpkgs_2",
|
"nixpkgs": "nixpkgs_2",
|
||||||
"npmlock2nix": "npmlock2nix",
|
"npmlock2nix": "npmlock2nix",
|
||||||
"rust-overlay": "rust-overlay"
|
"rust-overlay": "rust-overlay"
|
||||||
|
|
54
flake.nix
54
flake.nix
|
@ -1,18 +1,32 @@
|
||||||
{
|
{
|
||||||
description = "A Nix-flake-based Rust development environment";
|
description = "A Nix-flake-based Rust development environment";
|
||||||
nixConfig = {
|
nixConfig = {
|
||||||
extra-substituters = [ "https://nixcache.vlt81.de" ];
|
extra-substituters = [
|
||||||
extra-trusted-public-keys = [ "nixcache.vlt81.de:nw0FfUpePtL6P3IMNT9X6oln0Wg9REZINtkkI9SisqQ=" ];
|
"https://nixcache.vlt81.de"
|
||||||
|
"https://llama-cpp.cachix.org"
|
||||||
|
"https://cuda-maintainers.cachix.org"
|
||||||
|
];
|
||||||
|
extra-trusted-public-keys = [
|
||||||
|
"nixcache.vlt81.de:nw0FfUpePtL6P3IMNT9X6oln0Wg9REZINtkkI9SisqQ="
|
||||||
|
"llama-cpp.cachix.org-1:H75X+w83wUKTIPSO1KWy9ADUrzThyGs8P5tmAbkWhQc="
|
||||||
|
"cuda-maintainers.cachix.org-1:0dq3bujKpuEPMCX6U4WylrUDZ9JyUG0VpVZa7CNfq5E="
|
||||||
|
];
|
||||||
};
|
};
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
||||||
rust-overlay.url = "github:oxalica/rust-overlay";
|
rust-overlay.url = "github:oxalica/rust-overlay";
|
||||||
flake-utils.url = "github:numtide/flake-utils";
|
flake-utils.url = "github:numtide/flake-utils";
|
||||||
|
flake-parts.url = "github:hercules-ci/flake-parts";
|
||||||
devshell.url = "github:numtide/devshell";
|
devshell.url = "github:numtide/devshell";
|
||||||
npmlock2nix = {
|
npmlock2nix = {
|
||||||
url = "github:nix-community/npmlock2nix";
|
url = "github:nix-community/npmlock2nix";
|
||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
|
llama-cpp = {
|
||||||
|
url = "github:ggerganov/llama.cpp/b3707";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
inputs.flake-parts.follows = "flake-parts";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs =
|
outputs =
|
||||||
|
@ -22,12 +36,14 @@
|
||||||
, flake-utils
|
, flake-utils
|
||||||
, devshell
|
, devshell
|
||||||
, npmlock2nix
|
, npmlock2nix
|
||||||
,
|
, llama-cpp
|
||||||
|
, ...
|
||||||
}:
|
}:
|
||||||
flake-utils.lib.eachDefaultSystem
|
flake-utils.lib.eachDefaultSystem
|
||||||
(system:
|
(system:
|
||||||
let
|
let
|
||||||
overlays = [
|
overlays = [
|
||||||
|
llama-cpp.overlays.default
|
||||||
rust-overlay.overlays.default
|
rust-overlay.overlays.default
|
||||||
devshell.overlays.default
|
devshell.overlays.default
|
||||||
(final: prev: {
|
(final: prev: {
|
||||||
|
@ -39,6 +55,10 @@
|
||||||
];
|
];
|
||||||
pkgs = import nixpkgs {
|
pkgs = import nixpkgs {
|
||||||
inherit system overlays;
|
inherit system overlays;
|
||||||
|
config = {
|
||||||
|
allowUnfree = true;
|
||||||
|
rocmSupport = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
customNodeModules = pkgs.npmlock2nix.v2.node_modules {
|
customNodeModules = pkgs.npmlock2nix.v2.node_modules {
|
||||||
src = ./.;
|
src = ./.;
|
||||||
|
@ -68,17 +88,45 @@
|
||||||
libGL
|
libGL
|
||||||
wayland
|
wayland
|
||||||
];
|
];
|
||||||
|
rocmTargets = [
|
||||||
|
"gfx1100"
|
||||||
|
"gfx1102"
|
||||||
|
];
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
apps.devshell = self.outputs.devShells.${system}.default.flakeApp;
|
apps.devshell = self.outputs.devShells.${system}.default.flakeApp;
|
||||||
packages = {
|
packages = {
|
||||||
cargo-leptos = pkgs.callPackage ./.nix/cargo-leptos.nix { };
|
cargo-leptos = pkgs.callPackage ./.nix/cargo-leptos.nix { };
|
||||||
|
# llama-cpp = pkgs.callPackage "${llama-cpp}/.devops/nix/scope.nix" { };
|
||||||
|
myllamacpp = with pkgs;
|
||||||
|
llamaPackages.llama-cpp.overrideDerivation (oldAttrs: {
|
||||||
|
# speeds up builts by only building for a needed rocmTargets...
|
||||||
|
cmakeFlags = [
|
||||||
|
(lib.cmakeBool "LLAMA_BUILD_SERVER" true)
|
||||||
|
(lib.cmakeBool "BUILD_SHARED_LIBS" true)
|
||||||
|
(lib.cmakeBool "CMAKE_SKIP_BUILD_RPATH" true)
|
||||||
|
(lib.cmakeBool "LLAMA_CURL" true)
|
||||||
|
(lib.cmakeBool "GGML_NATIVE" true)
|
||||||
|
(lib.cmakeBool "GGML_BLAS" false)
|
||||||
|
(lib.cmakeBool "GGML_CUDA" false)
|
||||||
|
(lib.cmakeBool "GGML_HIPBLAS" true)
|
||||||
|
(lib.cmakeBool "GGML_METAL" false)
|
||||||
|
(lib.cmakeBool "GGML_VULKAN" false)
|
||||||
|
(lib.cmakeBool "GGML_STATIC" false)
|
||||||
|
(lib.cmakeBool "GGML_FMA" true)
|
||||||
|
(lib.cmakeBool "GGML_F16C" true)
|
||||||
|
(lib.cmakeBool "GGML_AVX512" true)
|
||||||
|
(lib.cmakeFeature "CMAKE_HIP_COMPILER" "${rocmPackages.llvm.clang}/bin/clang")
|
||||||
|
(lib.cmakeFeature "CMAKE_HIP_ARCHITECTURES" (builtins.concatStringsSep ";" rocmTargets))
|
||||||
|
];
|
||||||
|
});
|
||||||
};
|
};
|
||||||
devShells.default = pkgs.mkShell {
|
devShells.default = pkgs.mkShell {
|
||||||
packages = with pkgs;
|
packages = with pkgs;
|
||||||
[
|
[
|
||||||
customNodeModules
|
customNodeModules
|
||||||
customRustToolchain
|
customRustToolchain
|
||||||
|
self.packages.${system}.myllamacpp
|
||||||
binaryen
|
binaryen
|
||||||
cacert
|
cacert
|
||||||
cargo-bloat
|
cargo-bloat
|
||||||
|
|
|
@ -10,9 +10,6 @@
|
||||||
url = "github:nix-community/npmlock2nix";
|
url = "github:nix-community/npmlock2nix";
|
||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
llama-cpp = {
|
|
||||||
url = "git+https://git.vlt81.de/tristan/llama.cpp.git";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs =
|
outputs =
|
||||||
|
@ -22,7 +19,7 @@
|
||||||
, rust-overlay
|
, rust-overlay
|
||||||
, flake-utils
|
, flake-utils
|
||||||
, npmlock2nix
|
, npmlock2nix
|
||||||
, llama-cpp
|
,
|
||||||
}:
|
}:
|
||||||
flake-utils.lib.eachDefaultSystem
|
flake-utils.lib.eachDefaultSystem
|
||||||
(system:
|
(system:
|
||||||
|
@ -78,11 +75,6 @@
|
||||||
src = ./.;
|
src = ./.;
|
||||||
nodejs = pkgs.nodejs_20;
|
nodejs = pkgs.nodejs_20;
|
||||||
};
|
};
|
||||||
myllamacpp = llama-cpp.packages.${system}.rocm.override {
|
|
||||||
rocmTargets = [ "gfx1100" ];
|
|
||||||
llamaNative = true;
|
|
||||||
llamaLTO = false;
|
|
||||||
};
|
|
||||||
buildInputs = with pkgs; [
|
buildInputs = with pkgs; [
|
||||||
atk
|
atk
|
||||||
cairo
|
cairo
|
||||||
|
@ -142,7 +134,6 @@
|
||||||
sccache
|
sccache
|
||||||
sqlx-cli
|
sqlx-cli
|
||||||
unzip
|
unzip
|
||||||
myllamacpp
|
|
||||||
]
|
]
|
||||||
++ buildInputs;
|
++ buildInputs;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue