Compare commits
	
		
			28 Commits
		
	
	
		
			8660752e1b
			...
			main
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 51038c5b6c | |||
| 8f02cf55b2 | |||
| 77fac19667 | |||
| 21673b7396 | |||
| 27a4764e00 | |||
| b26187ae7d | |||
| 539624da38 | |||
| e5a7804eae | |||
| 18e2916e54 | |||
| baa4fcd4c2 | |||
| 63dd4c75bc | |||
| 76536821fb | |||
| af6bedc09d | |||
| 964aa04878 | |||
| 4da830c97e | |||
| 84f446e82c | |||
| 582deb42ab | |||
| 18d0646948 | |||
| d6a9713620 | |||
| ba2f6e9404 | |||
| 19dc5d7b4f | |||
| 6a0bbb90d2 | |||
| b8c8735d42 | |||
| 1ef47a00bd | |||
| e7d58bb03a | |||
| 8e2ef04cce | |||
| 6436a82d58 | |||
| 9473348b57 | 
							
								
								
									
										11
									
								
								.gitea/workflows/checks.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								.gitea/workflows/checks.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | |||||||
|  | name: checks | ||||||
|  | on: | ||||||
|  |   push: | ||||||
|  |     branches: | ||||||
|  |       - main | ||||||
|  | jobs: | ||||||
|  |   checks: | ||||||
|  |     runs-on: nix | ||||||
|  |     steps: | ||||||
|  |       - uses: actions/checkout@v4 | ||||||
|  |       - run: nix flake check -L --all-systems | ||||||
							
								
								
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  | /result | ||||||
|  | **/result | ||||||
|  | result | ||||||
							
								
								
									
										6
									
								
								flake.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								flake.lock
									
									
									
										generated
									
									
									
								
							| @@ -20,11 +20,11 @@ | |||||||
