1 Commits

Author SHA1 Message Date
nikkuss 28c65e0571 init
cache / build (push) Failing after 12m35s
2025-11-14 13:23:29 +04:00
34 changed files with 1941 additions and 5305 deletions
-2
View File
@@ -1,8 +1,6 @@
name: cache
on:
push:
branches:
- main
jobs:
build:
runs-on: nix
-12
View File
@@ -1,12 +0,0 @@
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
-192
View File
@@ -1,192 +0,0 @@
{
"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"
}
}
-123
View File
@@ -1,123 +0,0 @@
# 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
View File
@@ -20,16 +20,16 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1764897201,
"narHash": "sha256-428X4sppU6k+tF2vxTy726E5BxbtoxoTRP+1FBbXqvM=",
"lastModified": 1762596750,
"narHash": "sha256-rXXuz51Bq7DHBlfIjN7jO8Bu3du5TV+3DSADBX7/9YQ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "9cfae7bb77c5058a4cfa8006d0caf82af8e980dc",
"rev": "b6a8526db03f735b89dd5ff348f53f752e7ddc8e",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable-small",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
+2 -5
View File
@@ -2,7 +2,7 @@
description = "Scuggo Pkgs";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable-small";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
};
@@ -68,12 +68,9 @@
# );
in
{
overlays = final: prev: flatPackages;
overlays.default = final: prev: flatPackages;
packages = flatPackages;
checks = lib.mapAttrs' (n: lib.nameValuePair "package-${n}") workingPackages;
devShells.default = pkgs.mkShellNoCC {
packages = [ pkgs.nvfetcher ];
};
}
)
)
-39
View File
@@ -1,39 +0,0 @@
[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"]
-4
View File
@@ -1,4 +0,0 @@
{ aria2 }:
aria2.overrideAttrs (oldAttrs: rec {
patches = oldAttrs.patches or [ ] ++ [ ./unlimited.patch ];
})
@@ -1,11 +0,0 @@
--- 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);
+1 -3
View File
@@ -4,10 +4,8 @@ python3.pkgs.buildPythonApplication rec {
name = "ath12k-tools";
pyproject = false;
inherit src;
sourceRoot = "${src.name}/tools/scripts/ath12k";
sourceRoot = "source/tools/scripts/ath12k";
installPhase = ''
ls -la
pwd
install -Dm755 "ath12k-bdencoder" "$out/bin/ath12k-bdencoder"
install -Dm755 "ath12k-check" "$out/bin/ath12k-check"
install -Dm755 "ath12k-fw-repo" "$out/bin/ath12k-fw-repo"
+7 -2
View File
@@ -2,11 +2,16 @@
lib,
newScope,
callPackage,
fetchFromGitHub,
...
}:
let
sources = callPackage ../../../../_sources/generated.nix { };
inherit (sources.ath-tools) src;
src = fetchFromGitHub {
owner = "qca";
repo = "qca-swiss-army-knife";
rev = "7c191e5530d32391105653b276ab587d2af9e02a";
hash = "sha256-iE4lqyr3zmLcgFnsrDvQ/CKUV15ijqmIbUIs9sgMECg=";
};
in
lib.makeScope newScope (self: {
ath12k-tools = self.callPackage ./ath12k-tools.nix { inherit src; };
+8 -6
View File
@@ -1,17 +1,19 @@
{
lib,
callPackage,
stdenv,
fetchFromGitHub,
...
}:
let
sources = callPackage ../../../../_sources/generated.nix { };
in
stdenv.mkDerivation (finalAttrs: {
pname = "base24-schemes";
version = "unstable-${sources.base24-schemes.date}";
version = "unstable-2025-04-18";
inherit (sources.base24-schemes) src;
src = fetchFromGitHub {
owner = "tinted-theming";
repo = "schemes";
rev = "28c26a621123ad4ebd5bbfb34ab39421c0144bdd";
hash = "sha256-Fg+rdGs5FAgfkYNCs74lnl8vkQmiZVdBsziyPhVqrlY=";
};
installPhase = ''
runHook preInstall
@@ -0,0 +1,5 @@
{
"version": "0.6.7",
"srcHash": "sha256-v32Q02ALWw6Upd4rrHGZH7Vt25+xSnKJCNGJob/irgM=",
"npmDepsHash": "sha256-oUAHkB4EPuo8YCxi9Y/Lc8cipjJQ05o51MpdUsCjiiQ="
}
@@ -0,0 +1,36 @@
{
lib,
buildNpmPackage,
fetchFromGitHub,
}:
let
info = lib.importJSON ./info.json;
in
buildNpmPackage {
pname = "claude-code-acp";
version = info.version;
src = fetchFromGitHub {
owner = "zed-industries";
repo = "claude-code-acp";
rev = "v${info.version}";
hash = info.srcHash;
};
npmDepsHash = info.npmDepsHash;
# The package uses TypeScript and builds before publishing
npmBuildScript = "build";
passthru = {
updateScript = ./update.mjs;
};
meta = {
description = "Use Claude Code from any ACP client such as Zed";
homepage = "https://github.com/zed-industries/claude-code-acp";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ ];
mainProgram = "claude-code-acp";
};
}
+77
View File
@@ -0,0 +1,77 @@
#! /usr/bin/env nix-shell
/*
#! nix-shell -i zx -p nix-prefetch-github -p zx
*/
import { readFileSync, writeFileSync } from "fs";
import { dirname, join } from "path";
import { fileURLToPath } from "url";
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
// GitHub API endpoint for latest release
const GITHUB_API = "https://api.github.com/repos/zed-industries/claude-code-acp/releases/latest";
// Read current info.json
const infoPath = join(__dirname, "info.json");
const currentInfo = JSON.parse(readFileSync(infoPath, "utf-8"));
console.log(`Current version: ${currentInfo.version}`);
// Fetch latest release from GitHub
console.log("Fetching latest release from GitHub...");
const response = await fetch(GITHUB_API);
const release = await response.json();
const latestVersion = release.tag_name.replace(/^v/, ""); // Remove 'v' prefix
console.log(`Latest version: ${latestVersion}`);
if (currentInfo.version === latestVersion) {
console.log("Already up to date!");
process.exit(0);
}
// Update version
currentInfo.version = latestVersion;
// Prefetch source hash
console.log("Prefetching source hash...");
const srcHashOutput = await $`nix-prefetch-github zed-industries claude-code-acp --rev v${latestVersion}`;
const srcPrefetch = JSON.parse(srcHashOutput.stdout);
currentInfo.srcHash = srcPrefetch.hash;
console.log(`Source hash: ${currentInfo.srcHash}`);
// Write temporary info.json to get npmDepsHash
writeFileSync(infoPath, JSON.stringify(currentInfo, null, 2) + "\n");
// Prefetch npm dependencies hash
console.log("Prefetching npm dependencies hash...");
try {
// This will fail with the expected hash in the error message
await $`nix build .#claude-code-acp`;
} catch (error) {
// Extract hash from error message
const errorOutput = error.stderr;
const hashMatch = errorOutput.match(/got:\s+(sha256-[A-Za-z0-9+/=]+)/);
if (hashMatch) {
currentInfo.npmDepsHash = hashMatch[1];
console.log(`npm deps hash: ${currentInfo.npmDepsHash}`);
} else {
console.error("Failed to extract npmDepsHash from build output");
console.error("You may need to update it manually by running:");
console.error(` nix-build -A claude-code-acp`);
console.error("and copying the hash from the error message");
}
}
// Write final info.json
writeFileSync(infoPath, JSON.stringify(currentInfo, null, 2) + "\n");
console.log("\nUpdate complete!");
console.log(`Version: ${currentInfo.version}`);
console.log(`Source hash: ${currentInfo.srcHash}`);
console.log(`npm deps hash: ${currentInfo.npmDepsHash}`);
@@ -0,0 +1,79 @@
{
stdenv,
rustPlatform,
nodejs,
pnpm,
fetchFromGitHub,
lib,
pkg-config,
moreutils,
cargo-tauri,
jq,
glib-networking,
openssl,
webkitgtk_4_1,
wrapGAppsHook4,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "deadlock-mod-manager";
version = "0.10.1";
VITE_API_URL = "https://api.deadlockmods.app";
VITE_WEB_URL = "https://deadlockmods.app";
src = fetchFromGitHub {
owner = "deadlock-mod-manager";
repo = "deadlock-mod-manager";
rev = "v${finalAttrs.version}";
hash = "sha256-/84P9ONG25Ia1BnRcbzQuJKt8HwstCzf0bkx1Xc9VgU=";
};
cargoDeps = rustPlatform.fetchCargoVendor {
src = finalAttrs.src;
sourceRoot = "${finalAttrs.src.name}/${finalAttrs.cargoRoot}";
hash = "sha256-wVsr6GwCGuuveTDT6oS1keejx+y+oSuE6dGAjvNRrdE=";
};
postPatch = ''
sed -i '/^[[:space:]]*app\.deep_link()\.register("deadlock-mod-manager")?;/d' ${finalAttrs.cargoRoot}/src-tauri/src/lib.rs
# sed -i 's/log::LevelFilter::Info/log::LevelFilter::Trace/' ${finalAttrs.cargoRoot}/src-tauri/src/lib.rs
sed -i '/\.manage(discord_rpc::DiscordState::new())/d' ${finalAttrs.cargoRoot}/src-tauri/src/lib.rs
sed -i '/\.plugin(tauri_plugin_updater::Builder::new()\.build())/d' ${finalAttrs.cargoRoot}/src-tauri/src/lib.rs
jq '.bundle.createUpdaterArtifacts = false | del(.plugins.updater)' ${finalAttrs.cargoRoot}/src-tauri/tauri.conf.json | sponge ${finalAttrs.cargoRoot}/src-tauri/tauri.conf.json
'';
nativeBuildInputs = [
cargo-tauri.hook
nodejs
# npmHooks.npmConfigHook
pkg-config
jq
moreutils
nodejs
pnpm.configHook
]
++ lib.optionals stdenv.hostPlatform.isLinux [ wrapGAppsHook4 ];
buildInputs = lib.optionals stdenv.hostPlatform.isLinux [
glib-networking
openssl
webkitgtk_4_1
];
# buildPhase = ''
# pnpm --filter desktop tauri build
# '';
pnpmDeps = pnpm.fetchDeps {
inherit (finalAttrs) pname version src;
fetcherVersion = 2;
hash = "sha256-FwY7jN9m6xNSlwpCb1GY8Rqr9w/kJIj7uIauOXTm7O0=";
};
doCheck = false;
cargoRoot = "apps/desktop";
# npmRoot = "src-vue";
buildAndTestSubdir = finalAttrs.cargoRoot;
})
+12 -12
View File
@@ -15,6 +15,7 @@
wrapGAppsHook4,
fetchFromGitHub,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "flightcore";
version = "3.2.0";
@@ -24,7 +25,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
rev = "v${finalAttrs.version}";
sha256 = "sha256-MFnW9cXFzqmdtC31r8cRcihV3NjGAC6+2/DnNVMheCI=";
};
patches = [./cargo-lock.patch];
patches = [ ./cargo-lock.patch ];
cargoDeps = rustPlatform.fetchCargoVendor {
src = finalAttrs.src;
sourceRoot = "${finalAttrs.src.name}/${finalAttrs.cargoRoot}";
@@ -41,19 +42,18 @@ rustPlatform.buildRustPackage (finalAttrs: {
hash = "sha256-QhUPkCBK1kcAF7gByFxlg8Ca9PLF3evCl0QYEPP/Q2c=";
};
nativeBuildInputs =
[
cargo-tauri.hook
nativeBuildInputs = [
cargo-tauri.hook
nodejs
npmHooks.npmConfigHook
nodejs
npmHooks.npmConfigHook
pkg-config
pkg-config
jq
moreutils
]
++ lib.optionals stdenv.hostPlatform.isLinux [wrapGAppsHook4];
jq
moreutils
]
++ lib.optionals stdenv.hostPlatform.isLinux [ wrapGAppsHook4 ];
buildInputs = lib.optionals stdenv.hostPlatform.isLinux [
glib-networking
@@ -67,7 +67,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
buildAndTestSubdir = finalAttrs.cargoRoot;
meta = {
platforms = ["x86_64-linux"];
platforms = [ "x86_64-linux" ];
description = "FlightCore A Northstar installer, updater, and mod-manager";
};
})
+122
View File
@@ -0,0 +1,122 @@
#! /usr/bin/env nix-shell
#! nix-shell -i python -p python3
"""
This is a heavily simplified variant of electron's update.py
for use in ./update.mjs and should not be called manually.
It resolves chromium's DEPS file recursively when called with
a working depot_tools checkout and a ref to fetch and prints
the result as JSON to stdout.
"""
import base64
import json
from typing import Optional
from urllib.request import urlopen
import sys
if len(sys.argv) != 3:
print("""This internal script has been called with the wrong amount of parameters.
This script is not supposed to be called manually.
Refer to ./update.mjs instead.""")
exit(1)
_, depot_tools_checkout, chromium_version = sys.argv
sys.path.append(depot_tools_checkout)
import gclient_eval
import gclient_utils
class Repo:
fetcher: str
args: dict
def __init__(self) -> None:
self.deps: dict = {}
self.hash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
def get_deps(self, repo_vars: dict, path: str) -> None:
print(
"evaluating " + json.dumps(self, default=vars, sort_keys=True),
file=sys.stderr,
)
deps_file = self.get_file("DEPS")
evaluated = gclient_eval.Parse(deps_file, vars_override=repo_vars, filename="DEPS")
repo_vars = dict(evaluated.get("vars", {})) | repo_vars
prefix = f"{path}/" if evaluated.get("use_relative_paths", False) else ""
self.deps = {
prefix + dep_name: repo_from_dep(dep)
for dep_name, dep in evaluated.get("deps", {}).items()
if (
gclient_eval.EvaluateCondition(dep["condition"], repo_vars)
if "condition" in dep
else True
)
and repo_from_dep(dep) != None
}
for key in evaluated.get("recursedeps", []):
dep_path = prefix + key
if dep_path in self.deps and dep_path != "src/third_party/squirrel.mac":
self.deps[dep_path].get_deps(repo_vars, dep_path)
def flatten_repr(self) -> dict:
return {"fetcher": self.fetcher, "hash": self.hash, **self.args}
def flatten(self, path: str) -> dict:
out = {path: self.flatten_repr()}
for dep_path, dep in self.deps.items():
out |= dep.flatten(dep_path)
return out
def get_file(self, filepath: str) -> str:
raise NotImplementedError
class GitilesRepo(Repo):
def __init__(self, url: str, rev: str) -> None:
super().__init__()
self.fetcher = "fetchFromGitiles"
self.args = {
"url": url,
"rev": rev,
}
def get_file(self, filepath: str) -> str:
return base64.b64decode(
urlopen(
f"{self.args['url']}/+/{self.args['rev']}/{filepath}?format=TEXT"
).read()
).decode("utf-8")
def repo_from_dep(dep: dict) -> Optional[Repo]:
if "url" in dep:
url, rev = gclient_utils.SplitUrlRevision(dep["url"])
return GitilesRepo(url, rev)
else:
# Not a git dependency; skip
return None
chromium = GitilesRepo("https://chromium.googlesource.com/chromium/src.git", chromium_version)
chromium.get_deps(
{
**{
f"checkout_{platform}": platform == "linux" or platform == "x64" or platform == "arm64" or platform == "arm"
for platform in ["ios", "chromeos", "android", "mac", "win", "linux"]
},
**{
f"checkout_{arch}": True
for arch in ["x64", "arm64", "arm", "x86", "mips", "mips64", "ppc", "riscv64"]
},
},
"",
)
print(json.dumps(chromium.flatten("src")))
@@ -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
'';
}
+814
View File
@@ -0,0 +1,814 @@
{
"ungoogled-chromium": {
"version": "142.0.7444.134",
"deps": {
"depot_tools": {
"rev": "675a3a9ccd7cf9367bb4caa58c30f08b56d45ef5",
"hash": "sha256-oL/WjK90HWqtyE0sJhDUp3UxlC8jr4dZfp+Q80xu3sM="
},
"gn": {
"version": "0-unstable-2025-09-18",
"rev": "81b24e01531ecf0eff12ec9359a555ec3944ec4e",
"hash": "sha256-sm5GWbkm3ua7EkCWTuY4TG6EXKe3asXTrH1APnNARJQ="
},
"ungoogled-patches": {
"rev": "0.6.4",
"hash": "sha256-4ZqIQGsp61PdqWbL9qNg9mQ1GdG0ds3vMt7SWzItGZQ="
},
"npmHash": "sha256-i1eQ4YlrWSgY522OlFtGDDPmxE2zd1hDM03AzR8RafE="
},
"DEPS": {
"src": {
"url": "https://chromium.googlesource.com/chromium/src.git",
"rev": "b6965f826881a60c51151cfc0a0175966a0a4e81",
"hash": "sha256-NTBQrGihsT7kuY/Mac5s4oH1xEn3CFEAR6eOEvZwmYs=",
"recompress": true
},
"src/third_party/clang-format/script": {
"url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/clang/tools/clang-format.git",
"rev": "37f6e68a107df43b7d7e044fd36a13cbae3413f2",
"hash": "sha256-d9uweklBffiuCWEb03ti1eFLnMac2qRtvggzXY1n/RU="
},
"src/third_party/compiler-rt/src": {
"url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/compiler-rt.git",
"rev": "05f2a5dd0d1386777ae9d7fac9da776f82e7e0f2",
"hash": "sha256-XTPhIXHzTW4EjyER/49mKJVDQQVNGuyLu2OBAxSt+CQ="
},
"src/third_party/libc++/src": {
"url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libcxx.git",
"rev": "b77132b512d5411f8393fd3decb3abaeaf1d3ec8",
"hash": "sha256-IemCFOw1X+Kcna6cuj9e29FUhitqvVGn1DeMCShkbOs="
},
"src/third_party/libc++abi/src": {
"url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libcxxabi.git",
"rev": "864f61dc9253d56586ada34c388278565ef513f6",
"hash": "sha256-7TUY05CW5OCyd1C1oq69rptr1RkvOMS+1CAJc7yKRFQ="
},
"src/third_party/libunwind/src": {
"url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libunwind.git",
"rev": "322be580a5a193a921c349a15747eeeb9a716ad1",
"hash": "sha256-veSxr/ICnBsdP+3vWjCbPxduHiEzbT0DUdwfo0xcM30="
},
"src/third_party/llvm-libc/src": {
"url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libc.git",
"rev": "0c61a55402c6a0d9d6ca2aeb3c6a2613a8bc8c55",
"hash": "sha256-U/ToyQwIzZlaPic6LAnR17ySrZ6eGhReJ6iKVFrIHPg="
},
"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": "3913dbd6fdde06b914d0e1119fcc884f8115e4f8",
"hash": "sha256-+2OBUpLLVPB/fDlF/9mEwTsvH2Una3ZYKUJY06nZauo="
},
"src/media/cdm/api": {
"url": "https://chromium.googlesource.com/chromium/cdm.git",
"rev": "a4cbc4325e6de42ead733f2af43c08292d0e65a8",
"hash": "sha256-voZaq/OiP5/QSSZmBx1ifriBc6HQ9+m4pUz0o9+O9x8="
},
"src/net/third_party/quiche/src": {
"url": "https://quiche.googlesource.com/quiche.git",
"rev": "c0df0d316bd7e4ddf44e5ba094b5c5b061d94b0c",
"hash": "sha256-ACXkivQ4tqePgNIg2hpl4DQFa8n0CUkCOqPlgh56oLs="
},
"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": "e5b338502c7c65bd38d4695bc557938ca4cc3aa7",
"hash": "sha256-FWPyOxpsXvFtOD6OJ950NQUBcpVIeYvjuAKaqnER6A0="
},
"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": "c67cffddd65aba724950e062343fa1cc89560b33",
"hash": "sha256-VYROUPvcpkV+skw3RKXoCpB+4xVA2Qem+15YKjV7pMg="
},
"src/third_party/anonymous_tokens/src": {
"url": "https://chromium.googlesource.com/external/github.com/google/anonymous-tokens.git",
"rev": "50e04fb27eacd49a5e2bfde5977ac689e13ebeeb",
"hash": "sha256-jwfszvnWRtTmzPm5x/lyceX1Y0G0hyIATcKlYkKj/SY="
},
"src/third_party/readability/src": {
"url": "https://chromium.googlesource.com/external/github.com/mozilla/readability.git",
"rev": "1f0ec42686c89a4a1c71789849f7ffde349ab197",
"hash": "sha256-liNoIZreSx/RgL5/oSKyzOuqChAgDwTtViNq0KiY0R0="
},
"src/third_party/content_analysis_sdk/src": {
"url": "https://chromium.googlesource.com/external/github.com/chromium/content_analysis_sdk.git",
"rev": "9a408736204513e0e95dd2ab3c08de0d95963efc",
"hash": "sha256-f5Jmk1MiGjaRdLun+v/GKVl8Yv9hOZMTQUSxgiJalcY="
},
"src/third_party/dav1d/libdav1d": {
"url": "https://chromium.googlesource.com/external/github.com/videolan/dav1d.git",
"rev": "af5cf2b1e7f03d6f6de84477e1ca8eed1f3eb03d",
"hash": "sha256-dPVDZ4SyrHWsRWERUl6UKbbdUG/5dC/UTte6sItMYxg="
},
"src/third_party/dawn": {
"url": "https://dawn.googlesource.com/dawn.git",
"rev": "95f9c2b375395cc82941babdf1e9f0cf60a32831",
"hash": "sha256-BFJsVt7hkSyyPQiX7QCN7Fu6CgTF/2xwAQbWCkJVq6M="
},
"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": "2b58d6d865832f7146d6e22e2106e562458bbd0a",
"hash": "sha256-kcmuSCdAAzyQrg33b3dlkUErd0x5TDZkE8iXMEYW8wo="
},
"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": "18f1cc77dea7254258eeee21839d1c249b506576",
"hash": "sha256-lZgUbs1+6+tLeHmJTIWMbpT6oSVzC3A9/J3vKONgxSs="
},
"src/third_party/dawn/third_party/webgpu-headers/src": {
"url": "https://chromium.googlesource.com/external/github.com/webgpu-native/webgpu-headers",
"rev": "53a87a3d8cb4c32ec026978ce003020741df6f53",
"hash": "sha256-V/JhZyjLNSElllXbLduqyNjJqjrxB4SwwPpRHIcfIis="
},
"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": "761305ec3b33abf30e08d50eb829e19a802581cc",
"hash": "sha256-cH8s1gP6kCcojAAfTt5iQCVqiAaSooNk4BdaILujM3w="
},
"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": "91f3df0a20f6d3dd3e2f749b4a2730b68c3d585e",
"hash": "sha256-rhUF9fuWbiAkaGbHnhANZxCYEhkkoMQoiYzn1EfR270="
},
"src/third_party/breakpad/breakpad": {
"url": "https://chromium.googlesource.com/breakpad/breakpad.git",
"rev": "a1220f673dc44632e821bd1a217089e5a159a203",
"hash": "sha256-jGdQyM3+p3qt+Hjt44Wpg7XKiUt7kz9Lv1xRG7vp+dM="
},
"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": "04c85a1d0e324464c6be4b3d193b47cb6177d03a",
"hash": "sha256-Is8yDmTyNyseTBPIDwIlhRthqfkFPgQIvu3b6u5c0m0="
},
"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": "877328f188a3c7d1fa855871a278eb48d530c4c0",
"hash": "sha256-JW83AgI1cWv4TSpXNe9sv/hNYAA7MOdUeTHY8+0lHgc="
},
"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": "c33ff08e2b27ddaed22c8799fefd3a4b7d3c49a9",
"hash": "sha256-N8/0tVMBi6yFe9HkR5wxDJ1+QAP1IV1Bz99Il3RZNFU="
},
"src/third_party/crossbench": {
"url": "https://chromium.googlesource.com/crossbench.git",
"rev": "f6e9d3627685e3bcb82d5a24c1f075b8dd0d881c",
"hash": "sha256-JbgzTTFEFuA8ZyRLih3T/Fa3RhcOK4fi+9RuzZioiPI="
},
"src/third_party/crossbench-web-tests": {
"url": "https://chromium.googlesource.com/chromium/web-tests.git",
"rev": "3c76c8201f0732fe9781742229ab8ac43bf90cbf",
"hash": "sha256-yJmi1IpUiKhdoHAXyazkpm+Ezuc4Hp8pOIBntG5hN+U="
},
"src/third_party/depot_tools": {
"url": "https://chromium.googlesource.com/chromium/tools/depot_tools.git",
"rev": "675a3a9ccd7cf9367bb4caa58c30f08b56d45ef5",
"hash": "sha256-oL/WjK90HWqtyE0sJhDUp3UxlC8jr4dZfp+Q80xu3sM="
},
"src/third_party/devtools-frontend/src": {
"url": "https://chromium.googlesource.com/devtools/devtools-frontend",
"rev": "f063edc91e3610a60fb9d486ae8694f2a11fcd17",
"hash": "sha256-qiucde85rKA7TefveIa++sOF+MzT56pe8pHUUCj9Zeo="
},
"src/third_party/dom_distiller_js/dist": {
"url": "https://chromium.googlesource.com/chromium/dom-distiller/dist.git",
"rev": "199de96b345ada7c6e7e6ba3d2fa7a6911b8767d",
"hash": "sha256-yuEBD2XQlV3FGI/i7lTmJbCqzeBiuG1Qow8wvsppGJw="
},
"src/third_party/dragonbox/src": {
"url": "https://chromium.googlesource.com/external/github.com/jk-jeon/dragonbox.git",
"rev": "6c7c925b571d54486b9ffae8d9d18a822801cbda",
"hash": "sha256-AOniXMPgwKpkJqivRd+GazEnhdw53FzhxKqG+GdU+cc="
},
"src/third_party/eigen3/src": {
"url": "https://chromium.googlesource.com/external/gitlab.com/libeigen/eigen.git",
"rev": "430e35fbd15d3c946d2d2ba19ec41c16ba217cb3",
"hash": "sha256-ZXDzAuvTu46YhieLIQ7MSQ0os+v2RF+KBtFuKU9fCWE="
},
"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": "9e751092c9498b84bbb77e2e0689ef9f50fe608f",
"hash": "sha256-ZeFzrCE9LkDcp3VTMJkm5ypX29RGZCyZkp3tEr7yFKU="
},
"src/third_party/flac": {
"url": "https://chromium.googlesource.com/chromium/deps/flac.git",
"rev": "807e251d9f8c5dd6059e547931e9c6a4251967af",
"hash": "sha256-Y5TXyJ8lVh8TaVC5S4BVxOmFxySBzPbJYEe8YJS6ZR4="
},
"src/third_party/flatbuffers/src": {
"url": "https://chromium.googlesource.com/external/github.com/google/flatbuffers.git",
"rev": "1c514626e83c20fffa8557e75641848e1e15cd5e",
"hash": "sha256-u5AVjbep3iWwGNXLrkPJUnF8SbmIXlHOYoy3NIlUl/E="
},
"src/third_party/fontconfig/src": {
"url": "https://chromium.googlesource.com/external/fontconfig.git",
"rev": "f0ed9c3f43161d3555f6f7a5234b22fe7ca60727",
"hash": "sha256-2h0dWn7MxAX+4o2tMZLyjRFAES+FTMaGaf8M7ySkSV8="
},
"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": "d3668e00da732654b50e4e81f982544ed6e26390",
"hash": "sha256-b74O5i4xhHq8y0qepP8Wup2nuj9LFzBX7ahMCCVhc98="
},
"src/third_party/fxdiv/src": {
"url": "https://chromium.googlesource.com/external/github.com/Maratyszcza/FXdiv.git",
"rev": "63058eff77e11aa15bf531df5dd34395ec3017c8",
"hash": "sha256-LjX5kivfHbqCIA5pF9qUvswG1gjOFo3CMpX0VR+Cn38="
},
"src/third_party/harfbuzz-ng/src": {
"url": "https://chromium.googlesource.com/external/github.com/harfbuzz/harfbuzz.git",
"rev": "7d936359a27abb2d7cb14ecc102463bb15c11843",
"hash": "sha256-gUUXBd2/di6MYhUzo0QkGQvRY6KLcy7qdDlSClnmnL8="
},
"src/third_party/ink/src": {
"url": "https://chromium.googlesource.com/external/github.com/google/ink.git",
"rev": "4e6081ad7052f97df7d77e1d87cea2d70c18a47b",
"hash": "sha256-SVwZWhM63iN2ajTMldgug0mfJV1rdvxTZwj/zyLe4WA="
},
"src/third_party/ink_stroke_modeler/src": {
"url": "https://chromium.googlesource.com/external/github.com/google/ink-stroke-modeler.git",
"rev": "fe79520c9ad7d2d445d26d3c59fda6fc54eb4d5c",
"hash": "sha256-4iXoBgCCbWCqGbpchiAYQhKBK9rO1Xb6wP98iMd06cY="
},
"src/third_party/instrumented_libs": {
"url": "https://chromium.googlesource.com/chromium/third_party/instrumented_libraries.git",
"rev": "69015643b3f68dbd438c010439c59adc52cac808",
"hash": "sha256-8kokdsnn5jD9KgM/6g0NuITBbKkGXWEM4BMr1nCrfdU="
},
"src/third_party/emoji-segmenter/src": {
"url": "https://chromium.googlesource.com/external/github.com/google/emoji-segmenter.git",
"rev": "955936be8b391e00835257059607d7c5b72ce744",
"hash": "sha256-KdQdKBBipEBRT8UmNGao6yCB4m2CU8/SrMVvcXlb5qE="
},
"src/third_party/oak/src": {
"url": "https://chromium.googlesource.com/external/github.com/project-oak/oak.git",
"rev": "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": "c05bf9be660cf170d7c26bd06bb42b3322180e58",
"hash": "sha256-BgTfWmbcMvJB1KewJpRcMtbOd2FVuJ+fi1zAXBXfkrg="
},
"src/third_party/googletest/src": {
"url": "https://chromium.googlesource.com/external/github.com/google/googletest.git",
"rev": "244cec869d12e53378fa0efb610cd4c32a454ec8",
"hash": "sha256-A3kDQbt9ITaxCjl/tJtwySsPUyH+NNb8erdjBzq81o8="
},
"src/third_party/hunspell_dictionaries": {
"url": "https://chromium.googlesource.com/chromium/deps/hunspell_dictionaries.git",
"rev": "41cdffd71c9948f63c7ad36e1fb0ff519aa7a37e",
"hash": "sha256-67mvpJRFFa9eMfyqFMURlbxOaTJBICnk+gl0b0mEHl8="
},
"src/third_party/icu": {
"url": "https://chromium.googlesource.com/chromium/deps/icu.git",
"rev": "1b2e3e8a421efae36141a7b932b41e315b089af8",
"hash": "sha256-k3z31DhDPoqjcZdUL4vjyUMVpUiNk44+7rCMTDVPH8Q="
},
"src/third_party/jsoncpp/source": {
"url": "https://chromium.googlesource.com/external/github.com/open-source-parsers/jsoncpp.git",
"rev": "42e892d96e47b1f6e29844cc705e148ec4856448",
"hash": "sha256-bSLNcoYBz3QCt5VuTR056V9mU2PmBuYBa0W6hFg2m8Q="
},
"src/third_party/leveldatabase/src": {
"url": "https://chromium.googlesource.com/external/leveldb.git",
"rev": "4ee78d7ea98330f7d7599c42576ca99e3c6ff9c5",
"hash": "sha256-ANtMVRZmW6iOjDVn2y15ak2fTagFTTaz1Se6flUHL8w="
},
"src/third_party/libFuzzer/src": {
"url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/compiler-rt/lib/fuzzer.git",
"rev": "bea408a6e01f0f7e6c82a43121fe3af4506c932e",
"hash": "sha256-TDi1OvYClJKmEDikanKVTmy8uxUXJ95nuVKo5u+uFPM="
},
"src/third_party/fuzztest/src": {
"url": "https://chromium.googlesource.com/external/github.com/google/fuzztest.git",
"rev": "e101ca021a40733d0fa76a3bd9b49b5f76da4f8a",
"hash": "sha256-gMIDf/Alh9BCk0Gm0m+mmhHoKreHCiN7/WOomcMbS/k="
},
"src/third_party/domato/src": {
"url": "https://chromium.googlesource.com/external/github.com/googleprojectzero/domato.git",
"rev": "053714bccbda79cf76dac3fee48ab2b27f21925e",
"hash": "sha256-fYxoA0fxKe9U23j+Jp0MWj4m7RfsRpM0XjF6/yOhX1I="
},
"src/third_party/libaddressinput/src": {
"url": "https://chromium.googlesource.com/external/libaddressinput.git",
"rev": "2610f7b1043d6784ada41392fc9392d1ea09ea07",
"hash": "sha256-6h4/DQUBoBtuGfbaTL5Te1Z+24qjTaBuIydcTV18j80="
},
"src/third_party/libaom/source/libaom": {
"url": "https://aomedia.googlesource.com/aom.git",
"rev": "2a70ad7bee390757eaa83aff12f310ba53915e9f",
"hash": "sha256-RWm/xaX3WGgCy6o4lM5g6j0vS6mc6ZbDAhRw6OQgJlU="
},
"src/third_party/crabbyavif/src": {
"url": "https://chromium.googlesource.com/external/github.com/webmproject/CrabbyAvif.git",
"rev": "3ba05863e84fd3acb4f4af2b4545221b317a2e55",
"hash": "sha256-HUGkuQWfUGsE6crsluI7l5H2DYalruoDKqBjbVfE7BM="
},
"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": "b400dd340af3457890ec7b4a903fefb02fcf2dc6",
"hash": "sha256-jn6Twi+fc/qKjsqLqkrWxhQ677wY3rSCx3JfWCGhxr0="
},
"src/third_party/jetstream/v2.2": {
"url": "https://chromium.googlesource.com/external/github.com/WebKit/JetStream.git",
"rev": "2145cedef4ca2777b792cb0059d3400ee2a6153c",
"hash": "sha256-zucA2tqNOsvjhwYQKZ5bFUC73ZF/Fu7KpBflSelvixw="
},
"src/third_party/speedometer/main": {
"url": "https://chromium.googlesource.com/external/github.com/WebKit/Speedometer.git",
"rev": "06449bdc34789a7459393405dd777e02d78a3743",
"hash": "sha256-3TlVewJ9C3MXvlIudzLHshQZOCAmUkMYsZzAazSbMLY="
},
"src/third_party/speedometer/v3.1": {
"url": "https://chromium.googlesource.com/external/github.com/WebKit/Speedometer.git",
"rev": "1386415be8fef2f6b6bbdbe1828872471c5d802a",
"hash": "sha256-G89mrrgRaANT1vqzhKPQKemHbz56YwR+oku7rlRoCHw="
},
"src/third_party/speedometer/v3.0": {
"url": "https://chromium.googlesource.com/external/github.com/WebKit/Speedometer.git",
"rev": "8d67f28d0281ac4330f283495b7f48286654ad7d",
"hash": "sha256-qMQ4naX+4uUu3vtzzinjkhxX9/dNoTwj6vWCu4FdQmU="
},
"src/third_party/speedometer/v2.1": {
"url": "https://chromium.googlesource.com/external/github.com/WebKit/Speedometer.git",
"rev": "8bf7946e39e47c875c00767177197aea5727e84a",
"hash": "sha256-0z5tZlz32fYh9I1ALqfLm2WWO8HiRBwt0hcmgKQhaeM="
},
"src/third_party/speedometer/v2.0": {
"url": "https://chromium.googlesource.com/external/github.com/WebKit/Speedometer.git",
"rev": "732af0dfe867f8815e662ac637357e55f285dbbb",
"hash": "sha256-p7WUS8gZUaS+LOm7pNmRkwgxjx+V8R6yy7bbaEHaIs4="
},
"src/third_party/ukey2/src": {
"url": "https://chromium.googlesource.com/external/github.com/google/ukey2.git",
"rev": "0275885d8e6038c39b8a8ca55e75d1d4d1727f47",
"hash": "sha256-aaLs6ZS+CdBlCJ6ZhsmdAPFxiBIij6oufsDcNeRSV1E="
},
"src/third_party/cros-components/src": {
"url": "https://chromium.googlesource.com/external/google3/cros_components.git",
"rev": "7ccdbf60606671c2c057628125908fbfef9bd0c8",
"hash": "sha256-g7LzBd2V21AaLdSdCw65WGYvKfrbtpRXsYc+3ILdiKs="
},
"src/third_party/libdrm/src": {
"url": "https://chromium.googlesource.com/chromiumos/third_party/libdrm.git",
"rev": "ad78bb591d02162d3b90890aa4d0a238b2a37cde",
"hash": "sha256-woSYEDUfcEBpYOYnli13wLMt754A7KnUbmTEcFQdFGw="
},
"src/third_party/expat/src": {
"url": "https://chromium.googlesource.com/external/github.com/libexpat/libexpat.git",
"rev": "69d6c054c1bd5258c2a13405a7f5628c72c177c2",
"hash": "sha256-qe8O7otL6YcDDBx2DS/+c5mWIS8Rf8RQXVtLFMIAeyk="
},
"src/third_party/libipp/libipp": {
"url": "https://chromium.googlesource.com/chromiumos/platform2/libipp.git",
"rev": "2209bb84a8e122dab7c02fe66cc61a7b42873d7f",
"hash": "sha256-gxU92lHLd6uxO8T3QWhZIK0hGy97cki705DV0VimCPY="
},
"src/third_party/libjpeg_turbo": {
"url": "https://chromium.googlesource.com/chromium/deps/libjpeg_turbo.git",
"rev": "e14cbfaa85529d47f9f55b0f104a579c1061f9ad",
"hash": "sha256-Ig+tmprZDvlf/M72/DTar2pbxat9ZElgSqdXdoM0lPs="
},
"src/third_party/liblouis/src": {
"url": "https://chromium.googlesource.com/external/liblouis-github.git",
"rev": "9700847afb92cb35969bdfcbbfbbb74b9c7b3376",
"hash": "sha256-EI/uaHXe0NlqdEw764q0SjerThYEVLRogUlmrsZwXnY="
},
"src/third_party/libphonenumber/dist": {
"url": "https://chromium.googlesource.com/external/libphonenumber.git",
"rev": "9d46308f313f2bf8dbce1dfd4f364633ca869ca7",
"hash": "sha256-ZbuDrZEUVp/ekjUP8WO/FsjAomRjeDBptT4nQZvTVi4="
},
"src/third_party/libprotobuf-mutator/src": {
"url": "https://chromium.googlesource.com/external/github.com/google/libprotobuf-mutator.git",
"rev": "7bf98f78a30b067e22420ff699348f084f802e12",
"hash": "sha256-EaEC6R7SzqLw4QjEcWXFXhZc84lNBp6RSa9izjGnWKE="
},
"src/third_party/libsrtp": {
"url": "https://chromium.googlesource.com/chromium/deps/libsrtp.git",
"rev": "a52756acb1c5e133089c798736dd171567df11f5",
"hash": "sha256-bkG1+ss+1a2rCHGwZjhvf5UaNVbPPZJt9HZSIPBKGwM="
},
"src/third_party/libsync/src": {
"url": "https://chromium.googlesource.com/aosp/platform/system/core/libsync.git",
"rev": "f4f4387b6bf2387efbcfd1453af4892e8982faf6",
"hash": "sha256-Mkl6C1LxF3RYLwYbxiSfoQPt8QKFwQWj/Ati2sNJ32E="
},
"src/third_party/libva-fake-driver/src": {
"url": "https://chromium.googlesource.com/chromiumos/platform/libva-fake-driver.git",
"rev": "a9bcab9cd6b15d4e3634ca44d5e5f7652c612194",
"hash": "sha256-em/8rNqwv6szlxyji7mnYr3nObSW/x3OzEEnkiLuqpI="
},
"src/third_party/libvpx/source/libvpx": {
"url": "https://chromium.googlesource.com/webm/libvpx.git",
"rev": "8d00aca60b951444582b1373e4e47f0ca6e0871c",
"hash": "sha256-44k28SJ7AbcABv1YV1tICtJ1II4AXTuvcAELSTUht6c="
},
"src/third_party/libwebm/source": {
"url": "https://chromium.googlesource.com/webm/libwebm.git",
"rev": "f2a982d748b80586ae53b89a2e6ebbc305848b8c",
"hash": "sha256-SxDGt7nPVkSxwRF/lMmcch1h+C2Dyh6GZUXoZjnXWb4="
},
"src/third_party/libwebp/src": {
"url": "https://chromium.googlesource.com/webm/libwebp.git",
"rev": "b0e8039062eedbcb20ebb1bad62bfeaee2b94ec6",
"hash": "sha256-yKVLUxzIK5ybYM/22fVaQlqSCG5Hx4Notxj+3kI2LCg="
},
"src/third_party/libyuv": {
"url": "https://chromium.googlesource.com/libyuv/libyuv.git",
"rev": "94417b9d213364905ce849c25719b819b8dbbaaa",
"hash": "sha256-8sxr0TMQaCzBqQ39FADqWTATcmQlL6TOV3nFM/YySyY="
},
"src/third_party/lss": {
"url": "https://chromium.googlesource.com/linux-syscall-support.git",
"rev": "ed31caa60f20a4f6569883b2d752ef7522de51e0",
"hash": "sha256-rhp4EcZYdgSfu9cqn+zxxGx6v2IW8uX8V+iA0UfZhFY="
},
"src/third_party/material_color_utilities/src": {
"url": "https://chromium.googlesource.com/external/github.com/material-foundation/material-color-utilities.git",
"rev": "13434b50dcb64a482cc91191f8cf6151d90f5465",
"hash": "sha256-Y85XU+z9W6tvmDNHJ/dXQnUKXvvDkO3nH/kUJRLqbc4="
},
"src/third_party/minigbm/src": {
"url": "https://chromium.googlesource.com/chromiumos/platform/minigbm.git",
"rev": "3018207f4d89395cc271278fb9a6558b660885f5",
"hash": "sha256-9HwvjTETerbQ7YKXH9kUB2eWa8PxGWMAJfx1jAluhrs="
},
"src/third_party/nasm": {
"url": "https://chromium.googlesource.com/chromium/deps/nasm.git",
"rev": "e2c93c34982b286b27ce8b56dd7159e0b90869a2",
"hash": "sha256-TxzAcp+CoKnnM0lCGjm+L3h6M30vYHjM07vW6zUe/vY="
},
"src/third_party/neon_2_sse/src": {
"url": "https://chromium.googlesource.com/external/github.com/intel/ARM_NEON_2_x86_SSE.git",
"rev": "eb8b80b28f956275e291ea04a7beb5ed8289e872",
"hash": "sha256-AkDAHOPO5NdXXk0hETS5D67mzw0RVXwPDDKqM0XXo5g="
},
"src/third_party/openh264/src": {
"url": "https://chromium.googlesource.com/external/github.com/cisco/openh264",
"rev": "652bdb7719f30b52b08e506645a7322ff1b2cc6f",
"hash": "sha256-tf0lnxATCkoq+xRti6gK6J47HwioAYWnpEsLGSA5Xdg="
},
"src/third_party/openscreen/src": {
"url": "https://chromium.googlesource.com/openscreen",
"rev": "4654d7968ac1a1e825a84bd4d85acadd7993c49a",
"hash": "sha256-gg9PtdIuCN3eQJhutbBz411zIsyCpagb5BARGdCWLMA="
},
"src/third_party/openscreen/src/buildtools": {
"url": "https://chromium.googlesource.com/chromium/src/buildtools",
"rev": "077a66f30fcf281b066fafb6dfc60818c238efb6",
"hash": "sha256-WnbgaCzZ/BJli6M60kP9e4mVPFDx0yu3eCac5wmQ7iM="
},
"src/third_party/openscreen/src/third_party/tinycbor/src": {
"url": "https://chromium.googlesource.com/external/github.com/intel/tinycbor.git",
"rev": "d393c16f3eb30d0c47e6f9d92db62272f0ec4dc7",
"hash": "sha256-fMKBFUSKmODQyg4hKIa1hwnEKIV6WBbY1Gb8DOSnaHA="
},
"src/third_party/pdfium": {
"url": "https://pdfium.googlesource.com/pdfium.git",
"rev": "e95c6ead2f97716c98526ec42d5fd9ebb50e6e23",
"hash": "sha256-tZXu+3w+CplXbP8TgRetyl1Q2gacAqWtP9uJ6XZchHk="
},
"src/third_party/perfetto": {
"url": "https://chromium.googlesource.com/external/github.com/google/perfetto.git",
"rev": "d5bbee7afdf259af4212929ccbff467dd5349953",
"hash": "sha256-FfOCX3Z7aKGkMAf8hK5itt7+8N5kBRd9NJGjOLiUjQs="
},
"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": "f5a07eddbf4be8f23e29e60a2ccf66b78b71f119",
"hash": "sha256-M9uMq/ZkvrWNep+CIFzx6xLfepLkfY8tjgL7ed2vjU0="
},
"src/third_party/pyelftools": {
"url": "https://chromium.googlesource.com/chromiumos/third_party/pyelftools.git",
"rev": "19b3e610c86fcadb837d252c794cb5e8008826ae",
"hash": "sha256-I/7p3IEvfP/gkes4kx18PvWwhAKilQKb67GXoW4zFB4="
},
"src/third_party/quic_trace/src": {
"url": "https://chromium.googlesource.com/external/github.com/google/quic-trace.git",
"rev": "ed3deb8a056b260c59f2fd42af6dfa3db48a8cad",
"hash": "sha256-vbXqddDgwqetU0bDYn3qo7OBqT5eG926/MbA1hKkCT0="
},
"src/third_party/pywebsocket3/src": {
"url": "https://chromium.googlesource.com/external/github.com/GoogleChromeLabs/pywebsocket3.git",
"rev": "50602a14f1b6da17e0b619833a13addc6ea78bc2",
"hash": "sha256-WEqqu2/7fLqcf/2/IcD7/FewRSZ6jTgVlVBvnihthYQ="
},
"src/third_party/re2/src": {
"url": "https://chromium.googlesource.com/external/github.com/google/re2.git",
"rev": "cd7b2823a8375371f7efe6dae17837c9ab407693",
"hash": "sha256-YXYRgSWUrX+tkaMiRpaCFrrP3vyhzGIP9ApsxWX08VQ="
},
"src/third_party/ruy/src": {
"url": "https://chromium.googlesource.com/external/github.com/google/ruy.git",
"rev": "9940fbf1e0c0863907e77e0600b99bb3e2bc2b9f",
"hash": "sha256-fV0El2ZgjxLqstKVN35SL72+diHNK0FkBmG5UwVZFrk="
},
"src/third_party/search_engines_data/resources": {
"url": "https://chromium.googlesource.com/external/search_engines_data.git",
"rev": "94eb2a9a225078cb5f40e82fd890bce387c8121a",
"hash": "sha256-WWkOOnOI3ohPuO+M9/x53hyDO11P6E6Z6ZZvKmQEyjI="
},
"src/third_party/skia": {
"url": "https://skia.googlesource.com/skia.git",
"rev": "f4ed99d2443962782cf5f8b4dd27179f131e7cbe",
"hash": "sha256-7dpaRB/du2Y13BV3K7/Zx6lQwMtgtF17oKPoBtyEc64="
},
"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": "5f1c459a11bb4899301e89609cbf7547f9f31e20",
"hash": "sha256-raNaqoF6CYdBowrQOGRZk6vDdpr/2xAXR2+RaDF0ypk="
},
"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": "313f58ae85278ced9ccc7f90ee630bdf8735c52f",
"hash": "sha256-9RWrxIDA2vvobr9Cg13SkwfScw+Lk/NCeaPVIXTCKmY="
},
"src/third_party/vulkan-deps": {
"url": "https://chromium.googlesource.com/vulkan-deps",
"rev": "02470a3c2773a9fa236c7e8dacd72deb4b5131e3",
"hash": "sha256-zziYZlVaxG5UQPm/SlodT85f+pAoGwuAO9FKnkSN53E="
},
"src/third_party/glslang/src": {
"url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang",
"rev": "a57276bf558f5cf94d3a9854ebdf5a2236849a5a",
"hash": "sha256-/DwdyuSGCx22zsXZrcZGTECfsIqvzPQzTZ2mU8EkjxY="
},
"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": "01e0577914a75a2569c846778c2f93aa8e6feddd",
"hash": "sha256-gewCQvcVRw+qdWPWRlYUMTt/aXrZ7Lea058WyqL5c08="
},
"src/third_party/spirv-tools/src": {
"url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools",
"rev": "d5d5b61e2d5ae9b98ef403b3f3f922711812888a",
"hash": "sha256-wP/ZjSXXB1NrRVmtaqxoJ+jdHlRNsXg7dRxYp9zfKKc="
},
"src/third_party/vulkan-headers/src": {
"url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Headers",
"rev": "a4f8ada9f4f97c45b8c89c57997be9cebaae65d2",
"hash": "sha256-Sg/zp6UhRC5wqBS3vdfs0sQL8cBgLiwvfG0oY0v9MWU="
},
"src/third_party/vulkan-loader/src": {
"url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader",
"rev": "f703f919c30c5b67958d35d40a4297cb3823ed78",
"hash": "sha256-3BBltVh3M9OnBk1uf+xpaaJaaF9QP9DHeX7tu6ET05Y="
},
"src/third_party/vulkan-tools/src": {
"url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Tools",
"rev": "d643b80d6ba8c191bc289fdda52867c3bb3c190b",
"hash": "sha256-E8VEn0s/ZuIIx4sH9ItLx+3+FOPi8gbQ0Ht7iIyYBUU="
},
"src/third_party/vulkan-utility-libraries/src": {
"url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Utility-Libraries",
"rev": "4322db5906e67b57ec9c327e6afe3d98ed893df7",
"hash": "sha256-qcCATZWM0YJ02Dl5VxjvbFYoE2b0r7Ku+ELr2is2VIg="
},
"src/third_party/vulkan-validation-layers/src": {
"url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers",
"rev": "83d96b88de7b85c3f29545170857e54e348421b2",
"hash": "sha256-ugV2Gwgrerbqbtc5SgKN5wm4eT4JbXRCiryu1bLGR+M="
},
"src/third_party/vulkan_memory_allocator": {
"url": "https://chromium.googlesource.com/external/github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git",
"rev": "cb0597213b0fcb999caa9ed08c2f88dc45eb7d50",
"hash": "sha256-yBCs3zfqs/60htsZAOscjcyKhVbAWE6znweuXcs1oKo="
},
"src/third_party/wayland/src": {
"url": "https://chromium.googlesource.com/external/anongit.freedesktop.org/git/wayland/wayland.git",
"rev": "a156431ea66fe67d69c9fbba8a8ad34dabbab81c",
"hash": "sha256-oK0Z8xO2ILuySGZS0m37ZF0MOyle2l8AXb0/6wai0/w="
},
"src/third_party/wayland-protocols/src": {
"url": "https://chromium.googlesource.com/external/anongit.freedesktop.org/git/wayland/wayland-protocols.git",
"rev": "efbc060534be948b63e1f395d69b583eebba3235",
"hash": "sha256-tdpEK7soY0aKSk6VD4nulH7ORubX8RfjXYmNAd/cWKY="
},
"src/third_party/wayland-protocols/kde": {
"url": "https://chromium.googlesource.com/external/github.com/KDE/plasma-wayland-protocols.git",
"rev": "0b07950714b3a36c9b9f71fc025fc7783e82926e",
"hash": "sha256-Dmcp/2ms/k7NxPPmPkp0YNfM9z2Es1ZO0uX10bc7N2Y="
},
"src/third_party/wayland-protocols/gtk": {
"url": "https://chromium.googlesource.com/external/github.com/GNOME/gtk.git",
"rev": "40ebed3a03aef096addc0af09fec4ec529d882a0",
"hash": "sha256-75XNnLkF5Lt1LMRGT+T61k0/mLa3kkynfN+QWvZ0LiQ="
},
"src/third_party/webdriver/pylib": {
"url": "https://chromium.googlesource.com/external/github.com/SeleniumHQ/selenium/py.git",
"rev": "1e954903022e9386b9acf452c24f4458dd4c4fc1",
"hash": "sha256-k5qx4xyO83jPtHaMh6aMigMJ3hsytFdFQOcZLmwPEYo="
},
"src/third_party/webgl/src": {
"url": "https://chromium.googlesource.com/external/khronosgroup/webgl.git",
"rev": "c01b768bce4a143e152c1870b6ba99ea6267d2b0",
"hash": "sha256-mSketnpcDtz3NnhPkXMpMpq8MWcFiSviJbK6h06fcnw="
},
"src/third_party/webgpu-cts/src": {
"url": "https://chromium.googlesource.com/external/github.com/gpuweb/cts.git",
"rev": "b62c3fc76c9c644a8597399b0d23f7032cabb366",
"hash": "sha256-L3DuBVH7x1vxpDp/wrykcyPCjVLJr4ox4gEl76f320A="
},
"src/third_party/webpagereplay": {
"url": "https://chromium.googlesource.com/webpagereplay.git",
"rev": "9057e5d942f2bfcee71cc20415a7f86c966241f8",
"hash": "sha256-W/f+vYNC9xiCPVvHezlVPFAze77OTCMMj7PgNN5ixaw="
},
"src/third_party/webrtc": {
"url": "https://webrtc.googlesource.com/src.git",
"rev": "29d6eabaf0b5c1a62af6e7fd03adebf5e1a446e8",
"hash": "sha256-kVzks2ncpgd+aQ7JT2pAV/WJXxFIE7Es5Yzd/XGgm4w="
},
"src/third_party/wuffs/src": {
"url": "https://skia.googlesource.com/external/github.com/google/wuffs-mirror-release-c.git",
"rev": "e3f919ccfe3ef542cfc983a82146070258fb57f8",
"hash": "sha256-373d2F/STcgCHEq+PO+SCHrKVOo6uO1rqqwRN5eeBCw="
},
"src/third_party/weston/src": {
"url": "https://chromium.googlesource.com/external/anongit.freedesktop.org/git/wayland/weston.git",
"rev": "bdba2f9adaca673fd58339d8140bc04727ee279d",
"hash": "sha256-o49a3sp+D9FycxeB+uMcKouVvlKWoWpfws7FLEGJ/V8="
},
"src/third_party/xdg-utils": {
"url": "https://chromium.googlesource.com/chromium/deps/xdg-utils.git",
"rev": "cb54d9db2e535ee4ef13cc91b65a1e2741a94a44",
"hash": "sha256-WuQ9uDq+QD17Y20ACFGres4nbkeOiTE2y+tY1avAT5U="
},
"src/third_party/xnnpack/src": {
"url": "https://chromium.googlesource.com/external/github.com/google/XNNPACK.git",
"rev": "4d098efeac50c44a7c03e6feb1794908db4c3158",
"hash": "sha256-oxpMzIFwJ3L5cYLkwcSL7a8XS1AGHXKQjwtHoe/2mZw="
},
"src/third_party/zstd/src": {
"url": "https://chromium.googlesource.com/external/github.com/facebook/zstd.git",
"rev": "89d685e42dbcf815a16ed0fcd7d050ef74ccad96",
"hash": "sha256-xFObjxA4LKOnCugxaYek3cU4ld3JwLj5jFoRJ20hje4="
},
"src/v8": {
"url": "https://chromium.googlesource.com/v8/v8.git",
"rev": "4427aa4a9c14d3d542866c0ed2ae8a8554cfd68d",
"hash": "sha256-SL9YaplMFA1Ez11bIzAfl/F5qQob/PvCP1uknP1LiLs="
}
}
}
}
+163
View File
@@ -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,226 @@
{
stdenv,
upstream-info,
chromium,
fetchurl,
go-crx3,
overrideCC,
pkgsBuildBuild,
lib,
electron-source,
helium-patcher-unwrapped,
fetchzip,
proprietaryCodecs,
cupsSupport,
pulseSupport,
}:
(
(chromium.passthru.mkDerivation.override (
old:
let
warnObsoleteVersionConditional =
min-version: result:
let
min-supported-version = (lib.head (lib.attrValues electron-source)).unwrapped.info.chromium.version;
# Warning can be toggled by changing the value of enabled:
enabled = false;
in
lib.warnIf (enabled && lib.versionAtLeast min-supported-version min-version)
"chromium: min-supported-version ${min-supported-version} is newer than a conditional bounded at ${min-version}. You can safely delete it."
result;
chromiumVersionAtLeast =
min-version:
let
result = lib.versionAtLeast upstream-info.version min-version;
in
warnObsoleteVersionConditional min-version result;
versionRange =
min-version: upto-version:
let
inherit (upstream-info) version;
result = lib.versionAtLeast version min-version && lib.versionOlder version upto-version;
in
warnObsoleteVersionConditional upto-version result;
in
{
inherit stdenv;
ungoogled = true;
ungoogled-chromium = helium-patcher-unwrapped;
inherit
upstream-info
chromiumVersionAtLeast
versionRange
proprietaryCodecs
cupsSupport
pulseSupport
;
}
))
(
base:
let
helium = helium-patcher-unwrapped {
inherit (upstream-info.deps.ungoogled-patches) rev hash;
};
buildPlatformLlvmStdenv =
let
llvmPackages = pkgsBuildBuild.rustc.llvmPackages;
in
overrideCC llvmPackages.stdenv (
llvmPackages.stdenv.cc.override {
inherit (llvmPackages) bintools;
}
);
ublock_src =
let
version = "1.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;
# 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"
]
) 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;
};
requiredSystemFeatures = [ "big-parallel" ];
}
)
)
+290
View File
@@ -0,0 +1,290 @@
#! /usr/bin/env nix-shell
/*
#! nix-shell -i zx -p zx
*/
console.log(process.cwd())
const custompkgs = (await $`git rev-parse --show-toplevel`).stdout.trim()
const $custompkgs = $({
cwd:custompkgs
})
const nixpkgs = "<nixpkgs>"
const dummy_hash = 'sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA='
const lockfile_file = './info.json'
const lockfile_initial = fs.readJsonSync(lockfile_file)
function flush_to_file() {
fs.writeJsonSync(lockfile_file, lockfile, { spaces: 2 })
}
const flush_to_file_proxy = {
get(obj, prop) {
const value = obj[prop]
return typeof value == 'object' ? new Proxy(value, flush_to_file_proxy) : value
},
set(obj, prop, value) {
obj[prop] = value
flush_to_file()
return true
},
}
const lockfile = new Proxy(structuredClone(lockfile_initial), flush_to_file_proxy)
const ungoogled_rev = argv['ungoogled-chromium-rev']
for (const attr_path of Object.keys(lockfile)) {
const ungoogled = attr_path === 'ungoogled-chromium'
if (!argv[attr_path] && !(ungoogled && ungoogled_rev)) {
console.log(`[${attr_path}] Skipping ${attr_path}. Pass --${attr_path} as argument to update.`)
continue
}
const version_nixpkgs = !ungoogled ? lockfile[attr_path].version : lockfile[attr_path].deps['ungoogled-patches'].rev
const version_upstream = !ungoogled ? await get_latest_chromium_release('linux') :
ungoogled_rev ?? await get_latest_ungoogled_release()
console.log(`[${attr_path}] ${chalk.red(version_nixpkgs)} (nixpkgs)`)
console.log(`[${attr_path}] ${chalk.green(version_upstream)} (upstream)`)
if (ungoogled_rev || version_greater_than(version_upstream, version_nixpkgs)) {
console.log(`[${attr_path}] ${chalk.green(version_upstream)} from upstream is newer than our ${chalk.red(version_nixpkgs)}...`)
let ungoogled_patches = ungoogled ? await fetch_ungoogled(version_upstream) : undefined
// For ungoogled-chromium we need to remove the patch revision (e.g. 130.0.6723.116-1 -> 130.0.6723.116)
// by just using the chromium_version.txt content from the patches checkout (to also work with commit revs).
const version_chromium = ungoogled_patches?.chromium_version ?? version_upstream
const chromium_rev = await chromium_resolve_tag_to_rev(version_chromium)
lockfile[attr_path] = {
version: version_chromium,
chromedriver: !ungoogled ? await fetch_chromedriver_binaries(await get_latest_chromium_release('mac')) : undefined,
deps: {
depot_tools: {},
gn: await fetch_gn(chromium_rev, lockfile_initial[attr_path].deps.gn),
'ungoogled-patches': !ungoogled ? undefined : {
rev: ungoogled_patches.rev,
hash: ungoogled_patches.hash,
},
npmHash: dummy_hash,
},
DEPS: {},
}
const depot_tools = await fetch_depot_tools(chromium_rev, lockfile_initial[attr_path].deps.depot_tools)
lockfile[attr_path].deps.depot_tools = {
rev: depot_tools.rev,
hash: depot_tools.hash,
}
// DEPS update loop
lockfile[attr_path].DEPS = await resolve_DEPS(depot_tools.out, chromium_rev)
for (const [path, value] of Object.entries(lockfile[attr_path].DEPS)) {
delete value.fetcher
delete value.postFetch
if (value.url === 'https://chromium.googlesource.com/chromium/src.git') {
value.recompress = true
}
const cache_hit = (() => {
for (const attr_path in lockfile_initial) {
const cache = lockfile_initial[attr_path].DEPS[path]
const hits_cache =
cache !== undefined &&
value.url === cache.url &&
value.rev === cache.rev &&
value.recompress === cache.recompress &&
cache.hash !== undefined &&
cache.hash !== '' &&
cache.hash !== dummy_hash
if (hits_cache) {
cache.attr_path = attr_path
return cache;
}
}
})();
if (cache_hit) {
console.log(`[${chalk.green(path)}] Reusing hash from previous info.json for ${cache_hit.url}@${cache_hit.rev} from ${cache_hit.attr_path}`)
value.hash = cache_hit.hash
continue
}
console.log(`[${chalk.red(path)}] FOD prefetching ${value.url}@${value.rev}...`)
// value.hash = await prefetch_FOD('./package.nix', '-A', `${attr_path}.browser.passthru.chromiumDeps."${path}"`)
value.hash = await prefetch_flake_FOD(`.#helium-browser.browser.passthru.chromiumDeps."${path}"`)
// console.log(`[${chalk.green(path)}] FOD prefetching successful`)
}
// lockfile[attr_path].deps.npmHash = await prefetch_FOD('./package.nix', '-A', `${attr_path}.browser.passthru.npmDeps`)
lockfile[attr_path].deps.npmHash = await prefetch_flake_FOD(`.#helium-browser.browser.passthru.npmDeps`)
console.log(chalk.green(`[${attr_path}] Done updating ${attr_path} from ${version_nixpkgs} to ${version_upstream}!`))
}
}
async function fetch_gn(chromium_rev, gn_previous) {
const DEPS_file = await get_gitiles_file('https://chromium.googlesource.com/chromium/src', chromium_rev, 'DEPS')
const { rev } = /^\s+'gn_version': 'git_revision:(?<rev>.+)',$/m.exec(DEPS_file).groups
const cache_hit = rev === gn_previous.rev;
if (cache_hit) {
return gn_previous
}
const commit_date = await get_gitiles_commit_date('https://gn.googlesource.com/gn', rev)
const version = `0-unstable-${commit_date}`
const expr = [`(import ${nixpkgs} {}).gn.override { version = "${version}"; rev = "${rev}"; hash = ""; }`]
const derivation = await $`nix-instantiate --expr ${expr}`
return {
version,
rev,
hash: await prefetch_FOD(derivation),
}
}
async function get_gitiles_commit_date(base_url, rev) {
const url = `${base_url}/+/${rev}?format=json`
const response = await (await fetch(url)).text()
const json = JSON.parse(response.replace(`)]}'\n`, ''))
const date = new Date(json.committer.time)
return date.toISOString().split("T")[0]
}
async function fetch_chromedriver_binaries(version) {
// https://developer.chrome.com/docs/chromedriver/downloads/version-selection
const prefetch = async (url) => {
const expr = [`(import ${nixpkgs} {}).fetchzip { url = "${url}"; hash = ""; }`]
const derivation = await $`nix-instantiate --expr ${expr}`
return await prefetch_FOD(derivation)
}
// if the URL ever changes, the URLs in the chromedriver derivations need updating as well!
const url = (platform) => `https://storage.googleapis.com/chrome-for-testing-public/${version}/${platform}/chromedriver-${platform}.zip`
return {
version,
hash_darwin: await prefetch(url('mac-x64')),
hash_darwin_aarch64: await prefetch(url('mac-arm64')),
}
}
async function chromium_resolve_tag_to_rev(tag) {
const url = `https://chromium.googlesource.com/chromium/src/+/refs/tags/${tag}?format=json`
const response = await (await fetch(url)).text()
const json = JSON.parse(response.replace(`)]}'\n`, ''))
return json.commit
}
async function resolve_DEPS(depot_tools_checkout, chromium_rev) {
const { stdout } = await $`./depot_tools.py ${depot_tools_checkout} ${chromium_rev}`
const deps = JSON.parse(stdout)
return Object.fromEntries(Object.entries(deps).map(([k, { url, rev, hash }]) => [k, { url, rev, hash }]))
}
async function get_latest_chromium_release(platform) {
const url = `https://versionhistory.googleapis.com/v1/chrome/platforms/${platform}/channels/stable/versions/all/releases?` + new URLSearchParams({
order_by: 'version desc',
filter: 'endtime=none,fraction>=0.5'
})
const response = await (await fetch(url)).json()
return response.releases[0].version
}
async function get_latest_ungoogled_release() {
const ungoogled_tags = await (await fetch('https://api.github.com/repos/imputnet/helium/tags')).json()
// console.log(ungoogled_tags)
// const chromium_releases = await (await fetch('https://versionhistory.googleapis.com/v1/chrome/platforms/linux/channels/stable/versions/all/releases')).json()
// const chromium_release_map = chromium_releases.releases.map((x) => x.version)
// return "0.5.2" // TODO: figure out how to actually properly do this stuff
return ungoogled_tags[0].name
}
async function fetch_ungoogled(rev) {
const expr = (hash) => [`(import ${nixpkgs} {}).fetchFromGitHub { owner = "imputnet"; repo = "helium"; rev = "${rev}"; hash = "${hash}"; }`]
const hash = await prefetch_FOD('--expr', expr(''))
const checkout = await $`nix-build --expr ${expr(hash)}`
const checkout_path = checkout.stdout.trim()
await fs.copy(path.join(checkout_path, 'flags.gn'), './ungoogled-flags.toml')
const chromium_version = (await fs.readFile(path.join(checkout_path, 'chromium_version.txt'))).toString().trim()
console.log(`[ungoogled-chromium] ${chalk.green(rev)} patch revision resolves to chromium version ${chalk.green(chromium_version)}`)
return {
rev,
hash,
chromium_version,
}
}
function version_greater_than(greater, than) {
return greater.localeCompare(than, undefined, { numeric: true, sensitivity: 'base' }) === 1
}
async function get_gitiles_file(repo, rev, path) {
const base64 = await (await fetch(`${repo}/+/${rev}/${path}?format=TEXT`)).text()
return Buffer.from(base64, 'base64').toString('utf-8')
}
async function fetch_depot_tools(chromium_rev, depot_tools_previous) {
const depot_tools_rev = await get_gitiles_file('https://chromium.googlesource.com/chromium/src', chromium_rev, 'third_party/depot_tools')
const hash = depot_tools_rev === depot_tools_previous.rev ? depot_tools_previous.hash : ''
return await prefetch_gitiles('https://chromium.googlesource.com/chromium/tools/depot_tools', depot_tools_rev, hash)
}
async function prefetch_gitiles(url, rev, hash = '') {
const expr = () => [`(import ${nixpkgs} {}).fetchFromGitiles { url = "${url}"; rev = "${rev}"; hash = "${hash}"; }`]
if (hash === '') {
hash = await prefetch_FOD('--expr', expr())
}
const { stdout } = await $`nix-build --expr ${expr()}`
return {
url,
rev,
hash,
out: stdout.trim(),
}
}
async function prefetch_FOD(...args) {
const { stderr } = await $`nix-build ${args}`.nothrow()
const hash = /\s+got:\s+(?<hash>.+)$/m.exec(stderr)?.groups?.hash
if (hash == undefined) {
throw new Error(chalk.red('Expected to find hash in nix-build stderr output:') + stderr)
}
return hash
}
async function prefetch_flake_FOD(...args) {
const { stderr } = await $custompkgs`nix build ${args}`.nothrow()
const hash = /\s+got:\s+(?<hash>.+)$/m.exec(stderr)?.groups?.hash
if (hash == undefined) {
throw new Error(chalk.red('Expected to find hash in nix build stderr output:') + stderr)
}
return hash
}
-134
View File
@@ -1,134 +0,0 @@
{
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;
};
})
@@ -1,37 +0,0 @@
{
"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="
}
}
-63
View File
@@ -1,63 +0,0 @@
{
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";
};
}
@@ -1,70 +0,0 @@
{
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/
'';
}
-29
View File
@@ -1,29 +0,0 @@
{
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}"
];
}
-99
View File
@@ -1,99 +0,0 @@
{
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" ];
};
})
-96
View File
@@ -1,96 +0,0 @@
{
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"
];
};
}
@@ -27,11 +27,11 @@ stdenv.mkDerivation (
rec {
name = "x1e80100-firmware";
version = "26100_26.011.9344.0";
version = "26100_25.101.12926.0";
src = fetchurl {
# https://www.microsoft.com/en-us/download/details.aspx?id=106120
url = "https://download.microsoft.com/download/b7ca2c3f-d320-4795-be0f-529a0117abb4/SurfaceLaptop7_ARM_Win11_${version}.msi";
hash = "sha256-ZkZgmKz5ihrRaarAioWoc0dx9XbmobGwTTyY/VLzahk=";
hash = "sha256-4LVqkA4YwGrAh3gNSUQ5G2ahwBoj/5QvyFqvNgznvX4=";
};
nativeBuildInputs = [
msitools