mirror of
				https://github.com/ggml-org/llama.cpp.git
				synced 2025-10-27 08:21:30 +00:00 
			
		
		
		
	flake : update to support metal on m1/m2 (#1724)
This commit is contained in:
		 jacobi petrucciani
					jacobi petrucciani
				
			
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			 GitHub
						GitHub
					
				
			
						parent
						
							4dc62c545d
						
					
				
				
					commit
					5b57a5b726
				
			
							
								
								
									
										30
									
								
								flake.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										30
									
								
								flake.lock
									
									
									
										generated
									
									
									
								
							| @@ -1,12 +1,15 @@ | |||||||
| { | { | ||||||
|   "nodes": { |   "nodes": { | ||||||
|     "flake-utils": { |     "flake-utils": { | ||||||
|  |       "inputs": { | ||||||
|  |         "systems": "systems" | ||||||
|  |       }, | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1676283394, |         "lastModified": 1685518550, | ||||||
|         "narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=", |         "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", | ||||||
|         "owner": "numtide", |         "owner": "numtide", | ||||||
|         "repo": "flake-utils", |         "repo": "flake-utils", | ||||||
|         "rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073", |         "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
| @@ -17,11 +20,11 @@ | |||||||
|     }, |     }, | ||||||
|     "nixpkgs": { |     "nixpkgs": { | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1678470307, |         "lastModified": 1685931219, | ||||||
|         "narHash": "sha256-OEeMUr3ueLIXyW/OaFUX5jUdimyQwMg/7e+/Q0gC/QE=", |         "narHash": "sha256-8EWeOZ6LKQfgAjB/USffUSELPRjw88A+xTcXnOUvO5M=", | ||||||
|         "owner": "NixOS", |         "owner": "NixOS", | ||||||
|         "repo": "nixpkgs", |         "repo": "nixpkgs", | ||||||
|         "rev": "0c4800d579af4ed98ecc47d464a5e7b0870c4b1f", |         "rev": "7409480d5c8584a1a83c422530419efe4afb0d19", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
| @@ -36,6 +39,21 @@ | |||||||
|         "flake-utils": "flake-utils", |         "flake-utils": "flake-utils", | ||||||
|         "nixpkgs": "nixpkgs" |         "nixpkgs": "nixpkgs" | ||||||
|       } |       } | ||||||
|  |     }, | ||||||
|  |     "systems": { | ||||||
|  |       "locked": { | ||||||
|  |         "lastModified": 1681028828, | ||||||
|  |         "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", | ||||||
|  |         "owner": "nix-systems", | ||||||
|  |         "repo": "default", | ||||||
|  |         "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", | ||||||
|  |         "type": "github" | ||||||
|  |       }, | ||||||
|  |       "original": { | ||||||
|  |         "owner": "nix-systems", | ||||||
|  |         "repo": "default", | ||||||
|  |         "type": "github" | ||||||
|  |       } | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   "root": "root", |   "root": "root", | ||||||
|   | |||||||
							
								
								
									
										26
									
								
								flake.nix
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								flake.nix
									
									
									
									
									
								
							| @@ -6,6 +6,13 @@ | |||||||
|   outputs = { self, nixpkgs, flake-utils }: |   outputs = { self, nixpkgs, flake-utils }: | ||||||
|     flake-utils.lib.eachDefaultSystem (system: |     flake-utils.lib.eachDefaultSystem (system: | ||||||
|       let |       let | ||||||
|  |         inherit (pkgs.stdenv) isAarch64 isDarwin; | ||||||
|  |         inherit (pkgs.lib) optionals; | ||||||
|  |         isM1 = isAarch64 && isDarwin; | ||||||
|  |         osSpecific = | ||||||
|  |           if isM1 then with pkgs.darwin.apple_sdk_11_0.frameworks; [ Accelerate MetalKit MetalPerformanceShaders MetalPerformanceShadersGraph ] | ||||||
|  |           else if isDarwin then with pkgs.darwin.apple_sdk.frameworks; [ Accelerate CoreGraphics CoreVideo ] | ||||||
|  |           else [ ]; | ||||||
|         pkgs = import nixpkgs { |         pkgs = import nixpkgs { | ||||||
|           inherit system; |           inherit system; | ||||||
|         }; |         }; | ||||||
| @@ -18,17 +25,22 @@ | |||||||
|         packages.default = pkgs.stdenv.mkDerivation { |         packages.default = pkgs.stdenv.mkDerivation { | ||||||
|           name = "llama.cpp"; |           name = "llama.cpp"; | ||||||
|           src = ./.; |           src = ./.; | ||||||
|  |           postPatch = | ||||||
|  |             if isM1 then '' | ||||||
|  |               substituteInPlace ./ggml-metal.m \ | ||||||
|  |                 --replace '[[NSBundle mainBundle] pathForResource:@"ggml-metal" ofType:@"metal"];' "@\"$out/ggml-metal.metal\";" | ||||||
|  |             '' else ""; | ||||||
|           nativeBuildInputs = with pkgs; [ cmake ]; |           nativeBuildInputs = with pkgs; [ cmake ]; | ||||||
|           buildInputs = with pkgs; lib.optionals stdenv.isDarwin [ |           buildInputs = osSpecific; | ||||||
|             darwin.apple_sdk.frameworks.Accelerate |           cmakeFlags = [ "-DLLAMA_BUILD_SERVER=ON" ] ++ (optionals isM1 [ | ||||||
|           ]; |  | ||||||
|           cmakeFlags = with pkgs; lib.optionals (system == "aarch64-darwin") [ |  | ||||||
|             "-DCMAKE_C_FLAGS=-D__ARM_FEATURE_DOTPROD=1" |             "-DCMAKE_C_FLAGS=-D__ARM_FEATURE_DOTPROD=1" | ||||||
|           ]; |             "-DLLAMA_METAL=ON" | ||||||
|  |           ]); | ||||||
|           installPhase = '' |           installPhase = '' | ||||||
|             mkdir -p $out/bin |             mkdir -p $out/bin | ||||||
|             mv bin/* $out/bin/ |             mv bin/* $out/bin/ | ||||||
|             mv $out/bin/main $out/bin/llama |             mv $out/bin/main $out/bin/llama | ||||||
|  |             mv $out/bin/server $out/bin/llama-server | ||||||
|  |  | ||||||
|             echo "#!${llama-python}/bin/python" > $out/bin/convert.py |             echo "#!${llama-python}/bin/python" > $out/bin/convert.py | ||||||
|             cat ${./convert.py} >> $out/bin/convert.py |             cat ${./convert.py} >> $out/bin/convert.py | ||||||
| @@ -40,9 +52,7 @@ | |||||||
|           packages = with pkgs; [ |           packages = with pkgs; [ | ||||||
|             cmake |             cmake | ||||||
|             llama-python |             llama-python | ||||||
|           ] ++ lib.optionals stdenv.isDarwin [ |           ] ++ osSpecific; | ||||||
|             darwin.apple_sdk.frameworks.Accelerate |  | ||||||
|           ]; |  | ||||||
|         }; |         }; | ||||||
|       } |       } | ||||||
|     ); |     ); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user