|     }, |     }, | ||||||
|     "nixpkgs": { |     "nixpkgs": { | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1753694789, |         "lastModified": 1759831965, | ||||||
|         "narHash": "sha256-cKgvtz6fKuK1Xr5LQW/zOUiAC0oSQoA9nOISB0pJZqM=", |         "narHash": "sha256-vgPm2xjOmKdZ0xKA6yLXPJpjOtQPHfaZDRtH+47XEBo=", | ||||||
|         "owner": "NixOS", |         "owner": "NixOS", | ||||||
|         "repo": "nixpkgs", |         "repo": "nixpkgs", | ||||||
|         "rev": "dc9637876d0dcc8c9e5e22986b857632effeb727", |         "rev": "c9b6fb798541223bbb396d287d16f43520250518", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|   | |||||||
							
								
								
									
										36
									
								
								flake.nix
									
									
									
									
									
								
							
							
						
						
									
										36
									
								
								flake.nix
									
									
									
									
									
								
							| @@ -11,11 +11,11 @@ | |||||||
|       self, |       self, | ||||||
|       nixpkgs, |       nixpkgs, | ||||||
|       flake-utils, |       flake-utils, | ||||||
|     }: |     }@inputs: | ||||||
|  |  | ||||||
|     { |     { | ||||||
|       overlays.default = |       overlays.default = | ||||||
|         final: prev: (import "${nixpkgs}/pkgs/top-level/by-name-overlay.nix" ./pkgs/by-name) final prev; |         final: prev: ((import "${nixpkgs}/pkgs/top-level/by-name-overlay.nix" ./pkgs/by-name) final prev); | ||||||
|     } |     } | ||||||
|     // |     // | ||||||
|       flake-utils.lib.eachSystem |       flake-utils.lib.eachSystem | ||||||
| @@ -36,8 +36,11 @@ | |||||||
|               let |               let | ||||||
|                 isDrv = lib.isDerivation pkg; |                 isDrv = lib.isDerivation pkg; | ||||||
|                 isAttrs = lib.isAttrs pkg; |                 isAttrs = lib.isAttrs pkg; | ||||||
|  |                 isSameSystem = lib.meta.availableOn pkgs.stdenv.hostPlatform pkg; | ||||||
|               in |               in | ||||||
|               if isDrv then |               if !isSameSystem then | ||||||
|  |                 [ ] | ||||||
|  |               else if isDrv then | ||||||
|                 [ |                 [ | ||||||
|                   (lib.nameValuePair name pkg) |                   (lib.nameValuePair name pkg) | ||||||
|                 ] |                 ] | ||||||
| @@ -48,14 +51,29 @@ | |||||||
|             flatPackages = builtins.listToAttrs ( |             flatPackages = builtins.listToAttrs ( | ||||||
|               lib.lists.flatten (lib.mapAttrsToList (name: pkg: recursePackage name pkg) scope) |               lib.lists.flatten (lib.mapAttrsToList (name: pkg: recursePackage name pkg) scope) | ||||||
|             ); |             ); | ||||||
|             workingPackages = lib.filterAttrs (_: pkg: !pkg.meta.broken) self.packages.${system}; |             workingPackages = lib.filterAttrs (_: pkg: !pkg.meta.broken) flatPackages; | ||||||
|  |             # Disable for now | ||||||
|  |             # recursePackageSets = | ||||||
|  |             #   pkg: | ||||||
|  |             #   let | ||||||
|  |             #     isDrv = lib.isDerivation pkg; | ||||||
|  |             #     isAttrs = lib.isAttrs pkg; | ||||||
|  |             #     isSameSystem = lib.meta.availableOn pkgs.stdenv.hostPlatform pkg; | ||||||
|  |             #   in | ||||||
|  |             #   if isDrv && isSameSystem then | ||||||
|  |             #     pkg | ||||||
|  |             #   else if isAttrs then | ||||||
|  |             #     lib.mapAttrs (_: subPkg: recursePackageSets subPkg) pkg | ||||||
|  |             #   else | ||||||
|  |             #     null; | ||||||
|  |             # | ||||||
|  |             # # Recursively filter out nulls and remove overrides (probably a btter way to do this but it works for now) | ||||||
|  |             # packageSets = lib.filterAttrsRecursive (k: v: v != null && k != "override") ( | ||||||
|  |             #   lib.mapAttrs (name: pkg: recursePackageSets pkg) scope | ||||||
|  |             # ); | ||||||
|           in |           in | ||||||
|           { |           { | ||||||
|             inherit flatPackages; |             packages = flatPackages; | ||||||
|             inherit pkgs; |  | ||||||
|             packages = lib.filterAttrs ( |  | ||||||
|               _: pkg: lib.isDerivation pkg && (lib.meta.availableOn pkgs.stdenv.hostPlatform pkg) |  | ||||||
|             ) scope; |  | ||||||
|             checks = lib.mapAttrs' (n: lib.nameValuePair "package-${n}") workingPackages; |             checks = lib.mapAttrs' (n: lib.nameValuePair "package-${n}") workingPackages; | ||||||
|           } |           } | ||||||
|         ); |         ); | ||||||
|   | |||||||
| @@ -13,10 +13,6 @@ let | |||||||
|     hash = "sha256-iE4lqyr3zmLcgFnsrDvQ/CKUV15ijqmIbUIs9sgMECg="; |     hash = "sha256-iE4lqyr3zmLcgFnsrDvQ/CKUV15ijqmIbUIs9sgMECg="; | ||||||
|   }; |   }; | ||||||
| in | in | ||||||
| lib.packagesFromDirectoryRecursive { | lib.makeScope newScope (self: { | ||||||
|   inherit callPackage newScope; |   ath12k-tools = self.callPackage ./ath12k-tools.nix { inherit src; }; | ||||||
|   directory = ./tools; | }) | ||||||
| } |  | ||||||
| # lib.makeScope newScope (self: { |  | ||||||
| #   ath12k-tools = self.callPackage ./ath12k-tools.nix { inherit src; }; |  | ||||||
| # }) |  | ||||||
|   | |||||||
							
								
								
									
										32
									
								
								pkgs/by-name/ba/base24-schemes/package.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								pkgs/by-name/ba/base24-schemes/package.nix
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | |||||||
|  | { | ||||||
|  |   lib, | ||||||
|  |   stdenv, | ||||||
|  |   fetchFromGitHub, | ||||||
|  |   ... | ||||||
|  | }: | ||||||
|  | stdenv.mkDerivation (finalAttrs: { | ||||||
|  |   pname = "base24-schemes"; | ||||||
|  |   version = "unstable-2025-04-18"; | ||||||
|  |  | ||||||
|  |   src = fetchFromGitHub { | ||||||
|  |     owner = "tinted-theming"; | ||||||
|  |     repo = "schemes"; | ||||||
|  |     rev = "28c26a621123ad4ebd5bbfb34ab39421c0144bdd"; | ||||||
|  |     hash = "sha256-Fg+rdGs5FAgfkYNCs74lnl8vkQmiZVdBsziyPhVqrlY="; | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  |   installPhase = '' | ||||||
|  |     runHook preInstall | ||||||
|  |  | ||||||
|  |     mkdir -p $out/share/themes/ | ||||||
|  |     install base24/*.yaml $out/share/themes/ | ||||||
|  |  | ||||||
|  |     runHook postInstall | ||||||
|  |   ''; | ||||||
|  |  | ||||||
|  |   meta = with lib; { | ||||||
|  |     description = "All the color schemes for use in base24 packages"; | ||||||
|  |     homepage = finalAttrs.src.meta.homepage; | ||||||
|  |     license = licenses.mit; | ||||||
|  |   }; | ||||||
|  | }) | ||||||
							
								
								
									
										5
									
								
								pkgs/by-name/cl/claude-code-acp/info.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								pkgs/by-name/cl/claude-code-acp/info.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | { | ||||||
|  |   "version": "0.6.7", | ||||||
|  |   "srcHash": "sha256-v32Q02ALWw6Upd4rrHGZH7Vt25+xSnKJCNGJob/irgM=", | ||||||
|  |   "npmDepsHash": "sha256-oUAHkB4EPuo8YCxi9Y/Lc8cipjJQ05o51MpdUsCjiiQ=" | ||||||
|  | } | ||||||
							
								
								
									
										36
									
								
								pkgs/by-name/cl/claude-code-acp/package.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								pkgs/by-name/cl/claude-code-acp/package.nix
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,36 @@ | |||||||
|  | { | ||||||
|  |   lib, | ||||||
|  |   buildNpmPackage, | ||||||
|  |   fetchFromGitHub, | ||||||
|  | }: | ||||||
|  | let | ||||||
|  |   info = lib.importJSON ./info.json; | ||||||
|  | in | ||||||
|  | buildNpmPackage { | ||||||
|  |   pname = "claude-code-acp"; | ||||||
|  |   version = info.version; | ||||||
|  |  | ||||||
|  |   src = fetchFromGitHub { | ||||||
|  |     owner = "zed-industries"; | ||||||
|  |     repo = "claude-code-acp"; | ||||||
|  |     rev = "v${info.version}"; | ||||||
|  |     hash = info.srcHash; | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  |   npmDepsHash = info.npmDepsHash; | ||||||
|  |  | ||||||
|  |   # The package uses TypeScript and builds before publishing | ||||||
|  |   npmBuildScript = "build"; | ||||||
|  |  | ||||||
|  |   passthru = { | ||||||
|  |     updateScript = ./update.mjs; | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  |   meta = { | ||||||
|  |     description = "Use Claude Code from any ACP client such as Zed"; | ||||||
|  |     homepage = "https://github.com/zed-industries/claude-code-acp"; | ||||||
|  |     license = lib.licenses.asl20; | ||||||
|  |     maintainers = with lib.maintainers; [ ]; | ||||||
|  |     mainProgram = "claude-code-acp"; | ||||||
|  |   }; | ||||||
|  | } | ||||||
							
								
								
									
										77
									
								
								pkgs/by-name/cl/claude-code-acp/update.mjs
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										77
									
								
								pkgs/by-name/cl/claude-code-acp/update.mjs
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,77 @@ | |||||||
|  | #! /usr/bin/env nix-shell | ||||||
|  | /* | ||||||
|  | #! nix-shell -i zx  -p nix-prefetch-github -p zx | ||||||
|  | */ | ||||||
|  |  | ||||||
|  | import { readFileSync, writeFileSync } from "fs"; | ||||||
|  | import { dirname, join } from "path"; | ||||||
|  | import { fileURLToPath } from "url"; | ||||||
|  |  | ||||||
|  | const __filename = fileURLToPath(import.meta.url); | ||||||
|  | const __dirname = dirname(__filename); | ||||||
|  |  | ||||||
|  | // GitHub API endpoint for latest release | ||||||
|  | const GITHUB_API = "https://api.github.com/repos/zed-industries/claude-code-acp/releases/latest"; | ||||||
|  |  | ||||||
|  | // Read current info.json | ||||||
|  | const infoPath = join(__dirname, "info.json"); | ||||||
|  | const currentInfo = JSON.parse(readFileSync(infoPath, "utf-8")); | ||||||
|  |  | ||||||
|  | console.log(`Current version: ${currentInfo.version}`); | ||||||
|  |  | ||||||
|  | // Fetch latest release from GitHub | ||||||
|  | console.log("Fetching latest release from GitHub..."); | ||||||
|  | const response = await fetch(GITHUB_API); | ||||||
|  | const release = await response.json(); | ||||||
|  |  | ||||||
|  | const latestVersion = release.tag_name.replace(/^v/, ""); // Remove 'v' prefix | ||||||
|  | console.log(`Latest version: ${latestVersion}`); | ||||||
|  |  | ||||||
|  | if (currentInfo.version === latestVersion) { | ||||||
|  |   console.log("Already up to date!"); | ||||||
|  |   process.exit(0); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Update version | ||||||
|  | currentInfo.version = latestVersion; | ||||||
|  |  | ||||||
|  | // Prefetch source hash | ||||||
|  | console.log("Prefetching source hash..."); | ||||||
|  | const srcHashOutput = await $`nix-prefetch-github zed-industries claude-code-acp --rev v${latestVersion}`; | ||||||
|  | const srcPrefetch = JSON.parse(srcHashOutput.stdout); | ||||||
|  | currentInfo.srcHash = srcPrefetch.hash; | ||||||
|  |  | ||||||
|  | console.log(`Source hash: ${currentInfo.srcHash}`); | ||||||
|  |  | ||||||
|  | // Write temporary info.json to get npmDepsHash | ||||||
|  | writeFileSync(infoPath, JSON.stringify(currentInfo, null, 2) + "\n"); | ||||||
|  |  | ||||||
|  | // Prefetch npm dependencies hash | ||||||
|  | console.log("Prefetching npm dependencies hash..."); | ||||||
|  | try { | ||||||
|  |   // This will fail with the expected hash in the error message | ||||||
|  |   await $`nix build .#claude-code-acp`; | ||||||
|  |  | ||||||
|  | } catch (error) { | ||||||
|  |   // Extract hash from error message | ||||||
|  |   const errorOutput = error.stderr; | ||||||
|  |   const hashMatch = errorOutput.match(/got:\s+(sha256-[A-Za-z0-9+/=]+)/); | ||||||
|  |  | ||||||
|  |   if (hashMatch) { | ||||||
|  |     currentInfo.npmDepsHash = hashMatch[1]; | ||||||
|  |     console.log(`npm deps hash: ${currentInfo.npmDepsHash}`); | ||||||
|  |   } else { | ||||||
|  |     console.error("Failed to extract npmDepsHash from build output"); | ||||||
|  |     console.error("You may need to update it manually by running:"); | ||||||
|  |     console.error(`  nix-build -A claude-code-acp`); | ||||||
|  |     console.error("and copying the hash from the error message"); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Write final info.json | ||||||
|  | writeFileSync(infoPath, JSON.stringify(currentInfo, null, 2) + "\n"); | ||||||
|  |  | ||||||
|  | console.log("\nUpdate complete!"); | ||||||
|  | console.log(`Version: ${currentInfo.version}`); | ||||||
|  | console.log(`Source hash: ${currentInfo.srcHash}`); | ||||||
|  | console.log(`npm deps hash: ${currentInfo.npmDepsHash}`); | ||||||
							
								
								
									
										6281
									
								
								pkgs/by-name/fl/flightcore/cargo-lock.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6281
									
								
								pkgs/by-name/fl/flightcore/cargo-lock.patch
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										72
									
								
								pkgs/by-name/fl/flightcore/package.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								pkgs/by-name/fl/flightcore/package.nix
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,72 @@ | |||||||
|  | { | ||||||
|  |   lib, | ||||||
|  |   stdenv, | ||||||
|  |   rustPlatform, | ||||||
|  |   jq, | ||||||
|  |   moreutils, | ||||||
|  |   fetchNpmDeps, | ||||||
|  |   cargo-tauri, | ||||||
|  |   glib-networking, | ||||||
|  |   nodejs, | ||||||
|  |   npmHooks, | ||||||
|  |   openssl, | ||||||
|  |   pkg-config, | ||||||
|  |   webkitgtk_4_1, | ||||||
|  |   wrapGAppsHook4, | ||||||
|  |   fetchFromGitHub, | ||||||
|  | }: | ||||||
|  |  | ||||||
|  | rustPlatform.buildRustPackage (finalAttrs: { | ||||||
|  |   pname = "flightcore"; | ||||||
|  |   version = "3.2.0"; | ||||||
|  |   src = fetchFromGitHub { | ||||||
|  |     owner = "R2NorthstarTools"; | ||||||
|  |     repo = "FlightCore"; | ||||||
|  |     rev = "v${finalAttrs.version}"; | ||||||
|  |     sha256 = "sha256-MFnW9cXFzqmdtC31r8cRcihV3NjGAC6+2/DnNVMheCI="; | ||||||
|  |   }; | ||||||
|  |   patches = [ ./cargo-lock.patch ]; | ||||||
|  |   cargoDeps = rustPlatform.fetchCargoVendor { | ||||||
|  |     src = finalAttrs.src; | ||||||
|  |     sourceRoot = "${finalAttrs.src.name}/${finalAttrs.cargoRoot}"; | ||||||
|  |     hash = "sha256-Jh0DAX4fGy2Z1+hpq+bkU/VYy2JAL2u+neUIsQ2QXBU="; | ||||||
|  |     patchFlags = "-p2"; | ||||||
|  |     inherit (finalAttrs) patches; | ||||||
|  |   }; | ||||||
|  |   postPatch = '' | ||||||
|  |     jq '.bundle.createUpdaterArtifacts = false' src-tauri/tauri.conf.json | sponge src-tauri/tauri.conf.json | ||||||
|  |   ''; | ||||||
|  |   npmDeps = fetchNpmDeps { | ||||||
|  |     name = "${finalAttrs.pname}-${finalAttrs.version}-npm-deps"; | ||||||
|  |     src = "${finalAttrs.src}/src-vue"; | ||||||
|  |     hash = "sha256-QhUPkCBK1kcAF7gByFxlg8Ca9PLF3evCl0QYEPP/Q2c="; | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  |   nativeBuildInputs = [ | ||||||
|  |     cargo-tauri.hook | ||||||
|  |  | ||||||
|  |     nodejs | ||||||
|  |     npmHooks.npmConfigHook | ||||||
|  |  | ||||||
|  |     pkg-config | ||||||
|  |  | ||||||
|  |     jq | ||||||
|  |     moreutils | ||||||
|  |   ] | ||||||
|  |   ++ lib.optionals stdenv.hostPlatform.isLinux [ wrapGAppsHook4 ]; | ||||||
|  |  | ||||||
|  |   buildInputs = lib.optionals stdenv.hostPlatform.isLinux [ | ||||||
|  |     glib-networking | ||||||
|  |     openssl | ||||||
|  |     webkitgtk_4_1 | ||||||
|  |   ]; | ||||||
|  |  | ||||||
|  |   cargoRoot = "src-tauri"; | ||||||
|  |   npmRoot = "src-vue"; | ||||||
|  |  | ||||||
|  |   buildAndTestSubdir = finalAttrs.cargoRoot; | ||||||
|  |  | ||||||
|  |   meta = { | ||||||
|  |     description = "FlightCore A Northstar installer, updater, and mod-manager"; | ||||||
|  |   }; | ||||||
|  | }) | ||||||
							
								
								
									
										122
									
								
								pkgs/by-name/he/helium-browser/depot_tools.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										122
									
								
								pkgs/by-name/he/helium-browser/depot_tools.py
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,122 @@ | |||||||
|  | #! /usr/bin/env nix-shell | ||||||
|  | #! nix-shell -i python -p python3 | ||||||
|  | """ | ||||||
|  | This is a heavily simplified variant of electron's update.py | ||||||
|  | for use in ./update.mjs and should not be called manually. | ||||||
|  |  | ||||||
|  | It resolves chromium's DEPS file recursively when called with | ||||||
|  | a working depot_tools checkout and a ref to fetch and prints | ||||||
|  | the result as JSON to stdout. | ||||||
|  | """ | ||||||
|  | import base64 | ||||||
|  | import json | ||||||
|  | from typing import Optional | ||||||
|  | from urllib.request import urlopen | ||||||
|  |  | ||||||
|  | import sys | ||||||
|  |  | ||||||
|  | if len(sys.argv) != 3: | ||||||
|  |     print("""This internal script has been called with the wrong amount of parameters. | ||||||
|  | This script is not supposed to be called manually. | ||||||
|  | Refer to ./update.mjs instead.""") | ||||||
|  |     exit(1) | ||||||
|  |  | ||||||
|  | _, depot_tools_checkout, chromium_version = sys.argv | ||||||
|  |  | ||||||
|  | sys.path.append(depot_tools_checkout) | ||||||
|  | import gclient_eval | ||||||
|  | import gclient_utils | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Repo: | ||||||
|  |     fetcher: str | ||||||
|  |     args: dict | ||||||
|  |  | ||||||
|  |     def __init__(self) -> None: | ||||||
|  |         self.deps: dict = {} | ||||||
|  |         self.hash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" | ||||||
|  |  | ||||||
|  |     def get_deps(self, repo_vars: dict, path: str) -> None: | ||||||
|  |         print( | ||||||
|  |             "evaluating " + json.dumps(self, default=vars, sort_keys=True), | ||||||
|  |             file=sys.stderr, | ||||||
|  |         ) | ||||||
|  |  | ||||||
|  |         deps_file = self.get_file("DEPS") | ||||||
|  |         evaluated = gclient_eval.Parse(deps_file, vars_override=repo_vars, filename="DEPS") | ||||||
|  |  | ||||||
|  |         repo_vars = dict(evaluated.get("vars", {})) | repo_vars | ||||||
|  |  | ||||||
|  |         prefix = f"{path}/" if evaluated.get("use_relative_paths", False) else "" | ||||||
|  |  | ||||||
|  |         self.deps = { | ||||||
|  |             prefix + dep_name: repo_from_dep(dep) | ||||||
|  |             for dep_name, dep in evaluated.get("deps", {}).items() | ||||||
|  |             if ( | ||||||
|  |                 gclient_eval.EvaluateCondition(dep["condition"], repo_vars) | ||||||
|  |                 if "condition" in dep | ||||||
|  |                 else True | ||||||
|  |             ) | ||||||
|  |             and repo_from_dep(dep) != None | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         for key in evaluated.get("recursedeps", []): | ||||||
|  |             dep_path = prefix + key | ||||||
|  |             if dep_path in self.deps and dep_path != "src/third_party/squirrel.mac": | ||||||
|  |                 self.deps[dep_path].get_deps(repo_vars, dep_path) | ||||||
|  |  | ||||||
|  |     def flatten_repr(self) -> dict: | ||||||
|  |         return {"fetcher": self.fetcher, "hash": self.hash, **self.args} | ||||||
|  |  | ||||||
|  |     def flatten(self, path: str) -> dict: | ||||||
|  |         out = {path: self.flatten_repr()} | ||||||
|  |         for dep_path, dep in self.deps.items(): | ||||||
|  |             out |= dep.flatten(dep_path) | ||||||
|  |         return out | ||||||
|  |  | ||||||
|  |     def get_file(self, filepath: str) -> str: | ||||||
|  |         raise NotImplementedError | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class GitilesRepo(Repo): | ||||||
|  |     def __init__(self, url: str, rev: str) -> None: | ||||||
|  |         super().__init__() | ||||||
|  |         self.fetcher = "fetchFromGitiles" | ||||||
|  |         self.args = { | ||||||
|  |             "url": url, | ||||||
|  |             "rev": rev, | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |     def get_file(self, filepath: str) -> str: | ||||||
|  |         return base64.b64decode( | ||||||
|  |             urlopen( | ||||||
|  |                 f"{self.args['url']}/+/{self.args['rev']}/{filepath}?format=TEXT" | ||||||
|  |             ).read() | ||||||
|  |         ).decode("utf-8") | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def repo_from_dep(dep: dict) -> Optional[Repo]: | ||||||
|  |     if "url" in dep: | ||||||
|  |         url, rev = gclient_utils.SplitUrlRevision(dep["url"]) | ||||||
|  |         return GitilesRepo(url, rev) | ||||||
|  |     else: | ||||||
|  |         # Not a git dependency; skip | ||||||
|  |         return None | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | chromium = GitilesRepo("https://chromium.googlesource.com/chromium/src.git", chromium_version) | ||||||
|  | chromium.get_deps( | ||||||
|  |     { | ||||||
|  |         **{ | ||||||
|  |         f"checkout_{platform}": platform == "linux" or platform == "x64" or platform == "arm64" or platform == "arm" | ||||||
|  |         for platform in ["ios", "chromeos", "android", "mac", "win", "linux"] | ||||||
|  |         }, | ||||||
|  |         **{ | ||||||
|  |         f"checkout_{arch}": True | ||||||
|  |         for arch in ["x64", "arm64", "arm", "x86", "mips", "mips64", "ppc", "riscv64"] | ||||||
|  |         }, | ||||||
|  |     }, | ||||||
|  |     "", | ||||||
|  | ) | ||||||
|  | print(json.dumps(chromium.flatten("src"))) | ||||||
							
								
								
									
										18
									
								
								pkgs/by-name/he/helium-browser/fix-scripts.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								pkgs/by-name/he/helium-browser/fix-scripts.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | |||||||
|  | diff --git a/utils/generate_resources.py b/utils/generate_resources.py | ||||||
|  | index f14d3c03..9fcc1df3 100644 | ||||||
|  | --- a/utils/generate_resources.py | ||||||
|  | +++ b/utils/generate_resources.py | ||||||
|  | @@ -1,3 +1,4 @@ | ||||||
|  | +#!/usr/bin/env python3 | ||||||
|  |  # Copyright 2025 The Helium Authors | ||||||
|  |  # You can use, redistribute, and/or modify this source code under | ||||||
|  |  # the terms of the GPL-3.0 license that can be found in the LICENSE file. | ||||||
|  | diff --git a/utils/replace_resources.py b/utils/replace_resources.py | ||||||
|  | index 935ab525..d30bfa8f 100644 | ||||||
|  | --- a/utils/replace_resources.py | ||||||
|  | +++ b/utils/replace_resources.py | ||||||
|  | @@ -1,3 +1,4 @@ | ||||||
|  | +#!/usr/bin/env python3 | ||||||
|  |  # Copyright 2025 The Helium Authors | ||||||
|  |  # You can use, redistribute, and/or modify this source code under | ||||||
|  |  # the terms of the GPL-3.0 license that can be found in the LICENSE file. | ||||||
							
								
								
									
										57
									
								
								pkgs/by-name/he/helium-browser/helium-patcher.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								pkgs/by-name/he/helium-browser/helium-patcher.nix
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,57 @@ | |||||||
|  | { | ||||||
|  |   stdenv, | ||||||
|  |   fetchFromGitHub, | ||||||
|  |   python3Packages, | ||||||
|  |   makeWrapper, | ||||||
|  |   patch, | ||||||
|  | }: | ||||||
|  |  | ||||||
|  | { | ||||||
|  |   rev, | ||||||
|  |   hash, | ||||||
|  | }: | ||||||
|  |  | ||||||
|  | stdenv.mkDerivation { | ||||||
|  |   pname = "helium-patcher"; | ||||||
|  |  | ||||||
|  |   version = rev; | ||||||
|  |  | ||||||
|  |   src = fetchFromGitHub { | ||||||
|  |     owner = "imputnet"; | ||||||
|  |     repo = "helium"; | ||||||
|  |     inherit rev hash; | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  |   dontBuild = true; | ||||||
|  |  | ||||||
|  |   # patches = [ ./fix-scripts.patch ]; | ||||||
|  |  | ||||||
|  |   buildInputs = [ | ||||||
|  |  | ||||||
|  |     (python3Packages.python.withPackages ( | ||||||
|  |       pythonPackages: with pythonPackages; [ | ||||||
|  |         pillow | ||||||
|  |       ] | ||||||
|  |     )) | ||||||
|  |  | ||||||
|  |     patch | ||||||
|  |   ]; | ||||||
|  |  | ||||||
|  |   nativeBuildInputs = [ | ||||||
|  |     makeWrapper | ||||||
|  |   ]; | ||||||
|  |  | ||||||
|  |   postPatch = '' | ||||||
|  |     sed -i '/chromium-widevine/d' patches/series | ||||||
|  |   ''; | ||||||
|  |  | ||||||
|  |   installPhase = '' | ||||||
|  |     mkdir $out | ||||||
|  |     cp -R * $out/ | ||||||
|  |     wrapProgram $out/utils/patches.py --add-flags "apply" --prefix PATH : "${patch}/bin" | ||||||
|  |     chmod +x $out/utils/name_substitution.py | ||||||
|  |     chmod +x $out/utils/helium_version.py | ||||||
|  |     chmod +x $out/utils/generate_resources.py | ||||||
|  |     chmod +x $out/utils/replace_resources.py | ||||||
|  |   ''; | ||||||
|  | } | ||||||
							
								
								
									
										809
									
								
								pkgs/by-name/he/helium-browser/info.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										809
									
								
								pkgs/by-name/he/helium-browser/info.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,809 @@ | |||||||
|  | { | ||||||
|  |   "ungoogled-chromium": { | ||||||
|  |     "version": "141.0.7390.107", | ||||||
|  |     "deps": { | ||||||
|  |       "depot_tools": { | ||||||
|  |         "rev": "3f41e54ae17d53d4a39feecad64c3d3e6871b219", | ||||||
|  |         "hash": "sha256-ow0L+KQuUTsz29yfO1qvqPu4XVgdoUe+yexMPi7POoA=" | ||||||
|  |       }, | ||||||
|  |       "gn": { | ||||||
|  |         "version": "0-unstable-2025-08-29", | ||||||
|  |         "rev": "5d0a4153b0bcc86c5a23310d5b648a587be3c56d", | ||||||
|  |         "hash": "sha256-WERLGrReUATmn3RhxtmyZcJBxdIY/WZqBDranCLDYEg=" | ||||||
|  |       }, | ||||||
|  |       "ungoogled-patches": { | ||||||
|  |         "rev": "0.5.7", | ||||||
|  |         "hash": "sha256-FI4iNoS/7yzfWFiJws6fzltiLm4dvH0ztYd0P5GgYqM=" | ||||||
|  |       }, | ||||||
|  |       "npmHash": "sha256-i1eQ4YlrWSgY522OlFtGDDPmxE2zd1hDM03AzR8RafE=" | ||||||
|  |     }, | ||||||
|  |     "DEPS": { | ||||||
|  |       "src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/chromium/src.git", | ||||||
|  |         "rev": "1c008349f76ff3a317bf28316fc5008c0120deb4", | ||||||
|  |         "hash": "sha256-NRqWOkGrg/Y4wZi4WQDJ6CvsDpeseVgTc/iAnuPRy/U=", | ||||||
|  |         "recompress": true | ||||||
|  |       }, | ||||||
|  |       "src/third_party/clang-format/script": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/clang/tools/clang-format.git", | ||||||
|  |         "rev": "37f6e68a107df43b7d7e044fd36a13cbae3413f2", | ||||||
|  |         "hash": "sha256-d9uweklBffiuCWEb03ti1eFLnMac2qRtvggzXY1n/RU=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/compiler-rt/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/compiler-rt.git", | ||||||
|  |         "rev": "d1877a8622be9c5a692dc5ed9ea5a54a78c9360e", | ||||||
|  |         "hash": "sha256-Vtz6Xj4ktP/8q2QDVt2bQnwkz7eDKuPx9KswagxgqmY=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/libc++/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libcxx.git", | ||||||
|  |         "rev": "9ce37ed6b68eda96a67199e6564ceb958ad4b37e", | ||||||
|  |         "hash": "sha256-2URJyICEyBwIXJRDkJt1B27DXq6nLZTCbW7dD8MBQk0=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/libc++abi/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libcxxabi.git", | ||||||
|  |         "rev": "f7f5a32b3e9582092d8a4511acec036a09ae8524", | ||||||
|  |         "hash": "sha256-8hqb7ZtY3PAC8R9S0KTay79xlD8QBKjy0ZR5oUVr4p0=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/libunwind/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libunwind.git", | ||||||
|  |         "rev": "92fb77dfd4d86aa120730359f5e4d6bb47f1c129", | ||||||
|  |         "hash": "sha256-n7U+CKQ839Oa35JpygygPUhk9JqWIyafJRj0jYSMlwg=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/llvm-libc/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libc.git", | ||||||
|  |         "rev": "46f8689c0b3999bd4b3a60adef01ceb3d8c0071f", | ||||||
|  |         "hash": "sha256-qItKSIS5p4iIN+iSXgXYbFXq1CFFgwQV5NCQxunl0Zg=" | ||||||
|  |       }, | ||||||
|  |       "src/chrome/test/data/perf/canvas_bench": { | ||||||
|  |         "url": "https://chromium.googlesource.com/chromium/canvas_bench.git", | ||||||
|  |         "rev": "a7b40ea5ae0239517d78845a5fc9b12976bfc732", | ||||||
|  |         "hash": "sha256-svOuyBGKloBLM11xLlWCDsB4PpRjdKTBdW2UEW4JQjM=" | ||||||
|  |       }, | ||||||
|  |       "src/chrome/test/data/perf/frame_rate/content": { | ||||||
|  |         "url": "https://chromium.googlesource.com/chromium/frame_rate/content.git", | ||||||
|  |         "rev": "c10272c88463efeef6bb19c9ec07c42bc8fe22b9", | ||||||
|  |         "hash": "sha256-t4kcuvH0rkPBkcdiMsoNQaRwU09eU+oSvyHDiAHrKXo=" | ||||||
|  |       }, | ||||||
|  |       "src/chrome/test/data/xr/webvr_info": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/toji/webvr.info.git", | ||||||
|  |         "rev": "c58ae99b9ff9e2aa4c524633519570bf33536248", | ||||||
|  |         "hash": "sha256-BsAPwc4oEWri0TlqhyxqFNqKdfgVSrB0vQyISmYY4eg=" | ||||||
|  |       }, | ||||||
|  |       "src/docs/website": { | ||||||
|  |         "url": "https://chromium.googlesource.com/website.git", | ||||||
|  |         "rev": "c6edf98e7fab2385c90caac6211f00b62e9b773d", | ||||||
|  |         "hash": "sha256-i08iEbbV+RAvSQKxWutCSjpZkfcbTQdRUZkgtPZfLck=" | ||||||
|  |       }, | ||||||
|  |       "src/media/cdm/api": { | ||||||
|  |         "url": "https://chromium.googlesource.com/chromium/cdm.git", | ||||||
|  |         "rev": "a4cbc4325e6de42ead733f2af43c08292d0e65a8", | ||||||
|  |         "hash": "sha256-voZaq/OiP5/QSSZmBx1ifriBc6HQ9+m4pUz0o9+O9x8=" | ||||||
|  |       }, | ||||||
|  |       "src/net/third_party/quiche/src": { | ||||||
|  |         "url": "https://quiche.googlesource.com/quiche.git", | ||||||
|  |         "rev": "62826931e84c49c94192065c896931576d8273c8", | ||||||
|  |         "hash": "sha256-YZFFKQKFyJUvrfG1bm84Hl3AGOkSgpqefwY5mHh1O0A=" | ||||||
|  |       }, | ||||||
|  |       "src/testing/libfuzzer/fuzzers/wasm_corpus": { | ||||||
|  |         "url": "https://chromium.googlesource.com/v8/fuzzer_wasm_corpus.git", | ||||||
|  |         "rev": "1df5e50a45db9518a56ebb42cb020a94a090258b", | ||||||
|  |         "hash": "sha256-gItDOfNqm1tHlmelz3l2GGdiKi9adu1EpPP6U7+8EQY=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/angle": { | ||||||
|  |         "url": "https://chromium.googlesource.com/angle/angle.git", | ||||||
|  |         "rev": "bb55ea10fcef3759e4db7ef8a473a9ceac2c6aa6", | ||||||
|  |         "hash": "sha256-NIy3fOwfheHeGo0MX8tmZbaGMBwqM5+k7cCypeoS6GI=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/angle/third_party/glmark2/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/glmark2/glmark2", | ||||||
|  |         "rev": "6edcf02205fd1e8979dc3f3964257a81959b80c8", | ||||||
|  |         "hash": "sha256-VebUALLFKwEa4+oE+jF8mBSzhJd6aflphPmcK1Em8bw=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/angle/third_party/rapidjson/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/Tencent/rapidjson", | ||||||
|  |         "rev": "781a4e667d84aeedbeb8184b7b62425ea66ec59f", | ||||||
|  |         "hash": "sha256-btUl1a/B0sXwf/+hyvCvVJjWqIkXfVYCpHm3TeBuOxk=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/angle/third_party/VK-GL-CTS/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/VK-GL-CTS", | ||||||
|  |         "rev": "15469c3d00394c8c365d1b1951fcf6255c589afb", | ||||||
|  |         "hash": "sha256-Bd/Q181NBMJkLwkEmttNvjNBQqtRRT7p+nbevqvt2HI=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/anonymous_tokens/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/google/anonymous-tokens.git", | ||||||
|  |         "rev": "50b2ee441f1c3bad73ab7430c41fd1ea5a7a06a6", | ||||||
|  |         "hash": "sha256-NiqQy4CEK8qWb2khi4zTSb3fAf3n9LvBsmceSeyQ+Q0=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/readability/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/mozilla/readability.git", | ||||||
|  |         "rev": "1f0ec42686c89a4a1c71789849f7ffde349ab197", | ||||||
|  |         "hash": "sha256-liNoIZreSx/RgL5/oSKyzOuqChAgDwTtViNq0KiY0R0=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/content_analysis_sdk/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/chromium/content_analysis_sdk.git", | ||||||
|  |         "rev": "9a408736204513e0e95dd2ab3c08de0d95963efc", | ||||||
|  |         "hash": "sha256-f5Jmk1MiGjaRdLun+v/GKVl8Yv9hOZMTQUSxgiJalcY=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/dav1d/libdav1d": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/videolan/dav1d.git", | ||||||
|  |         "rev": "af5cf2b1e7f03d6f6de84477e1ca8eed1f3eb03d", | ||||||
|  |         "hash": "sha256-dPVDZ4SyrHWsRWERUl6UKbbdUG/5dC/UTte6sItMYxg=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/dawn": { | ||||||
|  |         "url": "https://dawn.googlesource.com/dawn.git", | ||||||
|  |         "rev": "9caf49389e5e0564d18e0504c6cfa45c88b4e4fd", | ||||||
|  |         "hash": "sha256-d6WHeELxGtZ7nZzHIm18QaHY+2sc8KSRJgdH+vTuWN8=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/dawn/third_party/glfw": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/glfw/glfw", | ||||||
|  |         "rev": "b35641f4a3c62aa86a0b3c983d163bc0fe36026d", | ||||||
|  |         "hash": "sha256-E1zXIDiw87badrLOZTvV+Wh9NZHu51nb70ZK9vlAlqE=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/dawn/third_party/dxc": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/microsoft/DirectXShaderCompiler", | ||||||
|  |         "rev": "4e0f5364a3692f4122de0874ebb0f5550a27c867", | ||||||
|  |         "hash": "sha256-ocnWUgw3rBYTsKS7j+Zq6hTGhhB4VRgifASMqBO66Os=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/dawn/third_party/dxheaders": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/microsoft/DirectX-Headers", | ||||||
|  |         "rev": "980971e835876dc0cde415e8f9bc646e64667bf7", | ||||||
|  |         "hash": "sha256-0Miw1Cy/jmOo7bLFBOHuTRDV04cSeyvUEyPkpVsX9DA=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/dawn/third_party/khronos/OpenGL-Registry": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/OpenGL-Registry", | ||||||
|  |         "rev": "5bae8738b23d06968e7c3a41308568120943ae77", | ||||||
|  |         "hash": "sha256-K3PcRIiD3AmnbiSm5TwaLs4Gu9hxaN8Y91WMKK8pOXE=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/dawn/third_party/khronos/EGL-Registry": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/EGL-Registry", | ||||||
|  |         "rev": "7dea2ed79187cd13f76183c4b9100159b9e3e071", | ||||||
|  |         "hash": "sha256-Z6DwLfgQ1wsJXz0KKJyVieOatnDmx3cs0qJ6IEgSq1A=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/dawn/third_party/webgpu-cts": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/gpuweb/cts", | ||||||
|  |         "rev": "0558b1933531e6379ac5875129b92aac9d1ce035", | ||||||
|  |         "hash": "sha256-247bXbblup/bg+iWeIwlUxLinvvQK5hX+Jm0jKiaEbM=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/dawn/third_party/webgpu-headers/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/webgpu-native/webgpu-headers", | ||||||
|  |         "rev": "c8b371dd2ff8a2b028fdc0206af5958521181ba8", | ||||||
|  |         "hash": "sha256-rHDN4ln5kTMzabW427Xktl93E+8EVhWa2i8n4Mh2BgQ=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/highway/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/google/highway.git", | ||||||
|  |         "rev": "00fe003dac355b979f36157f9407c7c46448958e", | ||||||
|  |         "hash": "sha256-IS7m1wBwpPBUNhx2GttY1fzvmLIeAp3o2gXfrFpRdvY=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/google_benchmark/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/google/benchmark.git", | ||||||
|  |         "rev": "761305ec3b33abf30e08d50eb829e19a802581cc", | ||||||
|  |         "hash": "sha256-cH8s1gP6kCcojAAfTt5iQCVqiAaSooNk4BdaILujM3w=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/boringssl/src": { | ||||||
|  |         "url": "https://boringssl.googlesource.com/boringssl.git", | ||||||
|  |         "rev": "40e035a9e5d721b3b7c15c46259d782ffe7d9e96", | ||||||
|  |         "hash": "sha256-m2WNsjSwlg57ACftIDCcIWJ/jwbD7FU43lhGcpGDhCw=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/breakpad/breakpad": { | ||||||
|  |         "url": "https://chromium.googlesource.com/breakpad/breakpad.git", | ||||||
|  |         "rev": "44ba5b579bf2f5c8548ad5016664fef8458c43b4", | ||||||
|  |         "hash": "sha256-b8+7NGE9SelVFFuDOVr/k/nrk3jr/r8zwuW7vpm4c74=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/cast_core/public/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/cast_core/public", | ||||||
|  |         "rev": "f5ee589bdaea60418f670fa176be15ccb9a34942", | ||||||
|  |         "hash": "sha256-yQxm1GMMne80bLl1P7OAN3bJLz1qRNAvou2/5MKp2ig=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/catapult": { | ||||||
|  |         "url": "https://chromium.googlesource.com/catapult.git", | ||||||
|  |         "rev": "3c5077921dbacc75db5768cf4fc0b1d9ca05d2e0", | ||||||
|  |         "hash": "sha256-w/tFeyek51/izvLSMkGP3RCW2j6KJdIa3l1PzxKjnaM=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/ced/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/google/compact_enc_det.git", | ||||||
|  |         "rev": "ba412eaaacd3186085babcd901679a48863c7dd5", | ||||||
|  |         "hash": "sha256-ySG74Rj2i2c/PltEgHVEDq+N8yd9gZmxNktc56zIUiY=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/cld_3/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/google/cld_3.git", | ||||||
|  |         "rev": "b48dc46512566f5a2d41118c8c1116c4f96dc661", | ||||||
|  |         "hash": "sha256-C3MOMBUy9jgkT9BAi/Fgm2UH4cxRuwSBEcRl3hzM2Ss=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/colorama/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/colorama.git", | ||||||
|  |         "rev": "3de9f013df4b470069d03d250224062e8cf15c49", | ||||||
|  |         "hash": "sha256-6ZTdPYSHdQOLYMSnE+Tp7PgsVTs3U2awGu9Qb4Rg/tk=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/cpu_features/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/google/cpu_features.git", | ||||||
|  |         "rev": "936b9ab5515dead115606559502e3864958f7f6e", | ||||||
|  |         "hash": "sha256-E8LoVzhe+TAmARWZTSuINlsVhzpUJMxPPCGe/dHZcyA=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/cpuinfo/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/pytorch/cpuinfo.git", | ||||||
|  |         "rev": "e414c0446436ed34151de3158d18f8ae32e55d03", | ||||||
|  |         "hash": "sha256-748MwxVi7oONccrirjUWgtDNBWWijrXSXlZdHoowYz0=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/crc32c/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/google/crc32c.git", | ||||||
|  |         "rev": "d3d60ac6e0f16780bcfcc825385e1d338801a558", | ||||||
|  |         "hash": "sha256-KBraGaO5LmmPP+p8RuDogGldbTWdNDK+WzF4Q09keuE=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/cros_system_api": { | ||||||
|  |         "url": "https://chromium.googlesource.com/chromiumos/platform2/system_api.git", | ||||||
|  |         "rev": "ed91ea4a3cd063cbace42360d769983fb08163b4", | ||||||
|  |         "hash": "sha256-vauYEQW9iTs8VZwyKAYeahLl9LTzkOR0krzcBR4VYus=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/crossbench": { | ||||||
|  |         "url": "https://chromium.googlesource.com/crossbench.git", | ||||||
|  |         "rev": "b560604e8f2261a2c685c28359b69af74b92a196", | ||||||
|  |         "hash": "sha256-vgWATYq/7UXnFhfdJZ0JXvGpr4eI08sSU115MWpD1js=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/crossbench-web-tests": { | ||||||
|  |         "url": "https://chromium.googlesource.com/chromium/web-tests.git", | ||||||
|  |         "rev": "3c76c8201f0732fe9781742229ab8ac43bf90cbf", | ||||||
|  |         "hash": "sha256-yJmi1IpUiKhdoHAXyazkpm+Ezuc4Hp8pOIBntG5hN+U=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/depot_tools": { | ||||||
|  |         "url": "https://chromium.googlesource.com/chromium/tools/depot_tools.git", | ||||||
|  |         "rev": "3f41e54ae17d53d4a39feecad64c3d3e6871b219", | ||||||
|  |         "hash": "sha256-ow0L+KQuUTsz29yfO1qvqPu4XVgdoUe+yexMPi7POoA=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/devtools-frontend/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/devtools/devtools-frontend", | ||||||
|  |         "rev": "9c2c4cc7cf6c82ad460e1f3b49f34bb702d5fe11", | ||||||
|  |         "hash": "sha256-qj1vR0FW2jiR2v18Nv8RqYgy/UEw2rgGUsQ68EhdHos=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/dom_distiller_js/dist": { | ||||||
|  |         "url": "https://chromium.googlesource.com/chromium/dom-distiller/dist.git", | ||||||
|  |         "rev": "199de96b345ada7c6e7e6ba3d2fa7a6911b8767d", | ||||||
|  |         "hash": "sha256-yuEBD2XQlV3FGI/i7lTmJbCqzeBiuG1Qow8wvsppGJw=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/dragonbox/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/jk-jeon/dragonbox.git", | ||||||
|  |         "rev": "6c7c925b571d54486b9ffae8d9d18a822801cbda", | ||||||
|  |         "hash": "sha256-AOniXMPgwKpkJqivRd+GazEnhdw53FzhxKqG+GdU+cc=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/eigen3/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/gitlab.com/libeigen/eigen.git", | ||||||
|  |         "rev": "81044ec13df7608d0d9d86aff2ef9805fc69bed1", | ||||||
|  |         "hash": "sha256-W0uonGzjDaN2RbY2U+Kl1a5/nrEZ9T9W426f+a7NUzY=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/farmhash/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/google/farmhash.git", | ||||||
|  |         "rev": "816a4ae622e964763ca0862d9dbd19324a1eaf45", | ||||||
|  |         "hash": "sha256-5n58VEUxa/K//jAfZqG4cXyfxrp50ogWDNYcgiXVHdc=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/fast_float/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/fastfloat/fast_float.git", | ||||||
|  |         "rev": "cb1d42aaa1e14b09e1452cfdef373d051b8c02a4", | ||||||
|  |         "hash": "sha256-CG5je117WYyemTe5PTqznDP0bvY5TeXn8Vu1Xh5yUzQ=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/federated_compute/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/google-parfait/federated-compute.git", | ||||||
|  |         "rev": "cf49f95f941eb872f596522890055878240c3a22", | ||||||
|  |         "hash": "sha256-R8KE0Whpb4qsZ6HxWG4/uFSsrT2nnpwNV2nQcNYHEXg=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/ffmpeg": { | ||||||
|  |         "url": "https://chromium.googlesource.com/chromium/third_party/ffmpeg.git", | ||||||
|  |         "rev": "9e751092c9498b84bbb77e2e0689ef9f50fe608f", | ||||||
|  |         "hash": "sha256-ZeFzrCE9LkDcp3VTMJkm5ypX29RGZCyZkp3tEr7yFKU=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/flac": { | ||||||
|  |         "url": "https://chromium.googlesource.com/chromium/deps/flac.git", | ||||||
|  |         "rev": "807e251d9f8c5dd6059e547931e9c6a4251967af", | ||||||
|  |         "hash": "sha256-Y5TXyJ8lVh8TaVC5S4BVxOmFxySBzPbJYEe8YJS6ZR4=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/flatbuffers/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/google/flatbuffers.git", | ||||||
|  |         "rev": "8db59321d9f02cdffa30126654059c7d02f70c32", | ||||||
|  |         "hash": "sha256-tbc45o0MbMvK5XqRUJt5Eg8BU6+TJqlmwFgQhHq6wRM=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/fontconfig/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/fontconfig.git", | ||||||
|  |         "rev": "86b48ec01ece451d5270d0c5181a43151e45a042", | ||||||
|  |         "hash": "sha256-6HLV0U/MA1XprKJ70TKvwUBdkGQPwgqP4Oj5dINsKp0=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/fp16/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/Maratyszcza/FP16.git", | ||||||
|  |         "rev": "b3720617faf1a4581ed7e6787cc51722ec7751f0", | ||||||
|  |         "hash": "sha256-nDJH3Jmztrglr9hnwegfS7NNLAXklnwdeH9iWWwwZt4=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/gemmlowp/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/google/gemmlowp.git", | ||||||
|  |         "rev": "13d57703abca3005d97b19df1f2db731607a7dc2", | ||||||
|  |         "hash": "sha256-O5wD8wxgis0qYMaY+xZ21GBDVQFphMRvInCOswS6inA=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/freetype/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/chromium/src/third_party/freetype2.git", | ||||||
|  |         "rev": "61a423426089e65c27699d824303f209026b2f05", | ||||||
|  |         "hash": "sha256-XaSl1YJk5TUR72PDbKwnn5IGT46VR7ip1wVxUMEkvu8=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/fxdiv/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/Maratyszcza/FXdiv.git", | ||||||
|  |         "rev": "63058eff77e11aa15bf531df5dd34395ec3017c8", | ||||||
|  |         "hash": "sha256-LjX5kivfHbqCIA5pF9qUvswG1gjOFo3CMpX0VR+Cn38=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/harfbuzz-ng/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/harfbuzz/harfbuzz.git", | ||||||
|  |         "rev": "7d936359a27abb2d7cb14ecc102463bb15c11843", | ||||||
|  |         "hash": "sha256-gUUXBd2/di6MYhUzo0QkGQvRY6KLcy7qdDlSClnmnL8=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/ink/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/google/ink.git", | ||||||
|  |         "rev": "4e6081ad7052f97df7d77e1d87cea2d70c18a47b", | ||||||
|  |         "hash": "sha256-SVwZWhM63iN2ajTMldgug0mfJV1rdvxTZwj/zyLe4WA=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/ink_stroke_modeler/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/google/ink-stroke-modeler.git", | ||||||
|  |         "rev": "fe79520c9ad7d2d445d26d3c59fda6fc54eb4d5c", | ||||||
|  |         "hash": "sha256-4iXoBgCCbWCqGbpchiAYQhKBK9rO1Xb6wP98iMd06cY=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/instrumented_libs": { | ||||||
|  |         "url": "https://chromium.googlesource.com/chromium/third_party/instrumented_libraries.git", | ||||||
|  |         "rev": "69015643b3f68dbd438c010439c59adc52cac808", | ||||||
|  |         "hash": "sha256-8kokdsnn5jD9KgM/6g0NuITBbKkGXWEM4BMr1nCrfdU=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/emoji-segmenter/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/google/emoji-segmenter.git", | ||||||
|  |         "rev": "955936be8b391e00835257059607d7c5b72ce744", | ||||||
|  |         "hash": "sha256-KdQdKBBipEBRT8UmNGao6yCB4m2CU8/SrMVvcXlb5qE=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/oak/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/project-oak/oak.git", | ||||||
|  |         "rev": "bd9e19ed20525444be0882bd5848ec475ac8c040", | ||||||
|  |         "hash": "sha256-F/qSxLpbPPOBjY4/Gowq6HUINb1hH+ll9T+mDMGeJ7c=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/ots/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/khaledhosny/ots.git", | ||||||
|  |         "rev": "46bea9879127d0ff1c6601b078e2ce98e83fcd33", | ||||||
|  |         "hash": "sha256-kiUXrXsaGOzPkKh0dVmU1I13WHt0Stzj7QLMqHN9FbU=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/libgav1/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/codecs/libgav1.git", | ||||||
|  |         "rev": "c05bf9be660cf170d7c26bd06bb42b3322180e58", | ||||||
|  |         "hash": "sha256-BgTfWmbcMvJB1KewJpRcMtbOd2FVuJ+fi1zAXBXfkrg=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/googletest/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/google/googletest.git", | ||||||
|  |         "rev": "244cec869d12e53378fa0efb610cd4c32a454ec8", | ||||||
|  |         "hash": "sha256-A3kDQbt9ITaxCjl/tJtwySsPUyH+NNb8erdjBzq81o8=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/hunspell_dictionaries": { | ||||||
|  |         "url": "https://chromium.googlesource.com/chromium/deps/hunspell_dictionaries.git", | ||||||
|  |         "rev": "41cdffd71c9948f63c7ad36e1fb0ff519aa7a37e", | ||||||
|  |         "hash": "sha256-67mvpJRFFa9eMfyqFMURlbxOaTJBICnk+gl0b0mEHl8=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/icu": { | ||||||
|  |         "url": "https://chromium.googlesource.com/chromium/deps/icu.git", | ||||||
|  |         "rev": "1b2e3e8a421efae36141a7b932b41e315b089af8", | ||||||
|  |         "hash": "sha256-k3z31DhDPoqjcZdUL4vjyUMVpUiNk44+7rCMTDVPH8Q=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/jsoncpp/source": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/open-source-parsers/jsoncpp.git", | ||||||
|  |         "rev": "42e892d96e47b1f6e29844cc705e148ec4856448", | ||||||
|  |         "hash": "sha256-bSLNcoYBz3QCt5VuTR056V9mU2PmBuYBa0W6hFg2m8Q=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/leveldatabase/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/leveldb.git", | ||||||
|  |         "rev": "4ee78d7ea98330f7d7599c42576ca99e3c6ff9c5", | ||||||
|  |         "hash": "sha256-ANtMVRZmW6iOjDVn2y15ak2fTagFTTaz1Se6flUHL8w=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/libFuzzer/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/compiler-rt/lib/fuzzer.git", | ||||||
|  |         "rev": "bea408a6e01f0f7e6c82a43121fe3af4506c932e", | ||||||
|  |         "hash": "sha256-TDi1OvYClJKmEDikanKVTmy8uxUXJ95nuVKo5u+uFPM=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/fuzztest/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/google/fuzztest.git", | ||||||
|  |         "rev": "169baf17795850fd4b2c29e4d52136aa8d955b61", | ||||||
|  |         "hash": "sha256-jcpUwHKWV4aWJSOZ4AlFk5YXZoTuXrrSE4jmwrrvoKI=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/domato/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/googleprojectzero/domato.git", | ||||||
|  |         "rev": "053714bccbda79cf76dac3fee48ab2b27f21925e", | ||||||
|  |         "hash": "sha256-fYxoA0fxKe9U23j+Jp0MWj4m7RfsRpM0XjF6/yOhX1I=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/libaddressinput/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/libaddressinput.git", | ||||||
|  |         "rev": "2610f7b1043d6784ada41392fc9392d1ea09ea07", | ||||||
|  |         "hash": "sha256-6h4/DQUBoBtuGfbaTL5Te1Z+24qjTaBuIydcTV18j80=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/libaom/source/libaom": { | ||||||
|  |         "url": "https://aomedia.googlesource.com/aom.git", | ||||||
|  |         "rev": "4703185b29b381e5651eb1caed66630f623bf752", | ||||||
|  |         "hash": "sha256-f3IPUpLB0jYrBwwJCBzatJgzayGtUxV6NsCLU2TiIqs=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/crabbyavif/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/webmproject/CrabbyAvif.git", | ||||||
|  |         "rev": "4c70b98d1ebc8a210f2919be7ccabbcf23061cb5", | ||||||
|  |         "hash": "sha256-PHtOD9HWxgwlfmcoDDHYyjhHpV/LclCVIk+ci9eUaIc=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/nearby/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/google/nearby-connections.git", | ||||||
|  |         "rev": "5f27145da57a32eb8db215c40fe867a20beea987", | ||||||
|  |         "hash": "sha256-ZbrbLnL/5LYu8cW06KnjNaUjMSlJCrzl0ywthOjNeX0=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/securemessage/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/google/securemessage.git", | ||||||
|  |         "rev": "fa07beb12babc3b25e0c5b1f38c16aa8cb6b8f84", | ||||||
|  |         "hash": "sha256-GS4ccnuiqxMs/LVYAtvSlVAYFp4a5GoZsxcriTX3k78=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/jetstream/main": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/WebKit/JetStream.git", | ||||||
|  |         "rev": "f8e3d7e50ed5c7ac071a9d90d3ee36cb68a8678c", | ||||||
|  |         "hash": "sha256-7JF4A2ayMOAFOP3DH2Z2iBx9MHvMN9hogCY5unJZDbQ=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/jetstream/v2.2": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/WebKit/JetStream.git", | ||||||
|  |         "rev": "2145cedef4ca2777b792cb0059d3400ee2a6153c", | ||||||
|  |         "hash": "sha256-zucA2tqNOsvjhwYQKZ5bFUC73ZF/Fu7KpBflSelvixw=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/speedometer/main": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/WebKit/Speedometer.git", | ||||||
|  |         "rev": "06449bdc34789a7459393405dd777e02d78a3743", | ||||||
|  |         "hash": "sha256-3TlVewJ9C3MXvlIudzLHshQZOCAmUkMYsZzAazSbMLY=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/speedometer/v3.1": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/WebKit/Speedometer.git", | ||||||
|  |         "rev": "1386415be8fef2f6b6bbdbe1828872471c5d802a", | ||||||
|  |         "hash": "sha256-G89mrrgRaANT1vqzhKPQKemHbz56YwR+oku7rlRoCHw=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/speedometer/v3.0": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/WebKit/Speedometer.git", | ||||||
|  |         "rev": "8d67f28d0281ac4330f283495b7f48286654ad7d", | ||||||
|  |         "hash": "sha256-qMQ4naX+4uUu3vtzzinjkhxX9/dNoTwj6vWCu4FdQmU=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/speedometer/v2.1": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/WebKit/Speedometer.git", | ||||||
|  |         "rev": "8bf7946e39e47c875c00767177197aea5727e84a", | ||||||
|  |         "hash": "sha256-0z5tZlz32fYh9I1ALqfLm2WWO8HiRBwt0hcmgKQhaeM=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/speedometer/v2.0": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/WebKit/Speedometer.git", | ||||||
|  |         "rev": "732af0dfe867f8815e662ac637357e55f285dbbb", | ||||||
|  |         "hash": "sha256-p7WUS8gZUaS+LOm7pNmRkwgxjx+V8R6yy7bbaEHaIs4=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/ukey2/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/google/ukey2.git", | ||||||
|  |         "rev": "0275885d8e6038c39b8a8ca55e75d1d4d1727f47", | ||||||
|  |         "hash": "sha256-aaLs6ZS+CdBlCJ6ZhsmdAPFxiBIij6oufsDcNeRSV1E=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/cros-components/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/google3/cros_components.git", | ||||||
|  |         "rev": "7ccdbf60606671c2c057628125908fbfef9bd0c8", | ||||||
|  |         "hash": "sha256-g7LzBd2V21AaLdSdCw65WGYvKfrbtpRXsYc+3ILdiKs=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/libdrm/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/chromiumos/third_party/libdrm.git", | ||||||
|  |         "rev": "ad78bb591d02162d3b90890aa4d0a238b2a37cde", | ||||||
|  |         "hash": "sha256-woSYEDUfcEBpYOYnli13wLMt754A7KnUbmTEcFQdFGw=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/expat/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/libexpat/libexpat.git", | ||||||
|  |         "rev": "69d6c054c1bd5258c2a13405a7f5628c72c177c2", | ||||||
|  |         "hash": "sha256-qe8O7otL6YcDDBx2DS/+c5mWIS8Rf8RQXVtLFMIAeyk=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/libipp/libipp": { | ||||||
|  |         "url": "https://chromium.googlesource.com/chromiumos/platform2/libipp.git", | ||||||
|  |         "rev": "2209bb84a8e122dab7c02fe66cc61a7b42873d7f", | ||||||
|  |         "hash": "sha256-gxU92lHLd6uxO8T3QWhZIK0hGy97cki705DV0VimCPY=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/libjpeg_turbo": { | ||||||
|  |         "url": "https://chromium.googlesource.com/chromium/deps/libjpeg_turbo.git", | ||||||
|  |         "rev": "e14cbfaa85529d47f9f55b0f104a579c1061f9ad", | ||||||
|  |         "hash": "sha256-Ig+tmprZDvlf/M72/DTar2pbxat9ZElgSqdXdoM0lPs=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/liblouis/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/liblouis-github.git", | ||||||
|  |         "rev": "9700847afb92cb35969bdfcbbfbbb74b9c7b3376", | ||||||
|  |         "hash": "sha256-EI/uaHXe0NlqdEw764q0SjerThYEVLRogUlmrsZwXnY=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/libphonenumber/dist": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/libphonenumber.git", | ||||||
|  |         "rev": "9d46308f313f2bf8dbce1dfd4f364633ca869ca7", | ||||||
|  |         "hash": "sha256-ZbuDrZEUVp/ekjUP8WO/FsjAomRjeDBptT4nQZvTVi4=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/libprotobuf-mutator/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/google/libprotobuf-mutator.git", | ||||||
|  |         "rev": "7bf98f78a30b067e22420ff699348f084f802e12", | ||||||
|  |         "hash": "sha256-EaEC6R7SzqLw4QjEcWXFXhZc84lNBp6RSa9izjGnWKE=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/libsrtp": { | ||||||
|  |         "url": "https://chromium.googlesource.com/chromium/deps/libsrtp.git", | ||||||
|  |         "rev": "a52756acb1c5e133089c798736dd171567df11f5", | ||||||
|  |         "hash": "sha256-bkG1+ss+1a2rCHGwZjhvf5UaNVbPPZJt9HZSIPBKGwM=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/libsync/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/aosp/platform/system/core/libsync.git", | ||||||
|  |         "rev": "f4f4387b6bf2387efbcfd1453af4892e8982faf6", | ||||||
|  |         "hash": "sha256-Mkl6C1LxF3RYLwYbxiSfoQPt8QKFwQWj/Ati2sNJ32E=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/libva-fake-driver/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/chromiumos/platform/libva-fake-driver.git", | ||||||
|  |         "rev": "a9bcab9cd6b15d4e3634ca44d5e5f7652c612194", | ||||||
|  |         "hash": "sha256-em/8rNqwv6szlxyji7mnYr3nObSW/x3OzEEnkiLuqpI=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/libvpx/source/libvpx": { | ||||||
|  |         "url": "https://chromium.googlesource.com/webm/libvpx.git", | ||||||
|  |         "rev": "b122dc0932009e78f928386c5081bb69d3c2de5c", | ||||||
|  |         "hash": "sha256-y5yD3YwsQjWZn60VPUH4H2D1AwkBoGGmTNpyxGneciY=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/libwebm/source": { | ||||||
|  |         "url": "https://chromium.googlesource.com/webm/libwebm.git", | ||||||
|  |         "rev": "f2a982d748b80586ae53b89a2e6ebbc305848b8c", | ||||||
|  |         "hash": "sha256-SxDGt7nPVkSxwRF/lMmcch1h+C2Dyh6GZUXoZjnXWb4=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/libwebp/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/webm/libwebp.git", | ||||||
|  |         "rev": "b0e8039062eedbcb20ebb1bad62bfeaee2b94ec6", | ||||||
|  |         "hash": "sha256-yKVLUxzIK5ybYM/22fVaQlqSCG5Hx4Notxj+3kI2LCg=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/libyuv": { | ||||||
|  |         "url": "https://chromium.googlesource.com/libyuv/libyuv.git", | ||||||
|  |         "rev": "36edc5fa8b2da5aa00b8c2c68b25ffd64219d0ba", | ||||||
|  |         "hash": "sha256-RTgcspt8hOHN79ZD5jjwuX7XFrFkuAJemIXmjoBKVMk=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/lss": { | ||||||
|  |         "url": "https://chromium.googlesource.com/linux-syscall-support.git", | ||||||
|  |         "rev": "ed31caa60f20a4f6569883b2d752ef7522de51e0", | ||||||
|  |         "hash": "sha256-rhp4EcZYdgSfu9cqn+zxxGx6v2IW8uX8V+iA0UfZhFY=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/material_color_utilities/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/material-foundation/material-color-utilities.git", | ||||||
|  |         "rev": "13434b50dcb64a482cc91191f8cf6151d90f5465", | ||||||
|  |         "hash": "sha256-Y85XU+z9W6tvmDNHJ/dXQnUKXvvDkO3nH/kUJRLqbc4=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/minigbm/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/chromiumos/platform/minigbm.git", | ||||||
|  |         "rev": "3018207f4d89395cc271278fb9a6558b660885f5", | ||||||
|  |         "hash": "sha256-9HwvjTETerbQ7YKXH9kUB2eWa8PxGWMAJfx1jAluhrs=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/nasm": { | ||||||
|  |         "url": "https://chromium.googlesource.com/chromium/deps/nasm.git", | ||||||
|  |         "rev": "e2c93c34982b286b27ce8b56dd7159e0b90869a2", | ||||||
|  |         "hash": "sha256-TxzAcp+CoKnnM0lCGjm+L3h6M30vYHjM07vW6zUe/vY=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/neon_2_sse/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/intel/ARM_NEON_2_x86_SSE.git", | ||||||
|  |         "rev": "eb8b80b28f956275e291ea04a7beb5ed8289e872", | ||||||
|  |         "hash": "sha256-AkDAHOPO5NdXXk0hETS5D67mzw0RVXwPDDKqM0XXo5g=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/openh264/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/cisco/openh264", | ||||||
|  |         "rev": "652bdb7719f30b52b08e506645a7322ff1b2cc6f", | ||||||
|  |         "hash": "sha256-tf0lnxATCkoq+xRti6gK6J47HwioAYWnpEsLGSA5Xdg=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/openscreen/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/openscreen", | ||||||
|  |         "rev": "9756d3a568a78213678eeb52e044b9658e195e15", | ||||||
|  |         "hash": "sha256-LK1b2O4pgLyGBViXLid2w6+DxtstK44msyOJUNFn1ek=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/openscreen/src/buildtools": { | ||||||
|  |         "url": "https://chromium.googlesource.com/chromium/src/buildtools", | ||||||
|  |         "rev": "077a66f30fcf281b066fafb6dfc60818c238efb6", | ||||||
|  |         "hash": "sha256-WnbgaCzZ/BJli6M60kP9e4mVPFDx0yu3eCac5wmQ7iM=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/openscreen/src/third_party/tinycbor/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/intel/tinycbor.git", | ||||||
|  |         "rev": "d393c16f3eb30d0c47e6f9d92db62272f0ec4dc7", | ||||||
|  |         "hash": "sha256-fMKBFUSKmODQyg4hKIa1hwnEKIV6WBbY1Gb8DOSnaHA=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/pdfium": { | ||||||
|  |         "url": "https://pdfium.googlesource.com/pdfium.git", | ||||||
|  |         "rev": "0a74b90b9a53b2033de1a53ed8401730f906a453", | ||||||
|  |         "hash": "sha256-eTq4d9nE9J6ZbX2b7QK5gVacApSv6EQXUmvy1P641Eo=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/perfetto": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/google/perfetto.git", | ||||||
|  |         "rev": "43afaf571d990c0f3275c6800cf3ed42138bdc26", | ||||||
|  |         "hash": "sha256-I5MrV4zYZjH0iSnc1aZ95xAg6e3OxQXX/rQoD8/OQIk=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/protobuf-javascript/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/protocolbuffers/protobuf-javascript", | ||||||
|  |         "rev": "e6d763860001ba1a76a63adcff5efb12b1c96024", | ||||||
|  |         "hash": "sha256-1o6N9+1wsQSu1B4w5LlGlwzIUmuPCIYHPqwOyt234ZM=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/pthreadpool/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/google/pthreadpool.git", | ||||||
|  |         "rev": "149f0a86f5ad215e9f0441684385ce09f345dbe4", | ||||||
|  |         "hash": "sha256-3/FnJ2FL6fQSlymqJS/UoXTB4ZiW9d7xpvK3Ur8Ynp4=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/pyelftools": { | ||||||
|  |         "url": "https://chromium.googlesource.com/chromiumos/third_party/pyelftools.git", | ||||||
|  |         "rev": "19b3e610c86fcadb837d252c794cb5e8008826ae", | ||||||
|  |         "hash": "sha256-I/7p3IEvfP/gkes4kx18PvWwhAKilQKb67GXoW4zFB4=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/quic_trace/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/google/quic-trace.git", | ||||||
|  |         "rev": "ed3deb8a056b260c59f2fd42af6dfa3db48a8cad", | ||||||
|  |         "hash": "sha256-vbXqddDgwqetU0bDYn3qo7OBqT5eG926/MbA1hKkCT0=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/pywebsocket3/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/GoogleChromeLabs/pywebsocket3.git", | ||||||
|  |         "rev": "50602a14f1b6da17e0b619833a13addc6ea78bc2", | ||||||
|  |         "hash": "sha256-WEqqu2/7fLqcf/2/IcD7/FewRSZ6jTgVlVBvnihthYQ=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/re2/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/google/re2.git", | ||||||
|  |         "rev": "6569a9a3df256f4c0c3813cb8ee2f8eef6e2c1fb", | ||||||
|  |         "hash": "sha256-e18aSNVEE42LNzCDMay/Fa3BNg36pBPeEtfNvWqlnWE=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/ruy/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/google/ruy.git", | ||||||
|  |         "rev": "9940fbf1e0c0863907e77e0600b99bb3e2bc2b9f", | ||||||
|  |         "hash": "sha256-fV0El2ZgjxLqstKVN35SL72+diHNK0FkBmG5UwVZFrk=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/search_engines_data/resources": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/search_engines_data.git", | ||||||
|  |         "rev": "629f034fd4473fca4ee8886ed886943672fc72fa", | ||||||
|  |         "hash": "sha256-iWtSJ8AL2rbjltg+FHO/w4mL1XHsemCc39lEFWKAVGA=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/skia": { | ||||||
|  |         "url": "https://skia.googlesource.com/skia.git", | ||||||
|  |         "rev": "5eefbe51d17d2e379fa2d7353827e0ccb1e1f601", | ||||||
|  |         "hash": "sha256-hjihCH6CykIfNcQ8TWCD8+buN0ZBYDwQr4I2Z2hUmxM=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/smhasher/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/smhasher.git", | ||||||
|  |         "rev": "0ff96f7835817a27d0487325b6c16033e2992eb5", | ||||||
|  |         "hash": "sha256-OgZQwkQcVgRMf62ROGuY+3zQhBoWuUSP4naTmSKdq8s=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/snappy/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/google/snappy.git", | ||||||
|  |         "rev": "32ded457c0b1fe78ceb8397632c416568d6714a0", | ||||||
|  |         "hash": "sha256-jUwnjbaqXz7fgI2TPRK7SlUPQUVzcpjp4ZlFbEzwA+o=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/sqlite/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/chromium/deps/sqlite.git", | ||||||
|  |         "rev": "7d348fc79216a09b864ff881d8561a6222301666", | ||||||
|  |         "hash": "sha256-13HMEpzzcFx/UKqt4V68619R+0j4B/GOl6NYlhpBk0c=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/swiftshader": { | ||||||
|  |         "url": "https://swiftshader.googlesource.com/SwiftShader.git", | ||||||
|  |         "rev": "7cd1022cdc50fa3ac4f0ca5d0cdd64ce20af3c4f", | ||||||
|  |         "hash": "sha256-YNQYUe3xgnPny6tYmlYOjC6/jszy896y+/u5aXjthvU=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/text-fragments-polyfill/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/GoogleChromeLabs/text-fragments-polyfill.git", | ||||||
|  |         "rev": "c036420683f672d685e27415de0a5f5e85bdc23f", | ||||||
|  |         "hash": "sha256-4rW2u1cQAF4iPWHAt1FvVXIpz2pmI901rEPks/w/iFA=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/tflite/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/tensorflow/tensorflow.git", | ||||||
|  |         "rev": "fe38b1b8c23d86ed93c13ef367b19496e398462d", | ||||||
|  |         "hash": "sha256-51tpID94hoxm0I2Mf3WFQBf5MsuzIzlkS9lOto/8tC4=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/vulkan-deps": { | ||||||
|  |         "url": "https://chromium.googlesource.com/vulkan-deps", | ||||||
|  |         "rev": "a493d027dfa1ebf220dea834757f5114494f0f92", | ||||||
|  |         "hash": "sha256-n52ZDzn4/SxcdUzCENBpUfjJk3+0IQSe+qj9FVgFn2w=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/glslang/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang", | ||||||
|  |         "rev": "3289b1d61b69a6c66c4b7cd2c6d3ab2a6df031e5", | ||||||
|  |         "hash": "sha256-9xGshr6ts0TdER7Sy86XpKrUItukeM59ozCIwkFy26A=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/spirv-cross/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Cross", | ||||||
|  |         "rev": "b8fcf307f1f347089e3c46eb4451d27f32ebc8d3", | ||||||
|  |         "hash": "sha256-H43M9DXfEuyKuvo6rjb5k0KEbYOSFodbPJh8ZKY4PQg=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/spirv-headers/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Headers", | ||||||
|  |         "rev": "3397e1e4fe0a9964e1837c2934b81835093494b8", | ||||||
|  |         "hash": "sha256-Yp+HE/XIPJD/Baj9Nvs3H7J5Bx816qkYFpL6zARyY/8=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/spirv-tools/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools", | ||||||
|  |         "rev": "392b4893c4955125c1873c33a97f2a8ee8363bd3", | ||||||
|  |         "hash": "sha256-HMzQps2F9TAnHHPvBeqowADHPlTvfRWUekE37AKMcaw=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/vulkan-headers/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Headers", | ||||||
|  |         "rev": "d1cd37e925510a167d4abef39340dbdea47d8989", | ||||||
|  |         "hash": "sha256-WUj4nmr4SJFTDoaOuZBVfqOrJykzW9Kg2sqaplm8E1A=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/vulkan-loader/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader", | ||||||
|  |         "rev": "fe92c7d7e54664b1d3f3a0d734fd6f2ffd92e485", | ||||||
|  |         "hash": "sha256-9Oe3JIuOT/yc+pUgKptnex9gKQFsHo1uBb3zeTegL6Q=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/vulkan-tools/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Tools", | ||||||
|  |         "rev": "8ce6f121d1fcbdf60f0f4264e23fbcd247b9101d", | ||||||
|  |         "hash": "sha256-3OcmtPp8mhrVYrPoCe9qnisXllMhYLdZ4dEulDhlq8k=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/vulkan-utility-libraries/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Utility-Libraries", | ||||||
|  |         "rev": "a528f95dc2f92bdd83c0c32efe2d13c806428c9d", | ||||||
|  |         "hash": "sha256-7VEYvq1x+BYPuMGi47a7/R9ZrIR9CoIaV15wLpk97bg=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/vulkan-validation-layers/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers", | ||||||
|  |         "rev": "88a897d5921f737c9826fdd4db1ae2010d23dbb3", | ||||||
|  |         "hash": "sha256-X5JFPq+4rqpfKLO7ImHOcR1nvO3+PCCglP0+hhUeiJ0=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/vulkan_memory_allocator": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git", | ||||||
|  |         "rev": "cb0597213b0fcb999caa9ed08c2f88dc45eb7d50", | ||||||
|  |         "hash": "sha256-yBCs3zfqs/60htsZAOscjcyKhVbAWE6znweuXcs1oKo=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/wayland/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/anongit.freedesktop.org/git/wayland/wayland.git", | ||||||
|  |         "rev": "a156431ea66fe67d69c9fbba8a8ad34dabbab81c", | ||||||
|  |         "hash": "sha256-oK0Z8xO2ILuySGZS0m37ZF0MOyle2l8AXb0/6wai0/w=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/wayland-protocols/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/anongit.freedesktop.org/git/wayland/wayland-protocols.git", | ||||||
|  |         "rev": "efbc060534be948b63e1f395d69b583eebba3235", | ||||||
|  |         "hash": "sha256-tdpEK7soY0aKSk6VD4nulH7ORubX8RfjXYmNAd/cWKY=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/wayland-protocols/kde": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/KDE/plasma-wayland-protocols.git", | ||||||
|  |         "rev": "0b07950714b3a36c9b9f71fc025fc7783e82926e", | ||||||
|  |         "hash": "sha256-Dmcp/2ms/k7NxPPmPkp0YNfM9z2Es1ZO0uX10bc7N2Y=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/wayland-protocols/gtk": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/GNOME/gtk.git", | ||||||
|  |         "rev": "40ebed3a03aef096addc0af09fec4ec529d882a0", | ||||||
|  |         "hash": "sha256-75XNnLkF5Lt1LMRGT+T61k0/mLa3kkynfN+QWvZ0LiQ=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/webdriver/pylib": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/SeleniumHQ/selenium/py.git", | ||||||
|  |         "rev": "1e954903022e9386b9acf452c24f4458dd4c4fc1", | ||||||
|  |         "hash": "sha256-k5qx4xyO83jPtHaMh6aMigMJ3hsytFdFQOcZLmwPEYo=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/webgl/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/khronosgroup/webgl.git", | ||||||
|  |         "rev": "c01b768bce4a143e152c1870b6ba99ea6267d2b0", | ||||||
|  |         "hash": "sha256-mSketnpcDtz3NnhPkXMpMpq8MWcFiSviJbK6h06fcnw=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/webgpu-cts/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/gpuweb/cts.git", | ||||||
|  |         "rev": "b500efdd5fdd62404322ab9ecd70b938ac59a47f", | ||||||
|  |         "hash": "sha256-gGyXYaHH0nk3rbJTtazNyj9vO4PqDPJ0OG1/CisrIq0=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/webpagereplay": { | ||||||
|  |         "url": "https://chromium.googlesource.com/webpagereplay.git", | ||||||
|  |         "rev": "eebd5c62cb5c6a5afbb36eccdcc3b3e01f28adc9", | ||||||
|  |         "hash": "sha256-WXiWUVTX4JBuavc3qxPpWeM2qZsyMr64iqF/fu9fzRI=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/webrtc": { | ||||||
|  |         "url": "https://webrtc.googlesource.com/src.git", | ||||||
|  |         "rev": "d2eaa5570fc9959f8dbde32912a16366b8ee75f4", | ||||||
|  |         "hash": "sha256-vWz+CAlgvavAmoCgy+D5FDGSyYoe15vfKI2fw33K8cc=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/wuffs/src": { | ||||||
|  |         "url": "https://skia.googlesource.com/external/github.com/google/wuffs-mirror-release-c.git", | ||||||
|  |         "rev": "e3f919ccfe3ef542cfc983a82146070258fb57f8", | ||||||
|  |         "hash": "sha256-373d2F/STcgCHEq+PO+SCHrKVOo6uO1rqqwRN5eeBCw=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/weston/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/anongit.freedesktop.org/git/wayland/weston.git", | ||||||
|  |         "rev": "bdba2f9adaca673fd58339d8140bc04727ee279d", | ||||||
|  |         "hash": "sha256-o49a3sp+D9FycxeB+uMcKouVvlKWoWpfws7FLEGJ/V8=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/xdg-utils": { | ||||||
|  |         "url": "https://chromium.googlesource.com/chromium/deps/xdg-utils.git", | ||||||
|  |         "rev": "cb54d9db2e535ee4ef13cc91b65a1e2741a94a44", | ||||||
|  |         "hash": "sha256-WuQ9uDq+QD17Y20ACFGres4nbkeOiTE2y+tY1avAT5U=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/xnnpack/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/google/XNNPACK.git", | ||||||
|  |         "rev": "63e7e89ddc0cf5671d2659cd34a3eb64a008dd63", | ||||||
|  |         "hash": "sha256-cqzSTeRziIZFdArk6Ty/1JyeSM8w/aH2buoNy5GOIdg=" | ||||||
|  |       }, | ||||||
|  |       "src/third_party/zstd/src": { | ||||||
|  |         "url": "https://chromium.googlesource.com/external/github.com/facebook/zstd.git", | ||||||
|  |         "rev": "e128976193546dceb24249206a02ff8f444f7120", | ||||||
|  |         "hash": "sha256-09KBWIUdz53TOSGhi32BJ2/FIA/BXxRNvgZMZJYiWgw=" | ||||||
|  |       }, | ||||||
|  |       "src/v8": { | ||||||
|  |         "url": "https://chromium.googlesource.com/v8/v8.git", | ||||||
|  |         "rev": "ad8af0fc661d278e87627fcaa3a7cf795ee80dd8", | ||||||
|  |         "hash": "sha256-NOhavmx5NYJx6MSDwRS6RXHcn3DB7kNlTjIFZr6rMMY=" | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										161
									
								
								pkgs/by-name/he/helium-browser/package.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										161
									
								
								pkgs/by-name/he/helium-browser/package.nix
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,161 @@ | |||||||
|  | { | ||||||
|  |   stdenv, | ||||||
|  |   lib, | ||||||
|  |   makeWrapper, | ||||||
|  |   ed, | ||||||
|  |   gsettings-desktop-schemas, | ||||||
|  |   gtk3, | ||||||
|  |   gtk4, | ||||||
|  |   adwaita-icon-theme, | ||||||
|  |   libva, | ||||||
|  |   pipewire, | ||||||
|  |   wayland, | ||||||
|  |   glib, | ||||||
|  |   libkrb5, | ||||||
|  |   xdg-utils, | ||||||
|  |   coreutils, | ||||||
|  |   gnugrep, | ||||||
|  |   callPackage, | ||||||
|  |   rustc, | ||||||
|  |   runCommand, | ||||||
|  |   widevine-cdm, | ||||||
|  |   enableWideVine ? false, | ||||||
|  |   proprietaryCodecs ? true, | ||||||
|  |   cupsSupport ? true, | ||||||
|  |   pulseSupport ? stdenv.hostPlatform.isLinux, | ||||||
|  |   commandLineArgs ? "", | ||||||
|  |  | ||||||
|  | }: | ||||||
|  | let | ||||||
|  |   upstream-info = (lib.importJSON ./info.json)."ungoogled-chromium"; | ||||||
|  |   unwrapped = callPackage ./unwrapped.nix { | ||||||
|  |     inherit | ||||||
|  |       helium-patcher-unwrapped | ||||||
|  |       upstream-info | ||||||
|  |       proprietaryCodecs | ||||||
|  |       cupsSupport | ||||||
|  |       pulseSupport | ||||||
|  |       ; | ||||||
|  |     stdenv = rustc.llvmPackages.stdenv; | ||||||
|  |   }; | ||||||
|  |   helium-patcher-unwrapped = callPackage ./helium-patcher.nix { }; | ||||||
|  |   sandboxExecutableName = unwrapped.passthru.sandboxExecutableName; | ||||||
|  |  | ||||||
|  |   chromiumWV = | ||||||
|  |     let | ||||||
|  |       browser = unwrapped; | ||||||
|  |     in | ||||||
|  |     if enableWideVine then | ||||||
|  |       runCommand (browser.name + "-wv") { version = browser.version; } '' | ||||||
|  |         mkdir -p $out | ||||||
|  |         cp -a ${browser}/* $out/ | ||||||
|  |         chmod u+w $out/libexec/helium | ||||||
|  |         cp -a ${widevine-cdm}/share/google/chrome/WidevineCdm $out/libexec/helium/ | ||||||
|  |       '' | ||||||
|  |     else | ||||||
|  |       browser; | ||||||
|  |  | ||||||
|  | in | ||||||
|  | stdenv.mkDerivation { | ||||||
|  |   pname = "helium-browser"; | ||||||
|  |   inherit (unwrapped) version; | ||||||
|  |  | ||||||
|  |   nativeBuildInputs = [ | ||||||
|  |     makeWrapper | ||||||
|  |     ed | ||||||
|  |   ]; | ||||||
|  |  | ||||||
|  |   buildInputs = [ | ||||||
|  |     # needed for GSETTINGS_SCHEMAS_PATH | ||||||
|  |     gsettings-desktop-schemas | ||||||
|  |     glib | ||||||
|  |     gtk3 | ||||||
|  |     gtk4 | ||||||
|  |  | ||||||
|  |     # needed for XDG_ICON_DIRS | ||||||
|  |     adwaita-icon-theme | ||||||
|  |  | ||||||
|  |     # Needed for kerberos at runtime | ||||||
|  |     libkrb5 | ||||||
|  |   ]; | ||||||
|  |  | ||||||
|  |   outputs = [ | ||||||
|  |     "out" | ||||||
|  |     "sandbox" | ||||||
|  |   ]; | ||||||
|  |  | ||||||
|  |   buildCommand = | ||||||
|  |     let | ||||||
|  |       browserBinary = "${chromiumWV}/libexec/helium/helium"; | ||||||
|  |       libPath = lib.makeLibraryPath [ | ||||||
|  |         libva | ||||||
|  |         pipewire | ||||||
|  |         wayland | ||||||
|  |         gtk3 | ||||||
|  |         gtk4 | ||||||
|  |         libkrb5 | ||||||
|  |       ]; | ||||||
|  |  | ||||||
|  |     in | ||||||
|  |     '' | ||||||
|  |       mkdir -p "$out/bin" | ||||||
|  |  | ||||||
|  |       makeWrapper "${browserBinary}" "$out/bin/helium" \ | ||||||
|  |         --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" \ | ||||||
|  |         --add-flags ${lib.escapeShellArg commandLineArgs} | ||||||
|  |       ed -v -s "$out/bin/helium" << EOF | ||||||
|  |       2i | ||||||
|  |  | ||||||
|  |       if [ -x "/run/wrappers/bin/${sandboxExecutableName}" ] | ||||||
|  |       then | ||||||
|  |         export CHROME_DEVEL_SANDBOX="/run/wrappers/bin/${sandboxExecutableName}" | ||||||
|  |       else | ||||||
|  |         export CHROME_DEVEL_SANDBOX="$sandbox/bin/${sandboxExecutableName}" | ||||||
|  |       fi | ||||||
|  |  | ||||||
|  |       # Make generated desktop shortcuts have a valid executable name. | ||||||
|  |       export CHROME_WRAPPER='helium' | ||||||
|  |  | ||||||
|  |     '' | ||||||
|  |     + lib.optionalString (libPath != "") '' | ||||||
|  |       # To avoid loading .so files from cwd, LD_LIBRARY_PATH here must not | ||||||
|  |       # contain an empty section before or after a colon. | ||||||
|  |       export LD_LIBRARY_PATH="\$LD_LIBRARY_PATH\''${LD_LIBRARY_PATH:+:}${libPath}" | ||||||
|  |     '' | ||||||
|  |     + '' | ||||||
|  |  | ||||||
|  |       # libredirect causes chromium to deadlock on startup | ||||||
|  |       export LD_PRELOAD="\$(echo -n "\$LD_PRELOAD" | ${coreutils}/bin/tr ':' '\n' | ${gnugrep}/bin/grep -v /lib/libredirect\\\\.so$ | ${coreutils}/bin/tr '\n' ':')" | ||||||
|  |  | ||||||
|  |       export XDG_DATA_DIRS=$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH\''${XDG_DATA_DIRS:+:}\$XDG_DATA_DIRS | ||||||
|  |  | ||||||
|  |     '' | ||||||
|  |     + lib.optionalString (!xdg-utils.meta.broken) '' | ||||||
|  |       # Mainly for xdg-open but also other xdg-* tools (this is only a fallback; \$PATH is suffixed so that other implementations can be used): | ||||||
|  |       export PATH="\$PATH\''${PATH:+:}${xdg-utils}/bin" | ||||||
|  |     '' | ||||||
|  |     + '' | ||||||
|  |  | ||||||
|  |       . | ||||||
|  |       w | ||||||
|  |       EOF | ||||||
|  |  | ||||||
|  |       ln -sv "${unwrapped.sandbox}" "$sandbox" | ||||||
|  |  | ||||||
|  |       ln -s "$out/bin/helium" "$out/bin/helium-browser" | ||||||
|  |  | ||||||
|  |       mkdir -p "$out/share" | ||||||
|  |       for f in '${unwrapped}'/share/*; do # hello emacs */ | ||||||
|  |         ln -s -t "$out/share/" "$f" | ||||||
|  |       done | ||||||
|  |     ''; | ||||||
|  |  | ||||||
|  |   inherit (unwrapped) packageName; | ||||||
|  |   meta = unwrapped.meta; | ||||||
|  |   passthru = { | ||||||
|  |     inherit (unwrapped) upstream-info; | ||||||
|  |     browser = unwrapped; | ||||||
|  |     inherit sandboxExecutableName; | ||||||
|  |     updateScript = ./update.mjs; | ||||||
|  |   }; | ||||||
|  | } | ||||||
							
								
								
									
										18
									
								
								pkgs/by-name/he/helium-browser/ungoogled-flags.toml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								pkgs/by-name/he/helium-browser/ungoogled-flags.toml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | |||||||
|  | build_with_tflite_lib=false | ||||||
|  | chrome_pgo_phase=0 | ||||||
|  | clang_use_chrome_plugins=false | ||||||
|  | disable_fieldtrial_testing_config=true | ||||||
|  | enable_hangout_services_extension=false | ||||||
|  | enable_mdns=false | ||||||
|  | enable_remoting=false | ||||||
|  | enable_reporting=false | ||||||
|  | enable_service_discovery=false | ||||||
|  | enable_widevine=true | ||||||
|  | exclude_unwind_tables=true | ||||||
|  | google_api_key="" | ||||||
|  | google_default_client_id="" | ||||||
|  | google_default_client_secret="" | ||||||
|  | safe_browsing_mode=0 | ||||||
|  | treat_warnings_as_errors=false | ||||||
|  | use_official_google_api_keys=false | ||||||
|  | use_unofficial_version_number=false | ||||||
							
								
								
									
										215
									
								
								pkgs/by-name/he/helium-browser/unwrapped.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										215
									
								
								pkgs/by-name/he/helium-browser/unwrapped.nix
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,215 @@ | |||||||
|  | { | ||||||
|  |   stdenv, | ||||||
|  |   upstream-info, | ||||||
|  |   chromium, | ||||||
|  |   fetchurl, | ||||||
|  |   go-crx3, | ||||||
|  |   overrideCC, | ||||||
|  |   pkgsBuildBuild, | ||||||
|  |   lib, | ||||||
|  |   electron-source, | ||||||
|  |   helium-patcher-unwrapped, | ||||||
|  |   fetchzip, | ||||||
|  |  | ||||||
|  |   proprietaryCodecs, | ||||||
|  |   cupsSupport, | ||||||
|  |   pulseSupport, | ||||||
|  | }: | ||||||
|  | ( | ||||||
|  |   (chromium.passthru.mkDerivation.override ( | ||||||
|  |     old: | ||||||
|  |     let | ||||||
|  |       warnObsoleteVersionConditional = | ||||||
|  |         min-version: result: | ||||||
|  |         let | ||||||
|  |           min-supported-version = (lib.head (lib.attrValues electron-source)).unwrapped.info.chromium.version; | ||||||
|  |           # Warning can be toggled by changing the value of enabled: | ||||||
|  |           enabled = false; | ||||||
|  |         in | ||||||
|  |         lib.warnIf (enabled && lib.versionAtLeast min-supported-version min-version) | ||||||
|  |           "chromium: min-supported-version ${min-supported-version} is newer than a conditional bounded at ${min-version}. You can safely delete it." | ||||||
|  |           result; | ||||||
|  |       chromiumVersionAtLeast = | ||||||
|  |         min-version: | ||||||
|  |         let | ||||||
|  |           result = lib.versionAtLeast upstream-info.version min-version; | ||||||
|  |         in | ||||||
|  |         warnObsoleteVersionConditional min-version result; | ||||||
|  |       versionRange = | ||||||
|  |         min-version: upto-version: | ||||||
|  |         let | ||||||
|  |           inherit (upstream-info) version; | ||||||
|  |           result = lib.versionAtLeast version min-version && lib.versionOlder version upto-version; | ||||||
|  |         in | ||||||
|  |         warnObsoleteVersionConditional upto-version result; | ||||||
|  |  | ||||||
|  |     in | ||||||
|  |     { | ||||||
|  |       inherit stdenv; | ||||||
|  |       ungoogled = true; | ||||||
|  |       ungoogled-chromium = helium-patcher-unwrapped; | ||||||
|  |       inherit | ||||||
|  |         upstream-info | ||||||
|  |         chromiumVersionAtLeast | ||||||
|  |         versionRange | ||||||
|  |         proprietaryCodecs | ||||||
|  |         cupsSupport | ||||||
|  |         pulseSupport | ||||||
|  |         ; | ||||||
|  |  | ||||||
|  |     } | ||||||
|  |   )) | ||||||
|  |   ( | ||||||
|  |     base: | ||||||
|  |     let | ||||||
|  |       helium = helium-patcher-unwrapped { | ||||||
|  |         inherit (upstream-info.deps.ungoogled-patches) rev hash; | ||||||
|  |       }; | ||||||
|  |       buildPlatformLlvmStdenv = | ||||||
|  |         let | ||||||
|  |           llvmPackages = pkgsBuildBuild.rustc.llvmPackages; | ||||||
|  |         in | ||||||
|  |         overrideCC llvmPackages.stdenv ( | ||||||
|  |           llvmPackages.stdenv.cc.override { | ||||||
|  |             inherit (llvmPackages) bintools; | ||||||
|  |           } | ||||||
|  |         ); | ||||||
|  |  | ||||||
|  |       ublock_src = | ||||||
|  |         let | ||||||
|  |           version = "1.66.4"; | ||||||
|  |         in | ||||||
|  |         fetchurl { | ||||||
|  |           url = "https://github.com/imputnet/ublock-origin-crx/releases/download/${version}/uBlock0_${version}.crx"; | ||||||
|  |           hash = "sha256-CMPHVEpSeKA1ZJX3Ia5gccIr+4KDFs6OF+IgO0Zhq74="; | ||||||
|  |  | ||||||
|  |           recursiveHash = true; | ||||||
|  |           downloadToTemp = true; | ||||||
|  |           nativeBuildInputs = [ | ||||||
|  |             go-crx3 | ||||||
|  |           ]; | ||||||
|  |           postFetch = '' | ||||||
|  |             mv "$downloadedFile" "$TMPDIR/uBlock0_${version}.crx" | ||||||
|  |             crx3 unpack "$TMPDIR/uBlock0_${version}.crx" | ||||||
|  |             mv "uBlock0_${version}" "$out" | ||||||
|  |           ''; | ||||||
|  |         }; | ||||||
|  |       helium-onboarding = | ||||||
|  |         let | ||||||
|  |           version = "202509241653"; | ||||||
|  |         in | ||||||
|  |         fetchzip { | ||||||
|  |           url = "https://github.com/imputnet/helium-onboarding/releases/download/${version}/helium-onboarding-${version}.tar.gz"; | ||||||
|  |           hash = "sha256-AeGc6psN4nzbjSG/UF1GNiZ7ZhcgA5GwBrGTg2Rt3Ns="; | ||||||
|  |           stripRoot = false; | ||||||
|  |         }; | ||||||
|  |       search-engine-data = fetchzip { | ||||||
|  |         url = "https://gist.githubusercontent.com/wukko/2a591364dda346e10219e4adabd568b1/raw/e75ae3c4a1ce940ef7627916a48bc40882d24d40/nonfree-search-engines-data.tar.gz"; | ||||||
|  |         hash = "sha256-G83WwfoNmzI0ib9SRfjoDEoULnwgOTMQurlr1fKIpoo="; | ||||||
|  |         stripRoot = false; | ||||||
|  |       }; | ||||||
|  |  | ||||||
|  |     in | ||||||
|  |     rec { | ||||||
|  |       inherit stdenv; | ||||||
|  |       pname = "helium-browser-unwrapped"; | ||||||
|  |       version = "${upstream-info.deps.ungoogled-patches.rev}-${upstream-info.version}"; | ||||||
|  |       depsBuildBuild = lib.filter ( | ||||||
|  |         d: d != buildPlatformLlvmStdenv && d != buildPlatformLlvmStdenv.cc | ||||||
|  |       ) base.depsBuildBuild; | ||||||
|  |  | ||||||
|  |       postUnpack = '' | ||||||
|  |         cp -r ${helium-onboarding}/ src/components/helium_onboarding | ||||||
|  |         chmod +rw -R src/components/helium_onboarding | ||||||
|  |         cp -r ${ublock_src}/ src/third_party/ublock | ||||||
|  |         chmod +rw -R src/third_party/ublock | ||||||
|  |         cp -r ${search-engine-data}/. src/third_party/search_engines_data/resources_internal | ||||||
|  |         chmod +rw -R src/third_party/search_engines_data/resources_internal | ||||||
|  |       ''; | ||||||
|  |       postPatch = base.postPatch + '' | ||||||
|  |         "${helium}/utils/name_substitution.py" --sub -t . | ||||||
|  |         "${helium}/utils/helium_version.py" --tree "${helium}" --chromium-tree . | ||||||
|  |         cp --no-preserve=mode,ownership -r "${helium}/resources" "$TMPDIR/helium-resources" | ||||||
|  |         "${helium}/utils/generate_resources.py" "${helium}/resources/generate_resources.txt" "$TMPDIR/helium-resources" | ||||||
|  |         "${helium}/utils/replace_resources.py" "${helium}/resources/helium_resources.txt" "$TMPDIR/helium-resources" . | ||||||
|  |       ''; | ||||||
|  |       name = "helium-browser"; | ||||||
|  |       packageName = "helium"; | ||||||
|  |       buildTargets = [ | ||||||
|  |         "run_mksnapshot_default" | ||||||
|  |         "chrome_sandbox" | ||||||
|  |         "chrome" | ||||||
|  |       ]; | ||||||
|  |  | ||||||
|  |       outputs = [ | ||||||
|  |         "out" | ||||||
|  |         "sandbox" | ||||||
|  |       ]; | ||||||
|  |  | ||||||
|  |       sandboxExecutableName = "__chromium-suid-sandbox"; | ||||||
|  |  | ||||||
|  |       installPhase = '' | ||||||
|  |         mkdir -p "$libExecPath" | ||||||
|  |         cp -v "$buildPath/"*.so "$buildPath/"*.pak "$buildPath/"*.bin "$libExecPath/" | ||||||
|  |         cp -v "$buildPath/libvulkan.so.1" "$libExecPath/" | ||||||
|  |         cp -v "$buildPath/vk_swiftshader_icd.json" "$libExecPath/" | ||||||
|  |         cp -v "$buildPath/icudtl.dat" "$libExecPath/" | ||||||
|  |         cp -vLR "$buildPath/locales" "$buildPath/resources" "$libExecPath/" | ||||||
|  |         cp -v "$buildPath/chrome_crashpad_handler" "$libExecPath/" | ||||||
|  |         cp -v "$buildPath/chrome" "$libExecPath/$packageName" | ||||||
|  |  | ||||||
|  |         # Swiftshader | ||||||
|  |         # See https://stackoverflow.com/a/4264351/263061 for the find invocation. | ||||||
|  |         if [ -n "$(find "$buildPath/swiftshader/" -maxdepth 1 -name '*.so' -print -quit)" ]; then | ||||||
|  |           echo "Swiftshader files found; installing" | ||||||
|  |           mkdir -p "$libExecPath/swiftshader" | ||||||
|  |           cp -v "$buildPath/swiftshader/"*.so "$libExecPath/swiftshader/" | ||||||
|  |         else | ||||||
|  |           echo "Swiftshader files not found" | ||||||
|  |         fi | ||||||
|  |  | ||||||
|  |         mkdir -p "$sandbox/bin" | ||||||
|  |         cp -v "$buildPath/chrome_sandbox" "$sandbox/bin/${sandboxExecutableName}" | ||||||
|  |  | ||||||
|  |         mkdir -vp "$out/share/man/man1" | ||||||
|  |         cp -v "$buildPath/chrome.1" "$out/share/man/man1/$packageName.1" | ||||||
|  |  | ||||||
|  |         for icon_file in chrome/app/theme/chromium/product_logo_*[0-9].png; do | ||||||
|  |           num_and_suffix="''${icon_file##*logo_}" | ||||||
|  |           icon_size="''${num_and_suffix%.*}" | ||||||
|  |           expr "$icon_size" : "^[0-9][0-9]*$" || continue | ||||||
|  |           logo_output_prefix="$out/share/icons/hicolor" | ||||||
|  |           logo_output_path="$logo_output_prefix/''${icon_size}x''${icon_size}/apps" | ||||||
|  |           mkdir -vp "$logo_output_path" | ||||||
|  |           cp -v "$icon_file" "$logo_output_path/$packageName.png" | ||||||
|  |         done | ||||||
|  |  | ||||||
|  |         # Install Desktop Entry | ||||||
|  |         install -D chrome/installer/linux/common/desktop.template \ | ||||||
|  |           $out/share/applications/helium-browser.desktop | ||||||
|  |  | ||||||
|  |         substituteInPlace $out/share/applications/helium-browser.desktop \ | ||||||
|  |           --replace "@@MENUNAME@@" "Helium" \ | ||||||
|  |           --replace "@@PACKAGE@@" "helium" \ | ||||||
|  |           --replace "Exec=/usr/bin/@@USR_BIN_SYMLINK_NAME@@" "Exec=helium" | ||||||
|  |  | ||||||
|  |         # Append more mime types to the end | ||||||
|  |         sed -i '/^MimeType=/ s,$,x-scheme-handler/webcal;x-scheme-handler/mailto;x-scheme-handler/about;x-scheme-handler/unknown,' \ | ||||||
|  |           $out/share/applications/helium-browser.desktop | ||||||
|  |  | ||||||
|  |         # See https://github.com/NixOS/nixpkgs/issues/12433 | ||||||
|  |         sed -i \ | ||||||
|  |           -e '/\[Desktop Entry\]/a\' \ | ||||||
|  |           -e 'StartupWMClass=helium-browser' \ | ||||||
|  |           $out/share/applications/helium-browser.desktop | ||||||
|  |       ''; | ||||||
|  |  | ||||||
|  |       passthru = { | ||||||
|  |         inherit sandboxExecutableName; | ||||||
|  |       }; | ||||||
|  |  | ||||||
|  |       requiredSystemFeatures = [ "big-parallel" ]; | ||||||
|  |  | ||||||
|  |     } | ||||||
|  |   ) | ||||||
|  | ) | ||||||
							
								
								
									
										290
									
								
								pkgs/by-name/he/helium-browser/update.mjs
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										290
									
								
								pkgs/by-name/he/helium-browser/update.mjs
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,290 @@ | |||||||
|  | #! /usr/bin/env nix-shell | ||||||
|  | /* | ||||||
|  | #! nix-shell -i zx -p zx | ||||||
|  | */ | ||||||
|  |  | ||||||
|  | console.log(process.cwd()) | ||||||
|  |  | ||||||
|  | const custompkgs = (await $`git rev-parse --show-toplevel`).stdout.trim() | ||||||
|  | const $custompkgs = $({ | ||||||
|  |   cwd:custompkgs | ||||||
|  | }) | ||||||
|  | const nixpkgs = "<nixpkgs>" | ||||||
|  |  | ||||||
|  | const dummy_hash = 'sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=' | ||||||
|  |  | ||||||
|  | const lockfile_file = './info.json' | ||||||
|  | const lockfile_initial = fs.readJsonSync(lockfile_file) | ||||||
|  | function flush_to_file() { | ||||||
|  |   fs.writeJsonSync(lockfile_file, lockfile, { spaces: 2 }) | ||||||
|  | } | ||||||
|  | const flush_to_file_proxy = { | ||||||
|  |   get(obj, prop) { | ||||||
|  |     const value = obj[prop] | ||||||
|  |     return typeof value == 'object' ? new Proxy(value, flush_to_file_proxy) : value | ||||||
|  |   }, | ||||||
|  |  | ||||||
|  |   set(obj, prop, value) { | ||||||
|  |     obj[prop] = value | ||||||
|  |     flush_to_file() | ||||||
|  |     return true | ||||||
|  |   }, | ||||||
|  | } | ||||||
|  | const lockfile = new Proxy(structuredClone(lockfile_initial), flush_to_file_proxy) | ||||||
|  | const ungoogled_rev = argv['ungoogled-chromium-rev'] | ||||||
|  |  | ||||||
|  | for (const attr_path of Object.keys(lockfile)) { | ||||||
|  |   const ungoogled = attr_path === 'ungoogled-chromium' | ||||||
|  |  | ||||||
|  |   if (!argv[attr_path] && !(ungoogled && ungoogled_rev)) { | ||||||
|  |     console.log(`[${attr_path}] Skipping ${attr_path}. Pass --${attr_path} as argument to update.`) | ||||||
|  |     continue | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   const version_nixpkgs = !ungoogled ? lockfile[attr_path].version : lockfile[attr_path].deps['ungoogled-patches'].rev | ||||||
|  |   const version_upstream = !ungoogled ? await get_latest_chromium_release('linux') : | ||||||
|  |     ungoogled_rev ?? await get_latest_ungoogled_release() | ||||||
|  |  | ||||||
|  |   console.log(`[${attr_path}] ${chalk.red(version_nixpkgs)} (nixpkgs)`) | ||||||
|  |   console.log(`[${attr_path}] ${chalk.green(version_upstream)} (upstream)`) | ||||||
|  |  | ||||||
|  |   if (ungoogled_rev || version_greater_than(version_upstream, version_nixpkgs)) { | ||||||
|  |     console.log(`[${attr_path}] ${chalk.green(version_upstream)} from upstream is newer than our ${chalk.red(version_nixpkgs)}...`) | ||||||
|  |  | ||||||
|  |     let ungoogled_patches = ungoogled ? await fetch_ungoogled(version_upstream) : undefined | ||||||
|  |  | ||||||
|  |     // For ungoogled-chromium we need to remove the patch revision (e.g. 130.0.6723.116-1 -> 130.0.6723.116) | ||||||
|  |     // by just using the chromium_version.txt content from the patches checkout (to also work with commit revs). | ||||||
|  |     const version_chromium = ungoogled_patches?.chromium_version ?? version_upstream | ||||||
|  |  | ||||||
|  |     const chromium_rev = await chromium_resolve_tag_to_rev(version_chromium) | ||||||
|  |  | ||||||
|  |     lockfile[attr_path] = { | ||||||
|  |       version: version_chromium, | ||||||
|  |       chromedriver: !ungoogled ? await fetch_chromedriver_binaries(await get_latest_chromium_release('mac')) : undefined, | ||||||
|  |       deps: { | ||||||
|  |         depot_tools: {}, | ||||||
|  |         gn: await fetch_gn(chromium_rev, lockfile_initial[attr_path].deps.gn), | ||||||
|  |         'ungoogled-patches': !ungoogled ? undefined : { | ||||||
|  |           rev: ungoogled_patches.rev, | ||||||
|  |           hash: ungoogled_patches.hash, | ||||||
|  |         }, | ||||||
|  |         npmHash: dummy_hash, | ||||||
|  |       }, | ||||||
|  |       DEPS: {}, | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     const depot_tools = await fetch_depot_tools(chromium_rev, lockfile_initial[attr_path].deps.depot_tools) | ||||||
|  |     lockfile[attr_path].deps.depot_tools = { | ||||||
|  |       rev: depot_tools.rev, | ||||||
|  |       hash: depot_tools.hash, | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     // DEPS update loop | ||||||
|  |     lockfile[attr_path].DEPS = await resolve_DEPS(depot_tools.out, chromium_rev) | ||||||
|  |     for (const [path, value] of Object.entries(lockfile[attr_path].DEPS)) { | ||||||
|  |       delete value.fetcher | ||||||
|  |       delete value.postFetch | ||||||
|  |  | ||||||
|  |       if (value.url === 'https://chromium.googlesource.com/chromium/src.git') { | ||||||
|  |         value.recompress = true | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       const cache_hit = (() => { | ||||||
|  |         for (const attr_path in lockfile_initial) { | ||||||
|  |           const cache = lockfile_initial[attr_path].DEPS[path] | ||||||
|  |           const hits_cache = | ||||||
|  |             cache !== undefined && | ||||||
|  |             value.url === cache.url && | ||||||
|  |             value.rev === cache.rev && | ||||||
|  |             value.recompress === cache.recompress && | ||||||
|  |             cache.hash !== undefined && | ||||||
|  |             cache.hash !== '' && | ||||||
|  |             cache.hash !== dummy_hash | ||||||
|  |  | ||||||
|  |           if (hits_cache) { | ||||||
|  |             cache.attr_path = attr_path | ||||||
|  |             return cache; | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |       })(); | ||||||
|  |  | ||||||
|  |       if (cache_hit) { | ||||||
|  |         console.log(`[${chalk.green(path)}] Reusing hash from previous info.json for ${cache_hit.url}@${cache_hit.rev} from ${cache_hit.attr_path}`) | ||||||
|  |         value.hash = cache_hit.hash | ||||||
|  |         continue | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       console.log(`[${chalk.red(path)}] FOD prefetching ${value.url}@${value.rev}...`) | ||||||
|  |       // value.hash = await prefetch_FOD('./package.nix', '-A', `${attr_path}.browser.passthru.chromiumDeps."${path}"`) | ||||||
|  |       value.hash = await prefetch_flake_FOD(`.#helium-browser.browser.passthru.chromiumDeps."${path}"`) | ||||||
|  |       // console.log(`[${chalk.green(path)}] FOD prefetching successful`) | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     // lockfile[attr_path].deps.npmHash = await prefetch_FOD('./package.nix', '-A', `${attr_path}.browser.passthru.npmDeps`) | ||||||
|  |     lockfile[attr_path].deps.npmHash = await prefetch_flake_FOD(`.#helium-browser.browser.passthru.npmDeps`) | ||||||
|  |  | ||||||
|  |     console.log(chalk.green(`[${attr_path}] Done updating ${attr_path} from ${version_nixpkgs} to ${version_upstream}!`)) | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | async function fetch_gn(chromium_rev, gn_previous) { | ||||||
|  |   const DEPS_file = await get_gitiles_file('https://chromium.googlesource.com/chromium/src', chromium_rev, 'DEPS') | ||||||
|  |   const { rev } = /^\s+'gn_version': 'git_revision:(?<rev>.+)',$/m.exec(DEPS_file).groups | ||||||
|  |  | ||||||
|  |   const cache_hit = rev === gn_previous.rev; | ||||||
|  |   if (cache_hit) { | ||||||
|  |     return gn_previous | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   const commit_date = await get_gitiles_commit_date('https://gn.googlesource.com/gn', rev) | ||||||
|  |   const version = `0-unstable-${commit_date}` | ||||||
|  |  | ||||||
|  |   const expr = [`(import ${nixpkgs} {}).gn.override { version = "${version}"; rev = "${rev}"; hash = ""; }`] | ||||||
|  |   const derivation = await $`nix-instantiate --expr ${expr}` | ||||||
|  |  | ||||||
|  |   return { | ||||||
|  |     version, | ||||||
|  |     rev, | ||||||
|  |     hash: await prefetch_FOD(derivation), | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | async function get_gitiles_commit_date(base_url, rev) { | ||||||
|  |   const url = `${base_url}/+/${rev}?format=json` | ||||||
|  |   const response = await (await fetch(url)).text() | ||||||
|  |   const json = JSON.parse(response.replace(`)]}'\n`, '')) | ||||||
|  |  | ||||||
|  |   const date = new Date(json.committer.time) | ||||||
|  |   return date.toISOString().split("T")[0] | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | async function fetch_chromedriver_binaries(version) { | ||||||
|  |   // https://developer.chrome.com/docs/chromedriver/downloads/version-selection | ||||||
|  |   const prefetch = async (url) => { | ||||||
|  |     const expr = [`(import ${nixpkgs} {}).fetchzip { url = "${url}"; hash = ""; }`] | ||||||
|  |     const derivation = await $`nix-instantiate --expr ${expr}` | ||||||
|  |     return await prefetch_FOD(derivation) | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   // if the URL ever changes, the URLs in the chromedriver derivations need updating as well! | ||||||
|  |   const url = (platform) => `https://storage.googleapis.com/chrome-for-testing-public/${version}/${platform}/chromedriver-${platform}.zip` | ||||||
|  |   return { | ||||||
|  |     version, | ||||||
|  |     hash_darwin: await prefetch(url('mac-x64')), | ||||||
|  |     hash_darwin_aarch64: await prefetch(url('mac-arm64')), | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | async function chromium_resolve_tag_to_rev(tag) { | ||||||
|  |   const url = `https://chromium.googlesource.com/chromium/src/+/refs/tags/${tag}?format=json` | ||||||
|  |   const response = await (await fetch(url)).text() | ||||||
|  |   const json = JSON.parse(response.replace(`)]}'\n`, '')) | ||||||
|  |   return json.commit | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | async function resolve_DEPS(depot_tools_checkout, chromium_rev) { | ||||||
|  |   const { stdout } = await $`./depot_tools.py ${depot_tools_checkout} ${chromium_rev}` | ||||||
|  |   const deps = JSON.parse(stdout) | ||||||
|  |   return Object.fromEntries(Object.entries(deps).map(([k, { url, rev, hash }]) => [k,  { url, rev, hash }])) | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | async function get_latest_chromium_release(platform) { | ||||||
|  |   const url = `https://versionhistory.googleapis.com/v1/chrome/platforms/${platform}/channels/stable/versions/all/releases?` + new URLSearchParams({ | ||||||
|  |     order_by: 'version desc', | ||||||
|  |     filter: 'endtime=none,fraction>=0.5' | ||||||
|  |   }) | ||||||
|  |  | ||||||
|  |   const response = await (await fetch(url)).json() | ||||||
|  |   return response.releases[0].version | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | async function get_latest_ungoogled_release() { | ||||||
|  |   const ungoogled_tags = await (await fetch('https://api.github.com/repos/imputnet/helium/tags')).json() | ||||||
|  |   // console.log(ungoogled_tags) | ||||||
|  |   // const chromium_releases = await (await fetch('https://versionhistory.googleapis.com/v1/chrome/platforms/linux/channels/stable/versions/all/releases')).json() | ||||||
|  |   // const chromium_release_map = chromium_releases.releases.map((x) => x.version) | ||||||
|  |   // return "0.5.2" // TODO: figure out how to actually properly do this stuff | ||||||
|  |   return ungoogled_tags[0].name | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | async function fetch_ungoogled(rev) { | ||||||
|  |   const expr = (hash) => [`(import ${nixpkgs} {}).fetchFromGitHub { owner = "imputnet"; repo = "helium"; rev = "${rev}"; hash = "${hash}"; }`] | ||||||
|  |   const hash = await prefetch_FOD('--expr', expr('')) | ||||||
|  |  | ||||||
|  |   const checkout = await $`nix-build --expr ${expr(hash)}` | ||||||
|  |   const checkout_path = checkout.stdout.trim() | ||||||
|  |  | ||||||
|  |   await fs.copy(path.join(checkout_path, 'flags.gn'), './ungoogled-flags.toml') | ||||||
|  |  | ||||||
|  |   const chromium_version = (await fs.readFile(path.join(checkout_path, 'chromium_version.txt'))).toString().trim() | ||||||
|  |  | ||||||
|  |   console.log(`[ungoogled-chromium] ${chalk.green(rev)} patch revision resolves to chromium version ${chalk.green(chromium_version)}`) | ||||||
|  |  | ||||||
|  |   return { | ||||||
|  |     rev, | ||||||
|  |     hash, | ||||||
|  |     chromium_version, | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | function version_greater_than(greater, than) { | ||||||
|  |   return greater.localeCompare(than, undefined, { numeric: true, sensitivity: 'base' }) === 1 | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | async function get_gitiles_file(repo, rev, path) { | ||||||
|  |   const base64 = await (await fetch(`${repo}/+/${rev}/${path}?format=TEXT`)).text() | ||||||
|  |   return Buffer.from(base64, 'base64').toString('utf-8') | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | async function fetch_depot_tools(chromium_rev, depot_tools_previous) { | ||||||
|  |   const depot_tools_rev = await get_gitiles_file('https://chromium.googlesource.com/chromium/src', chromium_rev, 'third_party/depot_tools') | ||||||
|  |   const hash = depot_tools_rev === depot_tools_previous.rev ? depot_tools_previous.hash : '' | ||||||
|  |   return await prefetch_gitiles('https://chromium.googlesource.com/chromium/tools/depot_tools', depot_tools_rev, hash) | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | async function prefetch_gitiles(url, rev, hash = '') { | ||||||
|  |   const expr = () => [`(import ${nixpkgs} {}).fetchFromGitiles { url = "${url}"; rev = "${rev}"; hash = "${hash}"; }`] | ||||||
|  |  | ||||||
|  |   if (hash === '') { | ||||||
|  |     hash = await prefetch_FOD('--expr', expr()) | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   const { stdout } = await $`nix-build  --expr ${expr()}` | ||||||
|  |   return { | ||||||
|  |     url, | ||||||
|  |     rev, | ||||||
|  |     hash, | ||||||
|  |     out: stdout.trim(), | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | async function prefetch_FOD(...args) { | ||||||
|  |   const { stderr } = await $`nix-build ${args}`.nothrow() | ||||||
|  |   const hash = /\s+got:\s+(?<hash>.+)$/m.exec(stderr)?.groups?.hash | ||||||
|  |   if (hash == undefined) { | ||||||
|  |     throw new Error(chalk.red('Expected to find hash in nix-build stderr output:') + stderr) | ||||||
|  |   } | ||||||
|  |   return hash | ||||||
|  | } | ||||||
|  | async function prefetch_flake_FOD(...args) { | ||||||
|  |   const { stderr } = await $custompkgs`nix build ${args}`.nothrow() | ||||||
|  |   const hash = /\s+got:\s+(?<hash>.+)$/m.exec(stderr)?.groups?.hash | ||||||
|  |   if (hash == undefined) { | ||||||
|  |     throw new Error(chalk.red('Expected to find hash in nix build stderr output:') + stderr) | ||||||
|  |   } | ||||||
|  |   return hash | ||||||
|  | } | ||||||
| @@ -20,24 +20,27 @@ stdenv.mkDerivation ( | |||||||
|       "qcadsp8380.mbn" |       "qcadsp8380.mbn" | ||||||
|       "qccdsp8380.mbn" |       "qccdsp8380.mbn" | ||||||
|       "qcdxkmsuc8380.mbn" |       "qcdxkmsuc8380.mbn" | ||||||
|  |       "bdwlan01.e0b" | ||||||
|     ]; |     ]; | ||||||
|  |  | ||||||
|   in |   in | ||||||
|   { |  | ||||||
|  |   rec { | ||||||
|     name = "x1e80100-firmware"; |     name = "x1e80100-firmware"; | ||||||
|  |     version = "26100_25.084.40393.0"; | ||||||
|     src = fetchurl { |     src = fetchurl { | ||||||
|       url = "https://download.microsoft.com/download/b7ca2c3f-d320-4795-be0f-529a0117abb4/SurfaceLaptop7_ARM_Win11_26100_25.061.7304.0.msi"; |       url = "https://download.microsoft.com/download/b7ca2c3f-d320-4795-be0f-529a0117abb4/SurfaceLaptop7_ARM_Win11_${version}.msi"; | ||||||
|       sha256 = "sha256-x75NsuZZr64XfGhjghIoiymdhhb/rM0iaV9EohwPbrs="; |       hash = "sha256-EHpq5yqnq2GwH5keCEbWvDEoprQA+74HDPHcq/eTm44="; | ||||||
|     }; |     }; | ||||||
|     nativeBuildInputs = [ |     nativeBuildInputs = [ | ||||||
|       msitools |       msitools | ||||||
|       tree |       tree | ||||||
|     ]; |     ]; | ||||||
|     unpackPhase = '' |     unpackPhase = '' | ||||||
|       msiextract -C . $src |       msiextract -C . "$src" | ||||||
|     ''; |     ''; | ||||||
|     buildPhase = '' |     buildPhase = '' | ||||||
|       mkdir -p $out/lib/firmware/qcom/x1e80100/microsoft/Romulus |       mkdir -p "$out/lib/firmware/qcom/x1e80100/microsoft/Romulus" | ||||||
|       for file in ${lib.concatStringsSep " " fw_files}; do |       for file in ${lib.concatStringsSep " " fw_files}; do | ||||||
|           echo -e "\tSearching for $file..." |           echo -e "\tSearching for $file..." | ||||||
|           fw_path=$(find . -type f -name "$file" -print | head -n 1) |           fw_path=$(find . -type f -name "$file" -print | head -n 1) | ||||||
| @@ -48,7 +51,7 @@ stdenv.mkDerivation ( | |||||||
|               exit 1 |               exit 1 | ||||||
|           fi |           fi | ||||||
|       done |       done | ||||||
|       cp $out/lib/firmware/qcom/x1e80100/microsoft/Romulus/qcdxkmsuc8380.mbn $out/lib/firmware/qcom/x1e80100/microsoft/qcdxkmsuc8380.mbn |       cp "$out/lib/firmware/qcom/x1e80100/microsoft/Romulus/qcdxkmsuc8380.mbn" "$out/lib/firmware/qcom/x1e80100/microsoft/qcdxkmsuc8380.mbn" | ||||||
|     ''; |     ''; | ||||||
|     meta = { |     meta = { | ||||||
|       platforms = [ "aarch64-linux" ]; |       platforms = [ "aarch64-linux" ]; | ||||||
|   | |||||||
							
								
								
									
										12
									
								
								pkgs/by-name/x1/x1e80100-linux-firmware/firmware.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								pkgs/by-name/x1/x1e80100-linux-firmware/firmware.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | |||||||
|  | --- a/board-2.json	2025-07-24 19:46:44.712406478 +0000 | ||||||
|  | +++ b/board-2.json	2025-07-24 19:46:42.655405480 +0000 | ||||||
|  | @@ -27,7 +27,8 @@ | ||||||
|  |              }, | ||||||
|  |              { | ||||||
|  |                  "names": [ | ||||||
|  | -                    "bus=pci,vendor=17cb,device=1107,subsystem-vendor=17cb,subsystem-device=3378,qmi-chip-id=2,qmi-board-id=255" | ||||||
|  | +                    "bus=pci,vendor=17cb,device=1107,subsystem-vendor=17cb,subsystem-device=3378,qmi-chip-id=2,qmi-board-id=255", | ||||||
|  | +                    "bus=pci,vendor=17cb,device=1107,subsystem-vendor=17cb,subsystem-device=1107,qmi-chip-id=2,qmi-board-id=255" | ||||||
|  |                  ], | ||||||
|  |                  "data": "bus=pci,vendor=17cb,device=1107,subsystem-vendor=17cb,subsystem-device=3378,qmi-chip-id=2,qmi-board-id=255.bin" | ||||||
|  |              }, | ||||||
							
								
								
									
										11
									
								
								pkgs/by-name/x1/x1e80100-linux-firmware/package.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								pkgs/by-name/x1/x1e80100-linux-firmware/package.nix
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | |||||||
|  | { ath-tools, linux-firmware }: | ||||||
|  | linux-firmware.overrideAttrs (final: { | ||||||
|  |   postInstall = '' | ||||||
|  |     mkdir temp | ||||||
|  |     cd temp || exit | ||||||
|  |     ${ath-tools.ath12k-tools}/bin/ath12k-bdencoder -e $out/lib/firmware/ath12k/WCN7850/hw2.0/board-2.bin | ||||||
|  |     patch -p1 < ${./firmware.patch} | ||||||
|  |     ${ath-tools.ath12k-tools}/bin/ath12k-bdencoder -c board-2.json | ||||||
|  |     cp board-2.bin $out/lib/firmware/ath12k/WCN7850/hw2.0/board-2.bin | ||||||
|  |   ''; | ||||||
|  | }) | ||||||
		Reference in New Issue
	
	Block a user