aboutsummaryrefslogtreecommitdiff
path: root/llama.cpp/.devops/nix/nixpkgs-instances.nix
diff options
context:
space:
mode:
Diffstat (limited to 'llama.cpp/.devops/nix/nixpkgs-instances.nix')
-rw-r--r--llama.cpp/.devops/nix/nixpkgs-instances.nix45
1 files changed, 45 insertions, 0 deletions
diff --git a/llama.cpp/.devops/nix/nixpkgs-instances.nix b/llama.cpp/.devops/nix/nixpkgs-instances.nix
new file mode 100644
index 0000000..40cf58f
--- /dev/null
+++ b/llama.cpp/.devops/nix/nixpkgs-instances.nix
@@ -0,0 +1,45 @@
1{ inputs, ... }:
2{
3 # The _module.args definitions are passed on to modules as arguments. E.g.
4 # the module `{ pkgs ... }: { /* config */ }` implicitly uses
5 # `_module.args.pkgs` (defined in this case by flake-parts).
6 perSystem =
7 { lib, system, ... }:
8 {
9 _module.args = {
10 # Note: bringing up https://zimbatm.com/notes/1000-instances-of-nixpkgs
11 # again, the below creates several nixpkgs instances which the
12 # flake-centric CLI will be forced to evaluate e.g. on `nix flake show`.
13 #
14 # This is currently "slow" and "expensive", on a certain scale.
15 # This also isn't "right" in that this hinders dependency injection at
16 # the level of flake inputs. This might get removed in the foreseeable
17 # future.
18 #
19 # Note that you can use these expressions without Nix
20 # (`pkgs.callPackage ./devops/nix/scope.nix { }` is the entry point).
21
22 pkgsCuda = import inputs.nixpkgs {
23 inherit system;
24 # Ensure dependencies use CUDA consistently (e.g. that openmpi, ucc,
25 # and ucx are built with CUDA support)
26 config.cudaSupport = true;
27 config.allowUnfreePredicate =
28 p:
29 builtins.all (
30 license:
31 license.free
32 || builtins.elem license.shortName [
33 "CUDA EULA"
34 "cuDNN EULA"
35 ]
36 ) (p.meta.licenses or (lib.toList p.meta.license));
37 };
38 # Ensure dependencies use ROCm consistently
39 pkgsRocm = import inputs.nixpkgs {
40 inherit system;
41 config.rocmSupport = true;
42 };
43 };
44 };
45}