Add llama-cpp to main flake

This commit is contained in:
Tristan D. 2024-09-09 14:56:13 +02:00
parent aca1bb473d
commit 3c3c232972
Signed by: tristan
SSH key fingerprint: SHA256:9oFM1J63hYWJjCnLG6C0fxBS15rwNcWwdQNMOHYKJ/4
3 changed files with 108 additions and 13 deletions

56
flake.lock generated
View file

@ -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"

View file

@ -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

View file

@ -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;