Compare commits
59 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
0188aff399
|
|||
|
34974204db
|
|||
|
1228969d80
|
|||
|
d462837a55
|
|||
| a93e936203 | |||
|
80330456f3
|
|||
| 6e29baf596 | |||
| 65e6519672 | |||
| 6948d2a668 | |||
|
7190efff26
|
|||
| 18b15f1539 | |||
| bfc37c6c70 | |||
| b6c43f6802 | |||
| af02b13cc1 | |||
| 7ee21ae6b0 | |||
| ca90ea78aa | |||
| e2ea0e7dfa | |||
| 636b729964 | |||
| f77541c4bf | |||
| 34dbec903f | |||
| e8a67e136d | |||
| b6dde58eca | |||
| 981ad4307b | |||
| 6443c3859f | |||
| f8aff912c1 | |||
| 8912f0bacd | |||
| 0a196c5012 | |||
| ddf51d782e | |||
| da12d408e9 | |||
| d8dc8d84a5 | |||
| ff4dd1a4eb | |||
| 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 |
@@ -0,0 +1,12 @@
|
|||||||
|
name: cache
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: nix
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- run: attic login pkgs https://attic.scug.io ${{ secrets.ATTIC_TOKEN }}
|
||||||
|
- run: nix-fast-build --skip-cached --systems "x86_64-linux aarch64-linux" --no-nom --attic-cache pkgs
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
name: check
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches-ignore:
|
||||||
|
- main
|
||||||
|
pull_request:
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: nix
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- run: nix-fast-build --skip-cached --systems "x86_64-linux aarch64-linux" --no-nom
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
/result
|
||||||
|
**/result
|
||||||
|
result
|
||||||
@@ -0,0 +1,192 @@
|
|||||||
|
{
|
||||||
|
"ath-tools": {
|
||||||
|
"cargoLock": null,
|
||||||
|
"date": "2026-03-03",
|
||||||
|
"extract": null,
|
||||||
|
"name": "ath-tools",
|
||||||
|
"passthru": null,
|
||||||
|
"pinned": false,
|
||||||
|
"src": {
|
||||||
|
"deepClone": false,
|
||||||
|
"fetchSubmodules": false,
|
||||||
|
"leaveDotGit": false,
|
||||||
|
"name": null,
|
||||||
|
"rev": "c8182015b0ec81da1d4c39841aca190deae77c2c",
|
||||||
|
"sha256": "sha256-Va845WLEyB+l7cpLIvYpvwOyMZuLKcb3Afqqs/cUSmI=",
|
||||||
|
"sparseCheckout": [],
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/qca/qca-swiss-army-knife.git"
|
||||||
|
},
|
||||||
|
"version": "c8182015b0ec81da1d4c39841aca190deae77c2c"
|
||||||
|
},
|
||||||
|
"base24-schemes": {
|
||||||
|
"cargoLock": null,
|
||||||
|
"date": "2026-04-12",
|
||||||
|
"extract": null,
|
||||||
|
"name": "base24-schemes",
|
||||||
|
"passthru": null,
|
||||||
|
"pinned": false,
|
||||||
|
"src": {
|
||||||
|
"deepClone": false,
|
||||||
|
"fetchSubmodules": false,
|
||||||
|
"leaveDotGit": false,
|
||||||
|
"name": null,
|
||||||
|
"rev": "3e228732e93c107e8b65b8be30c36e5b3c507d95",
|
||||||
|
"sha256": "sha256-G34G4hri8H2XNwF0e15MFj3sjO8fTOphNk0WjBwnVew=",
|
||||||
|
"sparseCheckout": [],
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/tinted-theming/schemes.git"
|
||||||
|
},
|
||||||
|
"version": "3e228732e93c107e8b65b8be30c36e5b3c507d95"
|
||||||
|
},
|
||||||
|
"claude-code-acp": {
|
||||||
|
"cargoLock": null,
|
||||||
|
"date": null,
|
||||||
|
"extract": null,
|
||||||
|
"name": "claude-code-acp",
|
||||||
|
"passthru": null,
|
||||||
|
"pinned": false,
|
||||||
|
"src": {
|
||||||
|
"deepClone": false,
|
||||||
|
"fetchSubmodules": false,
|
||||||
|
"leaveDotGit": false,
|
||||||
|
"name": null,
|
||||||
|
"owner": "zed-industries",
|
||||||
|
"repo": "claude-code-acp",
|
||||||
|
"rev": "v0.26.0",
|
||||||
|
"sha256": "sha256-2G8gjMCnk3W1I2+4sNsumL15ts9bLXAOMguCmwnzWSA=",
|
||||||
|
"sparseCheckout": [],
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"version": "v0.26.0"
|
||||||
|
},
|
||||||
|
"flightcore": {
|
||||||
|
"cargoLock": null,
|
||||||
|
"date": null,
|
||||||
|
"extract": null,
|
||||||
|
"name": "flightcore",
|
||||||
|
"passthru": null,
|
||||||
|
"pinned": false,
|
||||||
|
"src": {
|
||||||
|
"deepClone": false,
|
||||||
|
"fetchSubmodules": false,
|
||||||
|
"leaveDotGit": false,
|
||||||
|
"name": null,
|
||||||
|
"owner": "R2NorthstarTools",
|
||||||
|
"repo": "FlightCore",
|
||||||
|
"rev": "v3.2.0",
|
||||||
|
"sha256": "sha256-MFnW9cXFzqmdtC31r8cRcihV3NjGAC6+2/DnNVMheCI=",
|
||||||
|
"sparseCheckout": [],
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"version": "v3.2.0"
|
||||||
|
},
|
||||||
|
"neovide": {
|
||||||
|
"cargoLock": {
|
||||||
|
"Cargo.lock": [
|
||||||
|
"sha256-JBV939TEfG44w59iUJ3KgiCrQ9aCcjmPxu2uoBD_Ank=/Cargo.lock",
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"date": null,
|
||||||
|
"extract": null,
|
||||||
|
"name": "neovide",
|
||||||
|
"passthru": null,
|
||||||
|
"pinned": false,
|
||||||
|
"src": {
|
||||||
|
"deepClone": true,
|
||||||
|
"fetchSubmodules": true,
|
||||||
|
"leaveDotGit": false,
|
||||||
|
"name": null,
|
||||||
|
"rev": "nightly",
|
||||||
|
"sha256": "sha256-JBV939TEfG44w59iUJ3KgiCrQ9aCcjmPxu2uoBD/Ank=",
|
||||||
|
"sparseCheckout": [],
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/neovide/neovide.git"
|
||||||
|
},
|
||||||
|
"version": "nightly"
|
||||||
|
},
|
||||||
|
"qebspil": {
|
||||||
|
"cargoLock": null,
|
||||||
|
"date": "2025-10-25",
|
||||||
|
"extract": null,
|
||||||
|
"name": "qebspil",
|
||||||
|
"passthru": null,
|
||||||
|
"pinned": false,
|
||||||
|
"src": {
|
||||||
|
"deepClone": false,
|
||||||
|
"fetchSubmodules": true,
|
||||||
|
"leaveDotGit": false,
|
||||||
|
"name": null,
|
||||||
|
"rev": "8e4d9e676a3b3afe136cda9b953a2139ff1a32d0",
|
||||||
|
"sha256": "sha256-kWUXzeYWNxGgmjt/p9yozrWc5ouUs0XXBRfiFMlu+QQ=",
|
||||||
|
"sparseCheckout": [],
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/stephan-gh/qebspil.git"
|
||||||
|
},
|
||||||
|
"version": "8e4d9e676a3b3afe136cda9b953a2139ff1a32d0"
|
||||||
|
},
|
||||||
|
"radare2-ghidra": {
|
||||||
|
"cargoLock": null,
|
||||||
|
"date": null,
|
||||||
|
"extract": null,
|
||||||
|
"name": "radare2-ghidra",
|
||||||
|
"passthru": null,
|
||||||
|
"pinned": false,
|
||||||
|
"src": {
|
||||||
|
"deepClone": false,
|
||||||
|
"fetchSubmodules": false,
|
||||||
|
"leaveDotGit": false,
|
||||||
|
"name": null,
|
||||||
|
"owner": "radareorg",
|
||||||
|
"repo": "r2ghidra",
|
||||||
|
"rev": "6.1.2",
|
||||||
|
"sha256": "sha256-bGA7izBSvlwnD4BZXNucYS39BDdmo+49cY3o4LjIpYM=",
|
||||||
|
"sparseCheckout": [],
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"version": "6.1.2"
|
||||||
|
},
|
||||||
|
"radare2-mcp": {
|
||||||
|
"cargoLock": null,
|
||||||
|
"date": null,
|
||||||
|
"extract": null,
|
||||||
|
"name": "radare2-mcp",
|
||||||
|
"passthru": null,
|
||||||
|
"pinned": false,
|
||||||
|
"src": {
|
||||||
|
"deepClone": false,
|
||||||
|
"fetchSubmodules": false,
|
||||||
|
"leaveDotGit": false,
|
||||||
|
"name": null,
|
||||||
|
"owner": "radareorg",
|
||||||
|
"repo": "radare2-mcp",
|
||||||
|
"rev": "1.7.2",
|
||||||
|
"sha256": "sha256-ToSvRmgOyrmsFWjfwuDit5hLXYJQD7YKGoy2utkqUe0=",
|
||||||
|
"sparseCheckout": [],
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"version": "1.7.2"
|
||||||
|
},
|
||||||
|
"slbounce": {
|
||||||
|
"cargoLock": null,
|
||||||
|
"date": null,
|
||||||
|
"extract": null,
|
||||||
|
"name": "slbounce",
|
||||||
|
"passthru": null,
|
||||||
|
"pinned": false,
|
||||||
|
"src": {
|
||||||
|
"deepClone": false,
|
||||||
|
"fetchSubmodules": false,
|
||||||
|
"leaveDotGit": false,
|
||||||
|
"name": null,
|
||||||
|
"owner": "TravMurav",
|
||||||
|
"repo": "slbounce",
|
||||||
|
"rev": "v5",
|
||||||
|
"sha256": "sha256-w+0SKR0A/hcFU6iFEOgyG+vWwgAWF8h9D0/X7GSFm7w=",
|
||||||
|
"sparseCheckout": [],
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"version": "v5"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,123 @@
|
|||||||
|
# This file was generated by nvfetcher, please do not modify it manually.
|
||||||
|
{
|
||||||
|
fetchgit,
|
||||||
|
fetchurl,
|
||||||
|
fetchFromGitHub,
|
||||||
|
dockerTools,
|
||||||
|
}: {
|
||||||
|
ath-tools = {
|
||||||
|
pname = "ath-tools";
|
||||||
|
version = "c8182015b0ec81da1d4c39841aca190deae77c2c";
|
||||||
|
src = fetchgit {
|
||||||
|
url = "https://github.com/qca/qca-swiss-army-knife.git";
|
||||||
|
rev = "c8182015b0ec81da1d4c39841aca190deae77c2c";
|
||||||
|
fetchSubmodules = false;
|
||||||
|
deepClone = false;
|
||||||
|
leaveDotGit = false;
|
||||||
|
sparseCheckout = [];
|
||||||
|
sha256 = "sha256-Va845WLEyB+l7cpLIvYpvwOyMZuLKcb3Afqqs/cUSmI=";
|
||||||
|
};
|
||||||
|
date = "2026-03-03";
|
||||||
|
};
|
||||||
|
base24-schemes = {
|
||||||
|
pname = "base24-schemes";
|
||||||
|
version = "3e228732e93c107e8b65b8be30c36e5b3c507d95";
|
||||||
|
src = fetchgit {
|
||||||
|
url = "https://github.com/tinted-theming/schemes.git";
|
||||||
|
rev = "3e228732e93c107e8b65b8be30c36e5b3c507d95";
|
||||||
|
fetchSubmodules = false;
|
||||||
|
deepClone = false;
|
||||||
|
leaveDotGit = false;
|
||||||
|
sparseCheckout = [];
|
||||||
|
sha256 = "sha256-G34G4hri8H2XNwF0e15MFj3sjO8fTOphNk0WjBwnVew=";
|
||||||
|
};
|
||||||
|
date = "2026-04-12";
|
||||||
|
};
|
||||||
|
claude-code-acp = {
|
||||||
|
pname = "claude-code-acp";
|
||||||
|
version = "v0.26.0";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "zed-industries";
|
||||||
|
repo = "claude-code-acp";
|
||||||
|
rev = "v0.26.0";
|
||||||
|
fetchSubmodules = false;
|
||||||
|
sha256 = "sha256-2G8gjMCnk3W1I2+4sNsumL15ts9bLXAOMguCmwnzWSA=";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
flightcore = {
|
||||||
|
pname = "flightcore";
|
||||||
|
version = "v3.2.0";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "R2NorthstarTools";
|
||||||
|
repo = "FlightCore";
|
||||||
|
rev = "v3.2.0";
|
||||||
|
fetchSubmodules = false;
|
||||||
|
sha256 = "sha256-MFnW9cXFzqmdtC31r8cRcihV3NjGAC6+2/DnNVMheCI=";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
neovide = {
|
||||||
|
pname = "neovide";
|
||||||
|
version = "nightly";
|
||||||
|
src = fetchgit {
|
||||||
|
url = "https://github.com/neovide/neovide.git";
|
||||||
|
rev = "nightly";
|
||||||
|
fetchSubmodules = true;
|
||||||
|
deepClone = true;
|
||||||
|
leaveDotGit = false;
|
||||||
|
sparseCheckout = [];
|
||||||
|
sha256 = "sha256-JBV939TEfG44w59iUJ3KgiCrQ9aCcjmPxu2uoBD/Ank=";
|
||||||
|
};
|
||||||
|
cargoLock."Cargo.lock" = {
|
||||||
|
lockFile = ./. + "/sha256-JBV939TEfG44w59iUJ3KgiCrQ9aCcjmPxu2uoBD_Ank=/Cargo.lock";
|
||||||
|
outputHashes = {
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
qebspil = {
|
||||||
|
pname = "qebspil";
|
||||||
|
version = "8e4d9e676a3b3afe136cda9b953a2139ff1a32d0";
|
||||||
|
src = fetchgit {
|
||||||
|
url = "https://github.com/stephan-gh/qebspil.git";
|
||||||
|
rev = "8e4d9e676a3b3afe136cda9b953a2139ff1a32d0";
|
||||||
|
fetchSubmodules = true;
|
||||||
|
deepClone = false;
|
||||||
|
leaveDotGit = false;
|
||||||
|
sparseCheckout = [];
|
||||||
|
sha256 = "sha256-kWUXzeYWNxGgmjt/p9yozrWc5ouUs0XXBRfiFMlu+QQ=";
|
||||||
|
};
|
||||||
|
date = "2025-10-25";
|
||||||
|
};
|
||||||
|
radare2-ghidra = {
|
||||||
|
pname = "radare2-ghidra";
|
||||||
|
version = "6.1.2";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "radareorg";
|
||||||
|
repo = "r2ghidra";
|
||||||
|
rev = "6.1.2";
|
||||||
|
fetchSubmodules = false;
|
||||||
|
sha256 = "sha256-bGA7izBSvlwnD4BZXNucYS39BDdmo+49cY3o4LjIpYM=";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
radare2-mcp = {
|
||||||
|
pname = "radare2-mcp";
|
||||||
|
version = "1.7.2";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "radareorg";
|
||||||
|
repo = "radare2-mcp";
|
||||||
|
rev = "1.7.2";
|
||||||
|
fetchSubmodules = false;
|
||||||
|
sha256 = "sha256-ToSvRmgOyrmsFWjfwuDit5hLXYJQD7YKGoy2utkqUe0=";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
slbounce = {
|
||||||
|
pname = "slbounce";
|
||||||
|
version = "v5";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "TravMurav";
|
||||||
|
repo = "slbounce";
|
||||||
|
rev = "v5";
|
||||||
|
fetchSubmodules = false;
|
||||||
|
sha256 = "sha256-w+0SKR0A/hcFU6iFEOgyG+vWwgAWF8h9D0/X7GSFm7w=";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
Generated
+4
-4
@@ -20,16 +20,16 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1753694789,
|
"lastModified": 1764897201,
|
||||||
"narHash": "sha256-cKgvtz6fKuK1Xr5LQW/zOUiAC0oSQoA9nOISB0pJZqM=",
|
"narHash": "sha256-428X4sppU6k+tF2vxTy726E5BxbtoxoTRP+1FBbXqvM=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "dc9637876d0dcc8c9e5e22986b857632effeb727",
|
"rev": "9cfae7bb77c5058a4cfa8006d0caf82af8e980dc",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"ref": "nixos-unstable",
|
"ref": "nixos-unstable-small",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
description = "Scuggo Pkgs";
|
description = "Scuggo Pkgs";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable-small";
|
||||||
flake-utils.url = "github:numtide/flake-utils";
|
flake-utils.url = "github:numtide/flake-utils";
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -11,14 +11,9 @@
|
|||||||
self,
|
self,
|
||||||
nixpkgs,
|
nixpkgs,
|
||||||
flake-utils,
|
flake-utils,
|
||||||
}:
|
}@inputs:
|
||||||
|
(nixpkgs.lib.recursiveUpdate
|
||||||
{
|
(flake-utils.lib.eachSystem
|
||||||
overlays.default =
|
|
||||||
final: prev: (import "${nixpkgs}/pkgs/top-level/by-name-overlay.nix" ./pkgs/by-name) final prev;
|
|
||||||
}
|
|
||||||
//
|
|
||||||
flake-utils.lib.eachSystem
|
|
||||||
[
|
[
|
||||||
"x86_64-linux"
|
"x86_64-linux"
|
||||||
"aarch64-linux"
|
"aarch64-linux"
|
||||||
@@ -36,8 +31,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,15 +46,42 @@
|
|||||||
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;
|
overlays = final: prev: flatPackages;
|
||||||
inherit pkgs;
|
packages = flatPackages;
|
||||||
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;
|
||||||
|
devShells.default = pkgs.mkShellNoCC {
|
||||||
|
packages = [ pkgs.nvfetcher ];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
overlays = {
|
||||||
|
default =
|
||||||
|
final: prev: ((import "${nixpkgs}/pkgs/top-level/by-name-overlay.nix" ./pkgs/by-name) final prev);
|
||||||
|
};
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,39 @@
|
|||||||
|
[claude-code-acp]
|
||||||
|
src.github = "zed-industries/claude-code-acp"
|
||||||
|
fetch.github = "zed-industries/claude-code-acp"
|
||||||
|
|
||||||
|
[flightcore]
|
||||||
|
src.github = "R2NorthstarTools/FlightCore"
|
||||||
|
fetch.github = "R2NorthstarTools/FlightCore"
|
||||||
|
|
||||||
|
[radare2-mcp]
|
||||||
|
src.github = "radareorg/radare2-mcp"
|
||||||
|
fetch.github = "radareorg/radare2-mcp"
|
||||||
|
|
||||||
|
[radare2-ghidra]
|
||||||
|
src.github = "radareorg/r2ghidra"
|
||||||
|
fetch.github = "radareorg/r2ghidra"
|
||||||
|
|
||||||
|
[slbounce]
|
||||||
|
src.github = "TravMurav/slbounce"
|
||||||
|
fetch.github = "TravMurav/slbounce"
|
||||||
|
|
||||||
|
[base24-schemes]
|
||||||
|
src.git = "https://github.com/tinted-theming/schemes.git"
|
||||||
|
fetch.git = "https://github.com/tinted-theming/schemes.git"
|
||||||
|
|
||||||
|
[qebspil]
|
||||||
|
src.git = "https://github.com/stephan-gh/qebspil.git"
|
||||||
|
fetch.git = "https://github.com/stephan-gh/qebspil.git"
|
||||||
|
git.fetchSubmodules = true
|
||||||
|
|
||||||
|
[ath-tools]
|
||||||
|
src.git = "https://github.com/qca/qca-swiss-army-knife.git"
|
||||||
|
fetch.git = "https://github.com/qca/qca-swiss-army-knife.git"
|
||||||
|
|
||||||
|
[neovide]
|
||||||
|
src.manual = "nightly"
|
||||||
|
fetch.git = "https://github.com/neovide/neovide.git"
|
||||||
|
git.fetchSubmodules = true
|
||||||
|
git.deepClone = true
|
||||||
|
cargo_lock = ["Cargo.lock"]
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
{ aria2 }:
|
||||||
|
aria2.overrideAttrs (oldAttrs: rec {
|
||||||
|
patches = oldAttrs.patches or [ ] ++ [ ./unlimited.patch ];
|
||||||
|
})
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
--- a/src/OptionHandlerFactory.cc
|
||||||
|
+++ b/src/OptionHandlerFactory.cc
|
||||||
|
@@ -440,7 +440,7 @@ std::vector<OptionHandler*> OptionHandlerFactory::createOptionHandlers()
|
||||||
|
{
|
||||||
|
OptionHandler* op(new NumberOptionHandler(PREF_MAX_CONNECTION_PER_SERVER,
|
||||||
|
TEXT_MAX_CONNECTION_PER_SERVER,
|
||||||
|
- "1", 1, 16, 'x'));
|
||||||
|
+ "1", 1, -1, 'x'));
|
||||||
|
op->addTag(TAG_BASIC);
|
||||||
|
op->addTag(TAG_FTP);
|
||||||
|
op->addTag(TAG_HTTP);
|
||||||
+3
-1
@@ -4,8 +4,10 @@ python3.pkgs.buildPythonApplication rec {
|
|||||||
name = "ath12k-tools";
|
name = "ath12k-tools";
|
||||||
pyproject = false;
|
pyproject = false;
|
||||||
inherit src;
|
inherit src;
|
||||||
sourceRoot = "source/tools/scripts/ath12k";
|
sourceRoot = "${src.name}/tools/scripts/ath12k";
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
|
ls -la
|
||||||
|
pwd
|
||||||
install -Dm755 "ath12k-bdencoder" "$out/bin/ath12k-bdencoder"
|
install -Dm755 "ath12k-bdencoder" "$out/bin/ath12k-bdencoder"
|
||||||
install -Dm755 "ath12k-check" "$out/bin/ath12k-check"
|
install -Dm755 "ath12k-check" "$out/bin/ath12k-check"
|
||||||
install -Dm755 "ath12k-fw-repo" "$out/bin/ath12k-fw-repo"
|
install -Dm755 "ath12k-fw-repo" "$out/bin/ath12k-fw-repo"
|
||||||
@@ -2,21 +2,12 @@
|
|||||||
lib,
|
lib,
|
||||||
newScope,
|
newScope,
|
||||||
callPackage,
|
callPackage,
|
||||||
fetchFromGitHub,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
src = fetchFromGitHub {
|
sources = callPackage ../../../../_sources/generated.nix { };
|
||||||
owner = "qca";
|
inherit (sources.ath-tools) src;
|
||||||
repo = "qca-swiss-army-knife";
|
|
||||||
rev = "7c191e5530d32391105653b276ab587d2af9e02a";
|
|
||||||
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; };
|
|
||||||
# })
|
|
||||||
|
|||||||
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
callPackage,
|
||||||
|
stdenv,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
sources = callPackage ../../../../_sources/generated.nix { };
|
||||||
|
in
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
|
pname = "base24-schemes";
|
||||||
|
version = "unstable-${sources.base24-schemes.date}";
|
||||||
|
|
||||||
|
inherit (sources.base24-schemes) src;
|
||||||
|
|
||||||
|
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;
|
||||||
|
};
|
||||||
|
})
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,73 @@
|
|||||||
|
{
|
||||||
|
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 = {
|
||||||
|
platforms = ["x86_64-linux"];
|
||||||
|
description = "FlightCore A Northstar installer, updater, and mod-manager";
|
||||||
|
};
|
||||||
|
})
|
||||||
+122
@@ -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")))
|
||||||
@@ -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.
|
||||||
@@ -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
|
||||||
|
'';
|
||||||
|
}
|
||||||
@@ -0,0 +1,824 @@
|
|||||||
|
{
|
||||||
|
"ungoogled-chromium": {
|
||||||
|
"version": "146.0.7680.80",
|
||||||
|
"deps": {
|
||||||
|
"depot_tools": {
|
||||||
|
"rev": "42786f6e46c25c30dd58f69283ab6fcd0c959f58",
|
||||||
|
"hash": "sha256-wI3L6w3G9QCWzvSSUXeLJFHZ+7iv01hs+ig12EXJFHk="
|
||||||
|
},
|
||||||
|
"gn": {
|
||||||
|
"version": "0-unstable-2026-02-05",
|
||||||
|
"rev": "304bbef6c7e9a86630c12986b99c8654eb7fe648",
|
||||||
|
"hash": "sha256-wFCuu4GR0N7QZCwT8UAhqH5moicYQjZ4ZLI58AM4pJ0="
|
||||||
|
},
|
||||||
|
"ungoogled-patches": {
|
||||||
|
"rev": "0.10.5",
|
||||||
|
"hash": "sha256-V4DmFFLpZNiRRn0GQA0VtJ+IvoRFPc33UP6IVWS9m4A="
|
||||||
|
},
|
||||||
|
"npmHash": "sha256-ByB1Ea5tduIJZXyydeBWsoS8OPABOgwHe+dNXRssdvc="
|
||||||
|
},
|
||||||
|
"DEPS": {
|
||||||
|
"src": {
|
||||||
|
"url": "https://chromium.googlesource.com/chromium/src.git",
|
||||||
|
"rev": "f08938029c887ea624da7a1717059788ed95034d",
|
||||||
|
"hash": "sha256-PCQeTdc6Fl74TLyvxjli4scIUIm0GgZ3e9wbC18Tclw=",
|
||||||
|
"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": "c2725e0622e1a86d55f14514f2177a39efea4a0e",
|
||||||
|
"hash": "sha256-f+BbQ6xIubloSzx/MhPSZ8ymCskmS+9+epDGtPjZqXc="
|
||||||
|
},
|
||||||
|
"src/third_party/compiler-rt/src": {
|
||||||
|
"url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/compiler-rt.git",
|
||||||
|
"rev": "86587046105639b66fe40059bf8fdb8a33522f97",
|
||||||
|
"hash": "sha256-Ah/ErOAoKo49VYXHg7MRRdwpjf1azOLp/k5RSf6LJbI="
|
||||||
|
},
|
||||||
|
"src/third_party/libc++/src": {
|
||||||
|
"url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libcxx.git",
|
||||||
|
"rev": "7ab65651aed6802d2599dcb7a73b1f82d5179d05",
|
||||||
|
"hash": "sha256-7O/X2JW8ghkPTjmFZmT9cgG3Ui5zk3gUb436KlPww34="
|
||||||
|
},
|
||||||
|
"src/third_party/libc++abi/src": {
|
||||||
|
"url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libcxxabi.git",
|
||||||
|
"rev": "8f11bb1d4438d0239d0dfc1bd9456a9f31629dda",
|
||||||
|
"hash": "sha256-L5CUvhpOLS+NBNGssCv0pY9rsDFuAI0LlPjXQRfy62A="
|
||||||
|
},
|
||||||
|
"src/third_party/libunwind/src": {
|
||||||
|
"url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libunwind.git",
|
||||||
|
"rev": "ba19d93d6d4f467fba11ff20fe2fc7c056f79345",
|
||||||
|
"hash": "sha256-iRfpzVN+QEpN6okwVs5oEtZqIJYzFGxsUO/IJY1c/W8="
|
||||||
|
},
|
||||||
|
"src/third_party/llvm-libc/src": {
|
||||||
|
"url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libc.git",
|
||||||
|
"rev": "5705ee75b1fafbf96ff11534a9976f10d6c47dfd",
|
||||||
|
"hash": "sha256-f4Xfk3SN+miTE6Fc3hqe8dlxBPblOPghTLYdnUmPDus="
|
||||||
|
},
|
||||||
|
"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": "5522b25f3da74caafdcd3f1bcf33380f9f023a1c",
|
||||||
|
"hash": "sha256-NmU/u3gWFkjVhZeEaESGn013mnsPmIDUK79lsVc/JzE="
|
||||||
|
},
|
||||||
|
"src/media/cdm/api": {
|
||||||
|
"url": "https://chromium.googlesource.com/chromium/cdm.git",
|
||||||
|
"rev": "9920660ea0162f88c44a648de177e6f8cb976d07",
|
||||||
|
"hash": "sha256-rC/aV3vsFzXQ8BiOIK+OTXxTsgTLEEqC19KDAot1PTs="
|
||||||
|
},
|
||||||
|
"src/net/third_party/quiche/src": {
|
||||||
|
"url": "https://quiche.googlesource.com/quiche.git",
|
||||||
|
"rev": "24430cb4103438f3cd1680f8f89d7c9e4288d5ca",
|
||||||
|
"hash": "sha256-QEmVSKg1qbJ2aKrCq3AOgDQ3yMPx1dcvSJcGEjAffDg="
|
||||||
|
},
|
||||||
|
"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": "1d3190bf5633327395d694d621258978d989dffd",
|
||||||
|
"hash": "sha256-QVtTxBBox8fiqTj0gjqvYx6HoBSlvuWIe5ki4iCQl08="
|
||||||
|
},
|
||||||
|
"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": "1698899cb078aacfb11d6b8eb5c4753d86bd2661",
|
||||||
|
"hash": "sha256-oifCX+zx63p5eB7nnfE+FM895Ino3gmS39N5twBIAKg="
|
||||||
|
},
|
||||||
|
"src/third_party/anonymous_tokens/src": {
|
||||||
|
"url": "https://chromium.googlesource.com/external/github.com/google/anonymous-tokens.git",
|
||||||
|
"rev": "fdff40da0398d2c229308aed169345f6ff1a150f",
|
||||||
|
"hash": "sha256-eJP45x3vXOG1rWvRl/0H0c2IV7nQ/9dYjAzJGHHszdc="
|
||||||
|
},
|
||||||
|
"src/third_party/readability/src": {
|
||||||
|
"url": "https://chromium.googlesource.com/external/github.com/mozilla/readability.git",
|
||||||
|
"rev": "d7949dc47dd9ed9ee1d3b34ffdcf3bce28cde435",
|
||||||
|
"hash": "sha256-lFsHXk4kEkzIbHgJiLTgeiKqiGOErzUwADo8WSZlnec="
|
||||||
|
},
|
||||||
|
"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": "b546257f770768b2c88258c533da38b91a06f737",
|
||||||
|
"hash": "sha256-E3da/LJ8HNy1osExmupovqnL8JHgVNzPUCG5F8TJKXQ="
|
||||||
|
},
|
||||||
|
"src/third_party/dawn": {
|
||||||
|
"url": "https://dawn.googlesource.com/dawn.git",
|
||||||
|
"rev": "c46c81b25577c40de6e7e510743ae0454e0c8351",
|
||||||
|
"hash": "sha256-Duv3kNulPtVxCLPa3bFIev64O9Y4ObJP/IZz31oPJ0E="
|
||||||
|
},
|
||||||
|
"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": "907ddace203afad066242f3c1b1b59e86dbb34ee",
|
||||||
|
"hash": "sha256-0bIw1sVkVqNinAqt9u1Zeyltrnd02TWSRTOT4TcT3OY="
|
||||||
|
},
|
||||||
|
"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": "f1db17e4ab8b6a5a7d2709a67927d8a769a741a4",
|
||||||
|
"hash": "sha256-5Fdl72VNfNnofPMG/ZWO0MJ2N7Dmcn+6sOLNqw5+IF4="
|
||||||
|
},
|
||||||
|
"src/third_party/dawn/third_party/webgpu-headers/src": {
|
||||||
|
"url": "https://chromium.googlesource.com/external/github.com/webgpu-native/webgpu-headers",
|
||||||
|
"rev": "0bfcdc4f487023d85e33597de0a94fc523e30fca",
|
||||||
|
"hash": "sha256-lvvZx8CrkRHdHINcqscQOPTaPZ7ORgr2wgr/OlTQBTE="
|
||||||
|
},
|
||||||
|
"src/third_party/highway/src": {
|
||||||
|
"url": "https://chromium.googlesource.com/external/github.com/google/highway.git",
|
||||||
|
"rev": "84379d1c73de9681b54fbe1c035a23c7bd5d272d",
|
||||||
|
"hash": "sha256-HNrlqtAs1vKCoSJ5TASs34XhzjEbLW+ISco1NQON+BI="
|
||||||
|
},
|
||||||
|
"src/third_party/google_benchmark/src": {
|
||||||
|
"url": "https://chromium.googlesource.com/external/github.com/google/benchmark.git",
|
||||||
|
"rev": "188e8278990a9069ffc84441cb5a024fd0bede37",
|
||||||
|
"hash": "sha256-GfqY2d+Nd7ovNrXxzTRm/AYWj7GuxIO6FawzUEzwOVA="
|
||||||
|
},
|
||||||
|
"src/third_party/libpfm4/src": {
|
||||||
|
"url": "https://chromium.googlesource.com/external/git.code.sf.net/p/perfmon2/libpfm4.git",
|
||||||
|
"rev": "964baf9d35d5f88d8422f96d8a82c672042e7064",
|
||||||
|
"hash": "sha256-awpZ22rovLZWQkX/qog93vL4u2gJ+F3w5IGFNlZ0heQ="
|
||||||
|
},
|
||||||
|
"src/third_party/boringssl/src": {
|
||||||
|
"url": "https://boringssl.googlesource.com/boringssl.git",
|
||||||
|
"rev": "2a7ca5404e136341b63a2c7608bd1f6924f09294",
|
||||||
|
"hash": "sha256-WglRBVPuUMskW0+bwV0sJiuHmXeWy1Nis0ln3KJlyKQ="
|
||||||
|
},
|
||||||
|
"src/third_party/breakpad/breakpad": {
|
||||||
|
"url": "https://chromium.googlesource.com/breakpad/breakpad.git",
|
||||||
|
"rev": "79099fdf668ae097c9eca7052fd5c4c5de6c9098",
|
||||||
|
"hash": "sha256-dtuBGcYwwaqSKiW7ASFveAeJqcdnFLeU97ip8D786/Q="
|
||||||
|
},
|
||||||
|
"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": "a476f554f8865b7d162ec9f1ad8aae1eab38e048",
|
||||||
|
"hash": "sha256-fdmcMUvK8h8q109tcwlOAD31lchNyTxkATfh1uRVDEA="
|
||||||
|
},
|
||||||
|
"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": "84818a41e074779dbb00521a4731d3e14160ff15",
|
||||||
|
"hash": "sha256-eXrfeFK0ADKAYoy/vESv7nQnH0oGpeZKlX8XEqPQspo="
|
||||||
|
},
|
||||||
|
"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": "9cd08527738f3684f5f74053f4b6db6cb1a3b165",
|
||||||
|
"hash": "sha256-nmwwvdgVGzg4tiYPHYAPCdU/49Cw61+7oythtpuejHM="
|
||||||
|
},
|
||||||
|
"src/third_party/crossbench": {
|
||||||
|
"url": "https://chromium.googlesource.com/crossbench.git",
|
||||||
|
"rev": "274eec196c5343b2059a29558396a8a54b3f0695",
|
||||||
|
"hash": "sha256-fwD0OMubN3MY1xAYrIfOSq75Os8Ct6+Ev6ld8j/tkZg="
|
||||||
|
},
|
||||||
|
"src/third_party/crossbench-web-tests": {
|
||||||
|
"url": "https://chromium.googlesource.com/chromium/web-tests.git",
|
||||||
|
"rev": "d2424bbd8125374af35f0b9fe9f70ec2e1277548",
|
||||||
|
"hash": "sha256-mowr2K6jMn5tOR1McTIYHPmL7Mhn0k4SXE+RVjTn/XU="
|
||||||
|
},
|
||||||
|
"src/third_party/depot_tools": {
|
||||||
|
"url": "https://chromium.googlesource.com/chromium/tools/depot_tools.git",
|
||||||
|
"rev": "42786f6e46c25c30dd58f69283ab6fcd0c959f58",
|
||||||
|
"hash": "sha256-wI3L6w3G9QCWzvSSUXeLJFHZ+7iv01hs+ig12EXJFHk="
|
||||||
|
},
|
||||||
|
"src/third_party/devtools-frontend/src": {
|
||||||
|
"url": "https://chromium.googlesource.com/devtools/devtools-frontend",
|
||||||
|
"rev": "890a74027b0fdeaee6bbf0a0b9b108bbda7af5b9",
|
||||||
|
"hash": "sha256-k4k7r5wcgl6t13TsDTPCrYhgG44To+yvmvNsx0FPWZE="
|
||||||
|
},
|
||||||
|
"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": "beeeef91cf6fef89a4d4ba5e95d47ca64ccb3a44",
|
||||||
|
"hash": "sha256-j6swuGgYGfiFcK3iqd4EKTeU92rZHKTbF5T1fcak/ko="
|
||||||
|
},
|
||||||
|
"src/third_party/eigen3/src": {
|
||||||
|
"url": "https://chromium.googlesource.com/external/gitlab.com/libeigen/eigen.git",
|
||||||
|
"rev": "afb43805349cf1cbec0083d94256bb8f72cbc53b",
|
||||||
|
"hash": "sha256-GpuSoq887Z1qGKsc4+Vz8X+Sx40P6UnWhaQgrmigkdQ="
|
||||||
|
},
|
||||||
|
"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": "e51058dfe7888094ecc09cda38bfceffd4d4664b",
|
||||||
|
"hash": "sha256-5kuTp0TXOUCQQ7XcnwBRsQRxugl869hZhx8MbxDLwYk="
|
||||||
|
},
|
||||||
|
"src/third_party/ffmpeg": {
|
||||||
|
"url": "https://chromium.googlesource.com/chromium/third_party/ffmpeg.git",
|
||||||
|
"rev": "ae11d2ba5c835b822a61d6a99eeb853ca30d41d8",
|
||||||
|
"hash": "sha256-j8d6N+qmBHvWiQNaXtdYRaRkEYVMAMU7J2CZVc+0hG0="
|
||||||
|
},
|
||||||
|
"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": "a86afae9399bbe631d1ea0783f8816e780e236cc",
|
||||||
|
"hash": "sha256-gV1hn1iHI7knFEXy3Oii97mLRZYJUBiBlTh6/sqOoXg="
|
||||||
|
},
|
||||||
|
"src/third_party/fontconfig/src": {
|
||||||
|
"url": "https://chromium.googlesource.com/external/fontconfig.git",
|
||||||
|
"rev": "d62c2ab268d1679335daa8fb0ea6970f35224a76",
|
||||||
|
"hash": "sha256-Oo4ewK86dbEkO5EXyGWvdmsPHa8Wk1BHQah784vIem0="
|
||||||
|
},
|
||||||
|
"src/third_party/fp16/src": {
|
||||||
|
"url": "https://chromium.googlesource.com/external/github.com/Maratyszcza/FP16.git",
|
||||||
|
"rev": "3d2de1816307bac63c16a297e8c4dc501b4076df",
|
||||||
|
"hash": "sha256-CR7h1d9RFE86l6btk4N8vbQxy0KQDxSMvckbiO87JEg="
|
||||||
|
},
|
||||||
|
"src/third_party/gemmlowp/src": {
|
||||||
|
"url": "https://chromium.googlesource.com/external/github.com/google/gemmlowp.git",
|
||||||
|
"rev": "16e8662c34917be0065110bfcd9cc27d30f52fdf",
|
||||||
|
"hash": "sha256-e6AeRhZioIiTG5R+IA9g2GBqI4o74wijJYmqINLOtQs="
|
||||||
|
},
|
||||||
|
"src/third_party/freetype/src": {
|
||||||
|
"url": "https://chromium.googlesource.com/chromium/src/third_party/freetype2.git",
|
||||||
|
"rev": "e3a0652b6d706ee1ce77d4dda606b6597dd8b5c4",
|
||||||
|
"hash": "sha256-CorCyTiS2fumIF0jhqQgw7VjGkjGXNVD8efdmfZ2wUo="
|
||||||
|
},
|
||||||
|
"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": "fa2908bf16d2ccd6623f4d575455fea72a1a722b",
|
||||||
|
"hash": "sha256-pXAQYEotsqZmfaJSQFaJmZAQVzUiNrHw52z0vmbxQRQ="
|
||||||
|
},
|
||||||
|
"src/third_party/ink/src": {
|
||||||
|
"url": "https://chromium.googlesource.com/external/github.com/google/ink.git",
|
||||||
|
"rev": "9d5367423281a8fcf5bc1c418e20477a992b270a",
|
||||||
|
"hash": "sha256-uDaK/cDA52Cn+ioPW2bXAJze1eW8TK3xF7+bl/Ylh6Y="
|
||||||
|
},
|
||||||
|
"src/third_party/ink_stroke_modeler/src": {
|
||||||
|
"url": "https://chromium.googlesource.com/external/github.com/google/ink-stroke-modeler.git",
|
||||||
|
"rev": "278aacc769cd42e09e4d0cd4ac4dcff87fe32c20",
|
||||||
|
"hash": "sha256-z5heZU5X6CITxOTu92GwZjmsi30xcV93CUltCYnTL0o="
|
||||||
|
},
|
||||||
|
"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": "96c00a6c99ac382f3f3a8f376bc7a70890d1adaa",
|
||||||
|
"hash": "sha256-+ouwII+i5CbWoJ3NAxQPmczofzkPwtZTtjIPaXyyXt8="
|
||||||
|
},
|
||||||
|
"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": "40f58ed32ff39071c3f2a51056dbc49a070af0dc",
|
||||||
|
"hash": "sha256-gisU0p0HDL7Po/ZXIIZVOTnxnOuVvSE/FYo9DaEUFfo="
|
||||||
|
},
|
||||||
|
"src/third_party/googletest/src": {
|
||||||
|
"url": "https://chromium.googlesource.com/external/github.com/google/googletest.git",
|
||||||
|
"rev": "4fe3307fb2d9f86d19777c7eb0e4809e9694dde7",
|
||||||
|
"hash": "sha256-gJhv3DQQSP5BQ6GmDobq42/Gkx4AbOg/ZS80bM0WpEw="
|
||||||
|
},
|
||||||
|
"src/third_party/hunspell_dictionaries": {
|
||||||
|
"url": "https://chromium.googlesource.com/chromium/deps/hunspell_dictionaries.git",
|
||||||
|
"rev": "cccf64a8acc951afe3f47fee023908e55699bc58",
|
||||||
|
"hash": "sha256-mYDPXa64IOKLMNiBiMqDrQMR7gDPI+vdyVc+M7E+ddc="
|
||||||
|
},
|
||||||
|
"src/third_party/icu": {
|
||||||
|
"url": "https://chromium.googlesource.com/chromium/deps/icu.git",
|
||||||
|
"rev": "a86a32e67b8d1384b33f8fa48c83a6079b86f8cd",
|
||||||
|
"hash": "sha256-zFxeAY6lEFRGNbCOOJij0CFjp3512WkyaN1Ld0+WADs="
|
||||||
|
},
|
||||||
|
"src/third_party/nlohmann_json/src": {
|
||||||
|
"url": "https://chromium.googlesource.com/external/github.com/nlohmann/json.git",
|
||||||
|
"rev": "75d9166a68355d2cd5a98bfd1a75a3a3dae8f071",
|
||||||
|
"hash": "sha256-t+ygFLws+E4D0Avia7swt4wruaDFaAT6shN6tl92q8k="
|
||||||
|
},
|
||||||
|
"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": "54dfec04d5c9ad1f22b08002ab6a5e2d0de77671",
|
||||||
|
"hash": "sha256-CqJJ1hj9nQkGONB+5tJgafg1xvrPgTuE3tM8RjO2RY0="
|
||||||
|
},
|
||||||
|
"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": "e20690c8d5178bb282641d5eb06ef0298ff4cbc5",
|
||||||
|
"hash": "sha256-rX7LQNUgk5ZljUrayD1a/SUrBrvpomW0Cs0KBw3lYu4="
|
||||||
|
},
|
||||||
|
"src/third_party/libaom/source/libaom": {
|
||||||
|
"url": "https://aomedia.googlesource.com/aom.git",
|
||||||
|
"rev": "4018d3b63456eb657475e66c352bfa86f321e0f5",
|
||||||
|
"hash": "sha256-RuCmzPIR6hW8znjQH4kQqSJmIIJWtMkUQjYEVn3B9AE="
|
||||||
|
},
|
||||||
|
"src/third_party/crabbyavif/src": {
|
||||||
|
"url": "https://chromium.googlesource.com/external/github.com/webmproject/CrabbyAvif.git",
|
||||||
|
"rev": "908b36ca6195b3db6d8112e39405430b724377de",
|
||||||
|
"hash": "sha256-1GloE33jDgerd4XAo/ZIIhRzEGZ9AgLsN+ruNTMusdI="
|
||||||
|
},
|
||||||
|
"src/third_party/nearby/src": {
|
||||||
|
"url": "https://chromium.googlesource.com/external/github.com/google/nearby-connections.git",
|
||||||
|
"rev": "0bad8b0c9877f92eeeb550654f1ea51a71a085e4",
|
||||||
|
"hash": "sha256-Mwuo2RlKweqZPkDw4OcJDD+QNRiXVysSyzLdjHsG1mA="
|
||||||
|
},
|
||||||
|
"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": "ad5e39771904b63750ae410fb00b71c9d2992b03",
|
||||||
|
"hash": "sha256-y3JKkY2tQ9rC9piFlWaUVmsSOfeWkyKFx2Qv9Lo6nrI="
|
||||||
|
},
|
||||||
|
"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": "e2e2538900938c5d6819e9456bf33d48f806c96c",
|
||||||
|
"hash": "sha256-oF8ELo2qmkgaTpNzBLaC3A6gyf2iFv+FQNPGwdGqzVU="
|
||||||
|
},
|
||||||
|
"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": "369990d9660a387f618d0eedc341eb285016243b",
|
||||||
|
"hash": "sha256-kOaTjBeo4IsfWEk/JBTNId5ikrnpoc9DEjIl7DUd2yE="
|
||||||
|
},
|
||||||
|
"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": "4be5f77f672a3a9f1bbf3c935fb0ea8b3f86ce61",
|
||||||
|
"hash": "sha256-GzLVt6RIN+FgOpcK61ya5lvdIIhQRciAb/ISIirWogY="
|
||||||
|
},
|
||||||
|
"src/third_party/libjpeg_turbo": {
|
||||||
|
"url": "https://chromium.googlesource.com/chromium/deps/libjpeg_turbo.git",
|
||||||
|
"rev": "6bb85251a8382b5e07f635a981ac685cc5ab5053",
|
||||||
|
"hash": "sha256-FeSS7D3NietL34KgpaDFenBf/GcvapGSpkiKwgIOOHs="
|
||||||
|
},
|
||||||
|
"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": "d29ac04dc81e6b072c091c5b1342a282765ea250",
|
||||||
|
"hash": "sha256-aI7Exie3AmTy8R/Ua5lua0lCwMO1k4wMS6cxulU6iD8="
|
||||||
|
},
|
||||||
|
"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": "e83e25f791932202256479052f18bdd03a091147",
|
||||||
|
"hash": "sha256-/FtYzbcOgOlaaWCoJfYns5oye7DoRZx1/xew3lN7tAM="
|
||||||
|
},
|
||||||
|
"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": "c00d83f6642e7838a12bb03bca94237f03cc2e00",
|
||||||
|
"hash": "sha256-a7F97BEnwpdx9W8OsVnz+NfIYW+J1XVDSi38KsIZIfI="
|
||||||
|
},
|
||||||
|
"src/third_party/libyuv": {
|
||||||
|
"url": "https://chromium.googlesource.com/libyuv/libyuv.git",
|
||||||
|
"rev": "917276084a49be726c90292ff0a6b0a3d571a6af",
|
||||||
|
"hash": "sha256-2lnobd22L9u+h6JGWJoWT/0gjhI5JImDsEjn+RRYzJg="
|
||||||
|
},
|
||||||
|
"src/third_party/lss": {
|
||||||
|
"url": "https://chromium.googlesource.com/linux-syscall-support.git",
|
||||||
|
"rev": "29164a80da4d41134950d76d55199ea33fbb9613",
|
||||||
|
"hash": "sha256-89CdA7vBYudbko0nAIyHcpHMXqFZHC05kwRIUmeEWGo="
|
||||||
|
},
|
||||||
|
"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": "af5eeeb054bebadfbb79c7bcd100a95e2ad4525f",
|
||||||
|
"hash": "sha256-vH3OUzfLZbaPY4DMAvSW0jKYRJmOa7aE8EfIJtZ1/Xs="
|
||||||
|
},
|
||||||
|
"src/third_party/neon_2_sse/src": {
|
||||||
|
"url": "https://chromium.googlesource.com/external/github.com/intel/ARM_NEON_2_x86_SSE.git",
|
||||||
|
"rev": "662a85912e8f86ec808f9b15ce77f8715ba53316",
|
||||||
|
"hash": "sha256-4OzG4wIPwnKbFD9LG+stxHt5O4qB85ZIXVeSrNqDAyM="
|
||||||
|
},
|
||||||
|
"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": "67cac118873cb41fd19e3fc8b1b4010b3eecf683",
|
||||||
|
"hash": "sha256-X2U179s+ZFUeazygFcCyu0/kskz0gORENXG/9NleCfQ="
|
||||||
|
},
|
||||||
|
"src/third_party/openscreen/src/buildtools": {
|
||||||
|
"url": "https://chromium.googlesource.com/chromium/src/buildtools",
|
||||||
|
"rev": "eca5f0685c48ed59ff06077cb18cee00934249dd",
|
||||||
|
"hash": "sha256-sWkgWY2rXVQK83WBVaZxCupQsS/8BtlgagNBQywScPE="
|
||||||
|
},
|
||||||
|
"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": "67cf48602b0c8aaa9807cd185212ee078eb30b21",
|
||||||
|
"hash": "sha256-jMoYwf63C0IHx/QcOT+LKCCYN3dJVUhC5COukkhwqx0="
|
||||||
|
},
|
||||||
|
"src/third_party/perfetto": {
|
||||||
|
"url": "https://chromium.googlesource.com/external/github.com/google/perfetto.git",
|
||||||
|
"rev": "436a00fb3edbec1ca5a12ea678a7ee81cf2b6f31",
|
||||||
|
"hash": "sha256-F3MmIOhwDGJnruz8nZNzbyElDZcpz6wEzLmoyehnvsU="
|
||||||
|
},
|
||||||
|
"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": "9003ee6c137cea3b94161bd5c614fb43be523ee1",
|
||||||
|
"hash": "sha256-Es9QNblzo5b+x4K7myQJwIiUKvqyP16QExWPhGqqDO8="
|
||||||
|
},
|
||||||
|
"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": "352288a06d2c83ae68b5a402b2219f4678be9f39",
|
||||||
|
"hash": "sha256-JmK7nmHg/BfXvFNG2oMpOV83EF+LwVLdwL6qX5FGREs="
|
||||||
|
},
|
||||||
|
"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": "972a15cedd008d846f1a39b2e88ce48d7f166cbd",
|
||||||
|
"hash": "sha256-oEU+dz8ax1S36+f9OysjB0GnQj8mjZx1VsZ/UgckdDI="
|
||||||
|
},
|
||||||
|
"src/third_party/ruy/src": {
|
||||||
|
"url": "https://chromium.googlesource.com/external/github.com/google/ruy.git",
|
||||||
|
"rev": "de9b160a51ab3a06ce8505b96f7548fa09837a10",
|
||||||
|
"hash": "sha256-qa9x2n+2R4C9DhMY3ued4IWWY3lnE03/dZ6wYjeQsQk="
|
||||||
|
},
|
||||||
|
"src/third_party/search_engines_data/resources": {
|
||||||
|
"url": "https://chromium.googlesource.com/external/search_engines_data.git",
|
||||||
|
"rev": "9be56ed146f8334c39cd70ab7434fdf726a4f4a4",
|
||||||
|
"hash": "sha256-PFALT2hhIUrDB1YS2tMq29z1xG9aXLZzJnGOk6RthxM="
|
||||||
|
},
|
||||||
|
"src/third_party/skia": {
|
||||||
|
"url": "https://skia.googlesource.com/skia.git",
|
||||||
|
"rev": "248acd90d9a35ac46b2ec30201ae50f301b8a173",
|
||||||
|
"hash": "sha256-zOL5j9X72ZvYmS8MzQ+pqSkT8AWBz2IwmaH7I3LN1IE="
|
||||||
|
},
|
||||||
|
"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": "b7b7fd22e5f28079b92412f47f6da4df43e4cd37",
|
||||||
|
"hash": "sha256-ARFgIJvRzKWin1DJBr7xoeWCuLjuTEu/U0Fqbq8/ono="
|
||||||
|
},
|
||||||
|
"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": "01e030d23d3b904d98cbf908da74d63b3c186949",
|
||||||
|
"hash": "sha256-pIhOSb9eLzel5oDPCpxCvI2XJ2jGLdLURCRkd1BbMkk="
|
||||||
|
},
|
||||||
|
"src/third_party/litert/src": {
|
||||||
|
"url": "https://chromium.googlesource.com/external/github.com/google-ai-edge/LiteRT.git",
|
||||||
|
"rev": "320c13c17b995e7ccd7b8d6560db255d2f994199",
|
||||||
|
"hash": "sha256-pttQPrsptpnLmycmburH3Zh4pvIFgRDudZa9qLC3vjc="
|
||||||
|
},
|
||||||
|
"src/third_party/vulkan-deps": {
|
||||||
|
"url": "https://chromium.googlesource.com/vulkan-deps",
|
||||||
|
"rev": "2cb91a73a9fb82fb967b9432286e7882d791ae91",
|
||||||
|
"hash": "sha256-duQjSjwS8T6q+l5VEr8MT+LEQNJPROOhBt93myD+3II="
|
||||||
|
},
|
||||||
|
"src/third_party/glslang/src": {
|
||||||
|
"url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang",
|
||||||
|
"rev": "e9c2cb495285706c6980932483e7fa9566107ac1",
|
||||||
|
"hash": "sha256-8sMsiLwOoEdgUsxwyZ6AoT7TAeC2/oApsQg8no1iNmQ="
|
||||||
|
},
|
||||||
|
"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": "f31ca173eff866369e54d35e53375fadbabd58f4",
|
||||||
|
"hash": "sha256-gND9ef2irqv3v79FSZcFElhiBC6jcKC4XSG6KP2mrFg="
|
||||||
|
},
|
||||||
|
"src/third_party/spirv-tools/src": {
|
||||||
|
"url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools",
|
||||||
|
"rev": "f139c64525c7c449c83d299a9fda4e1657bf37ab",
|
||||||
|
"hash": "sha256-yDcOY2t8n9sUOLo03KGHN95SNfsctOfou1dJ/2R/njQ="
|
||||||
|
},
|
||||||
|
"src/third_party/vulkan-headers/src": {
|
||||||
|
"url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Headers",
|
||||||
|
"rev": "49f1a381e2aec33ef32adf4a377b5a39ec016ec4",
|
||||||
|
"hash": "sha256-K/8X9D7B0o6+osOzScplwea+OsfM3srAtDKCgfZpcJU="
|
||||||
|
},
|
||||||
|
"src/third_party/vulkan-loader/src": {
|
||||||
|
"url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader",
|
||||||
|
"rev": "ab275e43c69f273185a72afa031c7e881b587a42",
|
||||||
|
"hash": "sha256-nQqF0ff9IoBWnrauMQ/9BoI3aWh5syyvzqTvH/3vTfw="
|
||||||
|
},
|
||||||
|
"src/third_party/vulkan-tools/src": {
|
||||||
|
"url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Tools",
|
||||||
|
"rev": "39a19dccf79d28951516c3c7c9f1ee4a606fb733",
|
||||||
|
"hash": "sha256-TGgU9IIsuQKs7XKmnoOaD870aR8+txsRZu8nj//K+ks="
|
||||||
|
},
|
||||||
|
"src/third_party/vulkan-utility-libraries/src": {
|
||||||
|
"url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Utility-Libraries",
|
||||||
|
"rev": "50af38b6cd43afb1462f9ad26b8d015382d11a3d",
|
||||||
|
"hash": "sha256-4i9+7BXmJHkDRzUE+gbwCNBcW2h0xDP7hcHH/DH2QZg="
|
||||||
|
},
|
||||||
|
"src/third_party/vulkan-validation-layers/src": {
|
||||||
|
"url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers",
|
||||||
|
"rev": "cee14167434e805deb7010e1bbc1866a5f013d58",
|
||||||
|
"hash": "sha256-rCBqqcjGNjD8vIN/WSkxVLRRTxHnH+cAZTr87tuG2uU="
|
||||||
|
},
|
||||||
|
"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": "736d12ac67c20c60dc406dc49bb06be878501f86",
|
||||||
|
"hash": "sha256-5iG0HaPXJCEo027TuyXlJQNGluTaAPlvwQDFbiYOEJQ="
|
||||||
|
},
|
||||||
|
"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": "eb9091d141e126fd9479a62aeceb927b73b6af47",
|
||||||
|
"hash": "sha256-BJuBJGsP+rEzLDREo8pARqyX/DOQS9BcZ4KWnris/EM="
|
||||||
|
},
|
||||||
|
"src/third_party/webpagereplay": {
|
||||||
|
"url": "https://chromium.googlesource.com/webpagereplay.git",
|
||||||
|
"rev": "50c853586c642039992d9b0215f87072a0967bd8",
|
||||||
|
"hash": "sha256-yR5+CafUHiJAZC7940dBboOrUPoAId8FjcxB1nwPbHw="
|
||||||
|
},
|
||||||
|
"src/third_party/webrtc": {
|
||||||
|
"url": "https://webrtc.googlesource.com/src.git",
|
||||||
|
"rev": "d1972add2a63b2a528a6471d447f82e0010b5215",
|
||||||
|
"hash": "sha256-evtOzxwWgKUaJl9zwpQDqPp1wM7w3DzjRcLg29z9ELQ="
|
||||||
|
},
|
||||||
|
"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": "b65be9e699847c975440108a42f05412cc7fddac",
|
||||||
|
"hash": "sha256-PySen9syu0OshtlHAZw666FeSQXdnsV8nlW9RmxgapM="
|
||||||
|
},
|
||||||
|
"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": "1154ae8178f0efc634cd1e8a681646dc22973255",
|
||||||
|
"hash": "sha256-chWb8gVyjdjJaXIbJzPLH9Bt9P7qkUNk4f0EeFePlSo="
|
||||||
|
},
|
||||||
|
"src/third_party/zstd/src": {
|
||||||
|
"url": "https://chromium.googlesource.com/external/github.com/facebook/zstd.git",
|
||||||
|
"rev": "1168da0e567960d50cba1b58c9b0ba047ece4733",
|
||||||
|
"hash": "sha256-T2CwRpL/XT/OsBrRfxC8kNIm43U4qPMBju8Ug13Qebo="
|
||||||
|
},
|
||||||
|
"src/v8": {
|
||||||
|
"url": "https://chromium.googlesource.com/v8/v8.git",
|
||||||
|
"rev": "70253f966a7c3936f5a5ff57c6a4a4face1f16ad",
|
||||||
|
"hash": "sha256-8tA9nWXsiQ2Qt7pbALrhsnNFHOFLw/wlcz5OrFjYEI8="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,163 @@
|
|||||||
|
{
|
||||||
|
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 // {
|
||||||
|
platforms = [ "x86_64-linux" ];
|
||||||
|
};
|
||||||
|
passthru = {
|
||||||
|
inherit (unwrapped) upstream-info;
|
||||||
|
browser = unwrapped;
|
||||||
|
inherit sandboxExecutableName;
|
||||||
|
updateScript = ./update.mjs;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -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
|
||||||
@@ -0,0 +1,227 @@
|
|||||||
|
{
|
||||||
|
stdenv,
|
||||||
|
upstream-info,
|
||||||
|
chromium,
|
||||||
|
fetchurl,
|
||||||
|
go-crx3,
|
||||||
|
overrideCC,
|
||||||
|
pkgsBuildBuild,
|
||||||
|
lib,
|
||||||
|
electron-source,
|
||||||
|
helium-patcher-unwrapped,
|
||||||
|
fetchzip,
|
||||||
|
breakpointHook,
|
||||||
|
proprietaryCodecs,
|
||||||
|
cupsSupport,
|
||||||
|
pulseSupport,
|
||||||
|
}:
|
||||||
|
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
|
||||||
|
(
|
||||||
|
(chromium.passthru.mkDerivation.override (old: {
|
||||||
|
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.67.0";
|
||||||
|
in
|
||||||
|
fetchurl {
|
||||||
|
url = "https://github.com/imputnet/ublock-origin-crx/releases/download/${version}/uBlock0_${version}.crx";
|
||||||
|
hash = "sha256-06NjhGEfV5Msg098vq6NdPXPrGNrqVUkz+nlLoFVAac=";
|
||||||
|
|
||||||
|
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 = "202511061712";
|
||||||
|
in
|
||||||
|
fetchzip {
|
||||||
|
url = "https://github.com/imputnet/helium-onboarding/releases/download/${version}/helium-onboarding-${version}.tar.gz";
|
||||||
|
hash = "sha256-wsEFW9Psj4xTFUwgWC12aLErp/QKDIhcRkcw9WZms8Q=";
|
||||||
|
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
|
||||||
|
++ [
|
||||||
|
# breakpointHook
|
||||||
|
];
|
||||||
|
# skip chromium-126-llvm-17.patch
|
||||||
|
patches = lib.filter (
|
||||||
|
p:
|
||||||
|
let
|
||||||
|
name = (builtins.baseNameOf p);
|
||||||
|
in
|
||||||
|
!builtins.elem name [
|
||||||
|
"chromium-126-llvm-17.patch"
|
||||||
|
"x5k78i7w4zics8v9b9azy4k1g7c8586z-chromium-141-Revert-Remove-unnecessary-include-in-tree_scope.h.patch"
|
||||||
|
"1rh5mwg9vxra2bbadh2saxzscfpxf5w4-chromium-142-Backport-Add-missing-include-for-FormFieldData-type-completeness.patch"
|
||||||
|
]
|
||||||
|
) base.patches;
|
||||||
|
|
||||||
|
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;
|
||||||
|
inherit upstream-info chromiumVersionAtLeast;
|
||||||
|
};
|
||||||
|
|
||||||
|
requiredSystemFeatures = [ "big-parallel" ];
|
||||||
|
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
Executable
+290
@@ -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
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{ llama-cpp }:
|
||||||
|
|
||||||
|
llama-cpp.override {
|
||||||
|
hexagonSupport = true;
|
||||||
|
blasSupport = false;
|
||||||
|
}
|
||||||
@@ -0,0 +1,223 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
autoAddDriverRunpath,
|
||||||
|
cmake,
|
||||||
|
fetchFromGitHub,
|
||||||
|
nix-update-script,
|
||||||
|
stdenv,
|
||||||
|
|
||||||
|
config,
|
||||||
|
cudaSupport ? config.cudaSupport,
|
||||||
|
cudaPackages ? { },
|
||||||
|
|
||||||
|
rocmSupport ? config.rocmSupport,
|
||||||
|
rocmPackages ? { },
|
||||||
|
rocmGpuTargets ? rocmPackages.clr.localGpuTargets or rocmPackages.clr.gpuTargets,
|
||||||
|
|
||||||
|
openclSupport ? false,
|
||||||
|
clblast,
|
||||||
|
|
||||||
|
blasSupport ? builtins.all (x: !x) [
|
||||||
|
cudaSupport
|
||||||
|
metalSupport
|
||||||
|
openclSupport
|
||||||
|
rocmSupport
|
||||||
|
vulkanSupport
|
||||||
|
],
|
||||||
|
blas,
|
||||||
|
|
||||||
|
pkg-config,
|
||||||
|
metalSupport ? stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64 && !openclSupport,
|
||||||
|
vulkanSupport ? false,
|
||||||
|
rpcSupport ? false,
|
||||||
|
hexagonSupport ? false,
|
||||||
|
curl,
|
||||||
|
llama-cpp,
|
||||||
|
shaderc,
|
||||||
|
vulkan-headers,
|
||||||
|
hexagon-sdk,
|
||||||
|
vulkan-loader,
|
||||||
|
ninja,
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
# It's necessary to consistently use backendStdenv when building with CUDA support,
|
||||||
|
# otherwise we get libstdc++ errors downstream.
|
||||||
|
# cuda imposes an upper bound on the gcc version
|
||||||
|
buildPkgs = import pkgs.path {
|
||||||
|
system = "x86_64-linux"; # builder uses x86_64
|
||||||
|
};
|
||||||
|
|
||||||
|
# hexagon needs a x86 build env
|
||||||
|
crossPkgs = buildPkgs.pkgsCross.aarch64-multiplatform;
|
||||||
|
|
||||||
|
effectiveStdenv = if hexagonSupport then crossPkgs.stdenv else stdenv;
|
||||||
|
inherit (lib)
|
||||||
|
cmakeBool
|
||||||
|
cmakeFeature
|
||||||
|
optionals
|
||||||
|
optionalString
|
||||||
|
;
|
||||||
|
|
||||||
|
cudaBuildInputs = with cudaPackages; [
|
||||||
|
cuda_cccl # <nv/target>
|
||||||
|
|
||||||
|
# A temporary hack for reducing the closure size, remove once cudaPackages
|
||||||
|
# have stopped using lndir: https://github.com/NixOS/nixpkgs/issues/271792
|
||||||
|
cuda_cudart
|
||||||
|
libcublas
|
||||||
|
];
|
||||||
|
|
||||||
|
rocmBuildInputs = with rocmPackages; [
|
||||||
|
clr
|
||||||
|
hipblas
|
||||||
|
rocblas
|
||||||
|
];
|
||||||
|
|
||||||
|
vulkanBuildInputs = [
|
||||||
|
shaderc
|
||||||
|
vulkan-headers
|
||||||
|
vulkan-loader
|
||||||
|
];
|
||||||
|
|
||||||
|
hexagonBuildInputs = [
|
||||||
|
hexagon-sdk
|
||||||
|
];
|
||||||
|
in
|
||||||
|
effectiveStdenv.mkDerivation (finalAttrs: {
|
||||||
|
pname = "llama-cpp";
|
||||||
|
version = "8871";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "ggml-org";
|
||||||
|
repo = "llama.cpp";
|
||||||
|
tag = "b${finalAttrs.version}";
|
||||||
|
hash = "sha256-dSMomkkG3YFwXAcYTym6Z03u8ZAWFFio8jdQJPMJ/yg=";
|
||||||
|
leaveDotGit = true;
|
||||||
|
postFetch = ''
|
||||||
|
git -C "$out" rev-parse --short HEAD > $out/COMMIT
|
||||||
|
find "$out" -name .git -print0 | xargs -0 rm -rf
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
cmake
|
||||||
|
pkgs.clang
|
||||||
|
ninja
|
||||||
|
pkg-config
|
||||||
|
blas
|
||||||
|
]
|
||||||
|
++ optionals cudaSupport [
|
||||||
|
cudaPackages.cuda_nvcc
|
||||||
|
autoAddDriverRunpath
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs =
|
||||||
|
optionals cudaSupport cudaBuildInputs
|
||||||
|
++ optionals openclSupport [ clblast ]
|
||||||
|
++ optionals rocmSupport rocmBuildInputs
|
||||||
|
++ optionals blasSupport [ blas ]
|
||||||
|
++ optionals vulkanSupport vulkanBuildInputs
|
||||||
|
++ optionals hexagonSupport hexagonBuildInputs
|
||||||
|
++ [
|
||||||
|
curl
|
||||||
|
];
|
||||||
|
|
||||||
|
preConfigure = ''
|
||||||
|
prependToVar cmakeFlags "-DLLAMA_BUILD_COMMIT:STRING=$(cat COMMIT)"
|
||||||
|
'';
|
||||||
|
|
||||||
|
cmakeFlags = [
|
||||||
|
# -march=native is non-deterministic; override with platform-specific flags if needed
|
||||||
|
(cmakeBool "GGML_NATIVE" false)
|
||||||
|
(cmakeBool "LLAMA_BUILD_EXAMPLES" false)
|
||||||
|
(cmakeBool "LLAMA_BUILD_SERVER" true)
|
||||||
|
(cmakeBool "LLAMA_BUILD_TESTS" (finalAttrs.finalPackage.doCheck or false))
|
||||||
|
(cmakeBool "LLAMA_CURL" true)
|
||||||
|
(cmakeBool "BUILD_SHARED_LIBS" true)
|
||||||
|
(cmakeBool "GGML_BLAS" blasSupport)
|
||||||
|
(cmakeBool "GGML_CLBLAST" openclSupport)
|
||||||
|
(cmakeBool "GGML_CUDA" cudaSupport)
|
||||||
|
(cmakeBool "GGML_HIP" rocmSupport)
|
||||||
|
(cmakeBool "GGML_METAL" metalSupport)
|
||||||
|
(cmakeBool "GGML_RPC" rpcSupport)
|
||||||
|
(cmakeBool "GGML_VULKAN" vulkanSupport)
|
||||||
|
(cmakeBool "GGML_HEXAGON" hexagonSupport)
|
||||||
|
(cmakeFeature "LLAMA_BUILD_NUMBER" finalAttrs.version)
|
||||||
|
]
|
||||||
|
++ optionals cudaSupport [
|
||||||
|
(cmakeFeature "CMAKE_CUDA_ARCHITECTURES" cudaPackages.flags.cmakeCudaArchitecturesString)
|
||||||
|
]
|
||||||
|
++ optionals rocmSupport [
|
||||||
|
(cmakeFeature "CMAKE_HIP_COMPILER" "${rocmPackages.clr.hipClangPath}/clang++")
|
||||||
|
(cmakeFeature "CMAKE_HIP_ARCHITECTURES" (builtins.concatStringsSep ";" rocmGpuTargets))
|
||||||
|
]
|
||||||
|
++ optionals metalSupport [
|
||||||
|
(cmakeFeature "CMAKE_C_FLAGS" "-D__ARM_FEATURE_DOTPROD=1")
|
||||||
|
(cmakeBool "LLAMA_METAL_EMBED_LIBRARY" true)
|
||||||
|
]
|
||||||
|
++ optionals rpcSupport [
|
||||||
|
# This is done so we can move rpc-server out of bin because llama.cpp doesn't
|
||||||
|
# install rpc-server in their install target.
|
||||||
|
(cmakeBool "CMAKE_SKIP_BUILD_RPATH" true)
|
||||||
|
]
|
||||||
|
++ optionals hexagonSupport [
|
||||||
|
# (cmakeFeature "CMAKE_TOOLCHAIN_FILE" "${finalAttrs.src}/cmake/arm64-linux-clang.cmake")
|
||||||
|
(cmakeFeature "CMAKE_C_FLAGS" "-D__ARM_FEATURE_DOTPROD=1")
|
||||||
|
(cmakeFeature "CMAKE_CXX_FLAGS" "")
|
||||||
|
(cmakeBool "GGML_OPENMP" false)
|
||||||
|
(cmakeBool "GGML_LLAMAFILE" false)
|
||||||
|
(cmakeFeature "GGML_OPENCL" "OFF")
|
||||||
|
(cmakeFeature "PREBUILT_LIB_DIR" "linux_aarch64")
|
||||||
|
(cmakeFeature "GGML_HEXAGON_FP32_QUANTIZE_GROUP_SIZE" "128")
|
||||||
|
(cmakeFeature "HEXAGON_SDK_ROOT" "${hexagon-sdk}/opt")
|
||||||
|
(cmakeFeature "HEXAGON_TOOLS_ROOT" "${hexagon-sdk}/opt/tools/HEXAGON_Tools/19.0.04")
|
||||||
|
(cmakeFeature "LLAMA_OPENSSL" "OFF")
|
||||||
|
];
|
||||||
|
|
||||||
|
# upstream plans on adding targets at the cmakelevel, remove those
|
||||||
|
# additional steps after that
|
||||||
|
postInstall = ''
|
||||||
|
# Match previous binary name for this package
|
||||||
|
ln -sf $out/bin/llama-cli $out/bin/llama
|
||||||
|
|
||||||
|
mkdir -p $out/include
|
||||||
|
cp $src/include/llama.h $out/include/
|
||||||
|
''
|
||||||
|
+ optionalString rpcSupport "cp bin/rpc-server $out/bin/llama-rpc-server";
|
||||||
|
|
||||||
|
# the tests are failing as of 2025-08
|
||||||
|
doCheck = false;
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
tests = lib.optionalAttrs stdenv.hostPlatform.isDarwin {
|
||||||
|
metal = llama-cpp.override { metalSupport = true; };
|
||||||
|
};
|
||||||
|
updateScript = nix-update-script {
|
||||||
|
attrPath = "llama-cpp";
|
||||||
|
extraArgs = [
|
||||||
|
"--version-regex"
|
||||||
|
"b(.*)"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "Inference of Meta's LLaMA model (and others) in pure C/C++";
|
||||||
|
homepage = "https://github.com/ggml-org/llama.cpp";
|
||||||
|
license = lib.licenses.mit;
|
||||||
|
mainProgram = "llama";
|
||||||
|
maintainers = with lib.maintainers; [
|
||||||
|
booxter
|
||||||
|
dit7ya
|
||||||
|
philiptaron
|
||||||
|
xddxdd
|
||||||
|
];
|
||||||
|
platforms = lib.platforms.unix;
|
||||||
|
badPlatforms = optionals (cudaSupport || openclSupport) lib.platforms.darwin;
|
||||||
|
broken =
|
||||||
|
(metalSupport && !effectiveStdenv.hostPlatform.isDarwin)
|
||||||
|
|| (hexagonSupport && !effectiveStdenv.hostPlatform.isAarch64);
|
||||||
|
};
|
||||||
|
})
|
||||||
@@ -0,0 +1,134 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
rustPlatform,
|
||||||
|
clangStdenv,
|
||||||
|
fetchFromGitHub,
|
||||||
|
linkFarm,
|
||||||
|
fetchgit,
|
||||||
|
runCommand,
|
||||||
|
gn,
|
||||||
|
neovim,
|
||||||
|
ninja,
|
||||||
|
makeWrapper,
|
||||||
|
pkg-config,
|
||||||
|
python3,
|
||||||
|
removeReferencesTo,
|
||||||
|
cctools,
|
||||||
|
SDL2,
|
||||||
|
fontconfig,
|
||||||
|
libxrandr,
|
||||||
|
libxi,
|
||||||
|
libxext,
|
||||||
|
libxcursor,
|
||||||
|
libx11,
|
||||||
|
stdenv,
|
||||||
|
libglvnd,
|
||||||
|
libxkbcommon,
|
||||||
|
enableWayland ? stdenv.hostPlatform.isLinux,
|
||||||
|
wayland,
|
||||||
|
callPackage,
|
||||||
|
}: let
|
||||||
|
sources = callPackage ../../../../_sources/generated.nix {};
|
||||||
|
inherit (sources.neovide) src;
|
||||||
|
in
|
||||||
|
rustPlatform.buildRustPackage.override {stdenv = clangStdenv;} (finalAttrs: {
|
||||||
|
pname = "neovide";
|
||||||
|
version = src.rev;
|
||||||
|
src = src;
|
||||||
|
|
||||||
|
cargoLock = sources.neovide.cargoLock."Cargo.lock";
|
||||||
|
|
||||||
|
env = {
|
||||||
|
SKIA_SOURCE_DIR = let
|
||||||
|
repo = fetchFromGitHub {
|
||||||
|
owner = "rust-skia";
|
||||||
|
repo = "skia";
|
||||||
|
# see rust-skia:skia-bindings/Cargo.toml#package.metadata skia
|
||||||
|
tag = "m145-0.92.0";
|
||||||
|
hash = "sha256-9N780AwheKBJRcZC4l/uWFNq+oOyoNp4M6dJAVVAFeo=";
|
||||||
|
};
|
||||||
|
# The externals for skia are taken from skia/DEPS
|
||||||
|
externals = linkFarm "skia-externals" (
|
||||||
|
lib.mapAttrsToList (name: value: {
|
||||||
|
inherit name;
|
||||||
|
path = fetchgit value;
|
||||||
|
}) (lib.importJSON ./skia-externals.json)
|
||||||
|
);
|
||||||
|
in
|
||||||
|
runCommand "source" {} ''
|
||||||
|
cp -R ${repo} $out
|
||||||
|
chmod -R +w $out
|
||||||
|
ln -s ${externals} $out/third_party/externals
|
||||||
|
'';
|
||||||
|
|
||||||
|
SKIA_GN_COMMAND = "${gn}/bin/gn";
|
||||||
|
SKIA_NINJA_COMMAND = "${ninja}/bin/ninja";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs =
|
||||||
|
[
|
||||||
|
makeWrapper
|
||||||
|
pkg-config
|
||||||
|
python3 # skia
|
||||||
|
removeReferencesTo
|
||||||
|
]
|
||||||
|
++ lib.optionals stdenv.hostPlatform.isDarwin [
|
||||||
|
cctools.libtool
|
||||||
|
];
|
||||||
|
|
||||||
|
nativeCheckInputs = [neovim];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
SDL2
|
||||||
|
fontconfig
|
||||||
|
rustPlatform.bindgenHook
|
||||||
|
];
|
||||||
|
|
||||||
|
postFixup = let
|
||||||
|
libPath = lib.makeLibraryPath (
|
||||||
|
[
|
||||||
|
libglvnd
|
||||||
|
libxkbcommon
|
||||||
|
libx11
|
||||||
|
libxcursor
|
||||||
|
libxext
|
||||||
|
libxrandr
|
||||||
|
libxi
|
||||||
|
]
|
||||||
|
++ lib.optionals enableWayland [wayland]
|
||||||
|
);
|
||||||
|
in ''
|
||||||
|
# library skia embeds the path to its sources
|
||||||
|
remove-references-to -t "$SKIA_SOURCE_DIR" \
|
||||||
|
$out/bin/neovide
|
||||||
|
|
||||||
|
wrapProgram $out/bin/neovide \
|
||||||
|
--prefix LD_LIBRARY_PATH : ${libPath}
|
||||||
|
'';
|
||||||
|
|
||||||
|
postInstall =
|
||||||
|
lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||||
|
mkdir -p $out/Applications
|
||||||
|
cp -r extra/osx/Neovide.app $out/Applications
|
||||||
|
ln -s $out/bin $out/Applications/Neovide.app/Contents/MacOS
|
||||||
|
''
|
||||||
|
+ lib.optionalString stdenv.hostPlatform.isLinux ''
|
||||||
|
for n in 16x16 32x32 48x48 256x256; do
|
||||||
|
install -m444 -D "assets/neovide-$n.png" \
|
||||||
|
"$out/share/icons/hicolor/$n/apps/neovide.png"
|
||||||
|
done
|
||||||
|
install -m444 -Dt $out/share/icons/hicolor/scalable/apps assets/neovide.svg
|
||||||
|
install -m444 -Dt $out/share/applications assets/neovide.desktop
|
||||||
|
'';
|
||||||
|
|
||||||
|
disallowedReferences = [finalAttrs.env.SKIA_SOURCE_DIR];
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "Simple, no-nonsense, cross-platform graphical user interface for Neovim";
|
||||||
|
mainProgram = "neovide";
|
||||||
|
homepage = "https://neovide.dev/";
|
||||||
|
changelog = "https://github.com/neovide/neovide/releases/tag/${finalAttrs.version}";
|
||||||
|
license = lib.licenses.mit;
|
||||||
|
platforms = lib.platforms.unix;
|
||||||
|
};
|
||||||
|
})
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
{
|
||||||
|
"expat": {
|
||||||
|
"url": "https://chromium.googlesource.com/external/github.com/libexpat/libexpat.git",
|
||||||
|
"rev": "8e49998f003d693213b538ef765814c7d21abada",
|
||||||
|
"sha256": "sha256-zP2kiB4nyLi0/I8OsRhxKG0qRGPe2ALLQ+HHfqlBJ6Y="
|
||||||
|
},
|
||||||
|
"libjpeg-turbo": {
|
||||||
|
"url": "https://chromium.googlesource.com/chromium/deps/libjpeg_turbo.git",
|
||||||
|
"rev": "e14cbfaa85529d47f9f55b0f104a579c1061f9ad",
|
||||||
|
"sha256": "sha256-Ig+tmprZDvlf/M72/DTar2pbxat9ZElgSqdXdoM0lPs="
|
||||||
|
},
|
||||||
|
"icu": {
|
||||||
|
"url": "https://chromium.googlesource.com/chromium/deps/icu.git",
|
||||||
|
"rev": "364118a1d9da24bb5b770ac3d762ac144d6da5a4",
|
||||||
|
"sha256": "sha256-frsmwYMiFixEULsE91x5+p98DvkyC0s0fNupqjoRnvg="
|
||||||
|
},
|
||||||
|
"zlib": {
|
||||||
|
"url": "https://chromium.googlesource.com/chromium/src/third_party/zlib",
|
||||||
|
"rev": "646b7f569718921d7d4b5b8e22572ff6c76f2596",
|
||||||
|
"sha256": "sha256-jNj6SuTZ5/a7crtYhxW3Q/TlfRMNMfYIVxDlr7bYdzQ="
|
||||||
|
},
|
||||||
|
"harfbuzz": {
|
||||||
|
"url": "https://chromium.googlesource.com/external/github.com/harfbuzz/harfbuzz.git",
|
||||||
|
"rev": "31695252eb6ed25096893aec7f848889dad874bc",
|
||||||
|
"sha256": "sha256-Csyz08JTNXfY2fo27x1Eg1CqO/tt8Rt9udr3KflojSg="
|
||||||
|
},
|
||||||
|
"wuffs": {
|
||||||
|
"url": "https://skia.googlesource.com/external/github.com/google/wuffs-mirror-release-c.git",
|
||||||
|
"rev": "e3f919ccfe3ef542cfc983a82146070258fb57f8",
|
||||||
|
"sha256": "sha256-373d2F/STcgCHEq+PO+SCHrKVOo6uO1rqqwRN5eeBCw="
|
||||||
|
},
|
||||||
|
"libpng": {
|
||||||
|
"url": "https://skia.googlesource.com/third_party/libpng.git",
|
||||||
|
"rev": "4e3f57d50f552841550a36eabbb3fbcecacb7750",
|
||||||
|
"sha256": "sha256-tNRrA9RUp6Mi7dbIB/70a/4tn/JxAsTUb9EI9nlXLjM="
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
callPackage,
|
||||||
|
stdenv,
|
||||||
|
gnumake,
|
||||||
|
dtc,
|
||||||
|
glibc,
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
sources = callPackage ../../../../_sources/generated.nix { };
|
||||||
|
in
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
pname = "qebspil";
|
||||||
|
version = "unstable-${sources.qebspil.date}";
|
||||||
|
|
||||||
|
inherit (sources.qebspil) src;
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
gnumake
|
||||||
|
dtc
|
||||||
|
];
|
||||||
|
|
||||||
|
preBuild = ''
|
||||||
|
# Create a symlink to glibc's elf.h for gnu-efi
|
||||||
|
mkdir -p external/gnu-efi/inc/sys
|
||||||
|
ln -sf ${glibc.dev}/include/elf.h external/gnu-efi/inc/sys/elf.h
|
||||||
|
|
||||||
|
# Set up build environment
|
||||||
|
export SRCDIR=$PWD
|
||||||
|
export OUTDIR=$PWD/out
|
||||||
|
'';
|
||||||
|
|
||||||
|
makeFlags = [
|
||||||
|
"QEBSPIL_ALWAYS_START=1"
|
||||||
|
"CROSS_COMPILE="
|
||||||
|
"ARCH=aarch64"
|
||||||
|
];
|
||||||
|
|
||||||
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
|
# Install the EFI binary
|
||||||
|
mkdir -p $out/share/efi
|
||||||
|
cp out/qebspilaa64.efi $out/share/efi/
|
||||||
|
|
||||||
|
# Also create a symlink in a more standard location
|
||||||
|
mkdir -p $out/lib/systemd/boot/efi
|
||||||
|
ln -s $out/share/efi/qebspilaa64.efi $out/lib/systemd/boot/efi/qebspilaa64.efi
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "UEFI boot driver to start co-processors on Qualcomm platforms late during the boot process";
|
||||||
|
homepage = "https://github.com/stephan-gh/qebspil";
|
||||||
|
license = licenses.gpl2Only;
|
||||||
|
platforms = [ "aarch64-linux" ];
|
||||||
|
mainProgram = "qebspilaa64.efi";
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
{
|
||||||
|
callPackage,
|
||||||
|
stdenv,
|
||||||
|
fetchFromGitHub,
|
||||||
|
meson,
|
||||||
|
ninja,
|
||||||
|
pkg-config,
|
||||||
|
radare2,
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
sources = callPackage ../../../../_sources/generated.nix { };
|
||||||
|
|
||||||
|
ghidra-native = fetchFromGitHub {
|
||||||
|
owner = "radareorg";
|
||||||
|
repo = "ghidra-native";
|
||||||
|
rev = "0.6.4";
|
||||||
|
hash = "sha256-DFvHM/erGE9wFjcB3Dlyhv4oebzXwe2yGG+GzLaY7hU=";
|
||||||
|
};
|
||||||
|
|
||||||
|
pugixml = fetchFromGitHub {
|
||||||
|
owner = "zeux";
|
||||||
|
repo = "pugixml";
|
||||||
|
rev = "v1.15";
|
||||||
|
hash = "sha256-t/57lg32KgKPc7qRGQtO/GOwHRqoj78lllSaE/A8Z9Q=";
|
||||||
|
};
|
||||||
|
in
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
inherit (sources.radare2-ghidra) pname version src;
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
meson
|
||||||
|
ninja
|
||||||
|
pkg-config
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
radare2
|
||||||
|
];
|
||||||
|
|
||||||
|
preConfigure = ''
|
||||||
|
cp -r ${ghidra-native} subprojects/ghidra-native
|
||||||
|
chmod -R u+w subprojects/ghidra-native
|
||||||
|
|
||||||
|
# Overlay packagefiles (meson.build, etc.)
|
||||||
|
cp -r subprojects/packagefiles/ghidra-native/* subprojects/ghidra-native/
|
||||||
|
|
||||||
|
# Apply diff patches listed in the wrap file
|
||||||
|
for p in subprojects/packagefiles/ghidra-native/patches/*.patch; do
|
||||||
|
[ -f "$p" ] || continue
|
||||||
|
echo "Applying patch: $p"
|
||||||
|
patch -d subprojects/ghidra-native -p1 < "$p" || true
|
||||||
|
done
|
||||||
|
|
||||||
|
# Fix sleighc link: it needs ghidra_decompiler_static for symbols from pcodeinject.cc
|
||||||
|
substituteInPlace subprojects/ghidra-native/meson.build \
|
||||||
|
--replace-fail "link_with: slgh_static," \
|
||||||
|
"link_with: [slgh_static, ghidra_decompiler_static],"
|
||||||
|
|
||||||
|
# Install into $out instead of radare2's store path
|
||||||
|
substituteInPlace meson.build \
|
||||||
|
--replace-fail "res = run_command(['radare2','-HR2_LIBR_PLUGINS'], capture:true, check:false)" \
|
||||||
|
"res = run_command(['false'], capture:true, check:false)"
|
||||||
|
|
||||||
|
# pugixml subproject
|
||||||
|
cp -r ${pugixml} subprojects/pugixml
|
||||||
|
chmod -R u+w subprojects/pugixml
|
||||||
|
cp -r subprojects/packagefiles/pugixml/* subprojects/pugixml/
|
||||||
|
'';
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
callPackage,
|
||||||
|
stdenv,
|
||||||
|
meson,
|
||||||
|
ninja,
|
||||||
|
pkg-config,
|
||||||
|
radare2,
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
sources = callPackage ../../../../_sources/generated.nix { };
|
||||||
|
in
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
inherit (sources.radare2-mcp) pname version src;
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
meson
|
||||||
|
ninja
|
||||||
|
pkg-config
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
radare2
|
||||||
|
];
|
||||||
|
|
||||||
|
mesonFlags = [
|
||||||
|
"-Dr2_prefix=${radare2}"
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,99 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
callPackage,
|
||||||
|
stdenv,
|
||||||
|
fetchzip,
|
||||||
|
fetchgit,
|
||||||
|
fetchFromGitHub,
|
||||||
|
buildPackages,
|
||||||
|
dtc,
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
sources = callPackage ../../../../_sources/generated.nix { };
|
||||||
|
|
||||||
|
aarch64-system-register-xmls = fetchzip {
|
||||||
|
url = "https://developer.arm.com/-/media/developer/products/architecture/armv8-a-architecture/2020-06/SysReg_xml_v86A-2020-06.tar.gz";
|
||||||
|
stripRoot = false;
|
||||||
|
hash = "sha256-wpWMIdR4v4sGZ0FEn/j5+AzkpPFOF7lUKIFpVl5AMEE=";
|
||||||
|
};
|
||||||
|
|
||||||
|
arm64-sysreg-lib = stdenv.mkDerivation {
|
||||||
|
name = "arm64-sysreg-lib";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "ashwio";
|
||||||
|
repo = "arm64-sysreg-lib";
|
||||||
|
sparseCheckout = [ "/" ];
|
||||||
|
rev = "d421e249a026f6f14653cb6f9c4edd8c5d898595";
|
||||||
|
hash = "sha256-vUuV8eddYAdwXGQe+L7lKiAwyqHPYmiOdVFKvwCMWkQ=";
|
||||||
|
};
|
||||||
|
nativeBuildInputs = [
|
||||||
|
(buildPackages.python3.withPackages (ps: [ ps.beautifulsoup4 ]))
|
||||||
|
];
|
||||||
|
buildPhase = ''
|
||||||
|
python ./run-build.py ${aarch64-system-register-xmls}/SysReg_xml_v86A-2020-06
|
||||||
|
'';
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/include
|
||||||
|
cp -r include $out/
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
gnu-efi = fetchFromGitHub {
|
||||||
|
owner = "ncroxon";
|
||||||
|
repo = "gnu-efi";
|
||||||
|
rev = "3.0.15";
|
||||||
|
hash = "sha256-flQJIRPKd0geQRAtJSu4vravJG0lTB6BfeIqpUM5P2I=";
|
||||||
|
};
|
||||||
|
|
||||||
|
dtc-src = fetchgit {
|
||||||
|
url = "https://git.kernel.org/pub/scm/utils/dtc/dtc.git";
|
||||||
|
rev = "v1.7.2";
|
||||||
|
hash = "sha256-KZCzrvdWd6zfQHppjyp4XzqNCfH2UnuRneu+BNIRVAY=";
|
||||||
|
};
|
||||||
|
|
||||||
|
in
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
|
pname = "slbounce";
|
||||||
|
version = lib.removePrefix "v" sources.slbounce.version;
|
||||||
|
|
||||||
|
inherit (sources.slbounce) src;
|
||||||
|
|
||||||
|
nativeBuildInputs = [ dtc ];
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
rmdir external/{arm64-sysreg-lib,dtc}
|
||||||
|
ln -s ${arm64-sysreg-lib} external/arm64-sysreg-lib
|
||||||
|
ln -s ${dtc-src} external/dtc
|
||||||
|
|
||||||
|
cp -r ${gnu-efi}/* external/gnu-efi/
|
||||||
|
chmod -R u+w external/gnu-efi
|
||||||
|
'';
|
||||||
|
|
||||||
|
makeFlags = [
|
||||||
|
"CROSS_COMPILE=${stdenv.cc.targetPrefix}"
|
||||||
|
# Force EL2 switch regardless of DTB detection
|
||||||
|
# Without this, slbounce checks for 'dtbhack-el2-overlay' in DTB
|
||||||
|
"SLBOUNCE_ALWAYS_SWITCH=1"
|
||||||
|
# Enable debug output
|
||||||
|
"DEBUG=1"
|
||||||
|
"all"
|
||||||
|
];
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/share/slbounce
|
||||||
|
cp out/*.efi $out/share/slbounce/
|
||||||
|
|
||||||
|
# Also build and install DTB overlays
|
||||||
|
make dtbs || true
|
||||||
|
mkdir -p $out/share/slbounce/dtbo
|
||||||
|
cp out/dtbo/*.dtbo $out/share/slbounce/dtbo/ 2>/dev/null || true
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "EL2 (hypervisor mode) enabler for Qualcomm Windows-on-ARM devices";
|
||||||
|
homepage = "https://github.com/TravMurav/slbounce";
|
||||||
|
license = licenses.gpl2Only;
|
||||||
|
platforms = [ "aarch64-linux" ];
|
||||||
|
};
|
||||||
|
})
|
||||||
@@ -0,0 +1,96 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
stdenvNoCC,
|
||||||
|
stdenv,
|
||||||
|
p7zip,
|
||||||
|
curl,
|
||||||
|
jq,
|
||||||
|
cacert,
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
version = "22621.6060";
|
||||||
|
# Fixed-Output Derivation to fetch winre.wim from Microsoft CDN via UUPDump API
|
||||||
|
winre-wim = stdenvNoCC.mkDerivation {
|
||||||
|
pname = "winre-wim";
|
||||||
|
inherit version;
|
||||||
|
nativeBuildInputs = [
|
||||||
|
curl
|
||||||
|
jq
|
||||||
|
cacert
|
||||||
|
];
|
||||||
|
|
||||||
|
UUP_ID = "b90029a9-23b4-4558-9687-2142f79e5ae2";
|
||||||
|
|
||||||
|
dontUnpack = true;
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
runHook preBuild
|
||||||
|
|
||||||
|
echo "Querying UUPDump API for winre.wim..."
|
||||||
|
WINRE_URL=$(curl -s "https://api.uupdump.net/get.php?id=$UUP_ID" | jq -r '.response.files["winre.wim"].url')
|
||||||
|
|
||||||
|
if [[ -z "$WINRE_URL" || "$WINRE_URL" == "null" ]]; then
|
||||||
|
echo "ERROR: Failed to get winre.wim URL from UUPDump API"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Downloading winre.wim from: $WINRE_URL"
|
||||||
|
curl -L -o winre.wim "$WINRE_URL"
|
||||||
|
|
||||||
|
runHook postBuild
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
cp winre.wim "$out"
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
outputHashMode = "flat";
|
||||||
|
outputHashAlgo = "sha256";
|
||||||
|
outputHash = "sha256-jEBM0ZXEqe7HEjbpQdWNumWH5/KmCuGnIcIlFGN3W6g=";
|
||||||
|
|
||||||
|
SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt";
|
||||||
|
};
|
||||||
|
in
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "tcblaunch";
|
||||||
|
inherit version;
|
||||||
|
src = winre-wim;
|
||||||
|
|
||||||
|
nativeBuildInputs = [ p7zip ];
|
||||||
|
|
||||||
|
dontUnpack = true;
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
runHook preBuild
|
||||||
|
echo "Extracting tcblaunch.exe from winre.wim..."
|
||||||
|
mkdir -p extracted
|
||||||
|
7z e "$src" -oextracted 'Windows/System32/tcblaunch.exe' -y
|
||||||
|
if [[ ! -f "extracted/tcblaunch.exe" ]]; then
|
||||||
|
echo "ERROR: tcblaunch.exe was not extracted"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
ls -lh extracted/tcblaunch.exe
|
||||||
|
runHook postBuild
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
mkdir -p "$out/share/tcblaunch"
|
||||||
|
cp extracted/tcblaunch.exe "$out/share/tcblaunch/tcblaunch.exe"
|
||||||
|
chmod 644 "$out/share/tcblaunch/tcblaunch.exe"
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "Microsoft tcblaunch.exe for Qualcomm Secure Launch (required by slbounce)";
|
||||||
|
homepage = "https://github.com/TravMurav/slbounce";
|
||||||
|
license = lib.licenses.unfree;
|
||||||
|
platforms = [
|
||||||
|
"aarch64-linux"
|
||||||
|
"x86_64-linux"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -20,24 +20,28 @@ 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_26.011.9344.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";
|
# https://www.microsoft.com/en-us/download/details.aspx?id=106120
|
||||||
sha256 = "sha256-x75NsuZZr64XfGhjghIoiymdhhb/rM0iaV9EohwPbrs=";
|
url = "https://download.microsoft.com/download/b7ca2c3f-d320-4795-be0f-529a0117abb4/SurfaceLaptop7_ARM_Win11_${version}.msi";
|
||||||
|
hash = "sha256-ZkZgmKz5ihrRaarAioWoc0dx9XbmobGwTTyY/VLzahk=";
|
||||||
};
|
};
|
||||||
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 +52,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" ];
|
||||||
|
|||||||
@@ -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"
|
||||||
|
},
|
||||||
@@ -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