Files
cp-nix/nix/sysproxy.nix
T
2026-07-24 21:31:46 +08:00

61 lines
1.2 KiB
Nix

{
lib,
rustPlatform,
fetchPnpmDeps,
nodejs_22,
pnpm_10,
pnpmConfigHook,
sysproxySrc,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "clash-party-sysproxy";
version = "0.5.1";
src = sysproxySrc;
cargoLock.lockFile = ./sysproxy-Cargo.lock;
pnpmDeps = fetchPnpmDeps {
pname = finalAttrs.pname;
version = finalAttrs.version;
src = sysproxySrc;
pnpm = pnpm_10;
fetcherVersion = 4;
prePnpmInstall = ''
pnpm config set fetch-retries 5
pnpm config set fetch-timeout 120000
pnpm config set network-concurrency 4
'';
hash = "sha256-n/unBCkpSSShYliEeeWOAjM7r7ZUdfROBYyqzw8JLB0=";
};
nativeBuildInputs = [
nodejs_22
pnpmConfigHook
pnpm_10
];
postPatch = ''
rm -f .cargo/config.toml
cp ${./sysproxy-Cargo.lock} Cargo.lock
chmod u+w Cargo.lock
'';
buildPhase = ''
runHook preBuild
pnpm exec napi build --platform --release
runHook postBuild
'';
# N-API symbols are supplied by Node/Electron when the module is loaded, so
# Cargo's standalone test-link step cannot resolve them.
doCheck = false;
installPhase = ''
runHook preInstall
mkdir -p $out
cp sysproxy.*.node $out/
runHook postInstall
'';
})