g3proxy: init at 1.10.4

g3proxy is an alternative forward proxy to squid or tinyproxy, written
in Rust, relying on modern cryptography stacks like partially verified
AWS LC and RustTLS.

AWS LC library is vendored because of how the Rust ecosystem is, but we
should look into unvendoring this like unvendoring OpenSSL is usually
done.

Change-Id: Id7f2d8b59307c5306e178a38a165c19f426ad8de
Signed-off-by: Raito Bezarius <masterancpp@gmail.com>
Co-authored-by: Elias Coppens <elias.coppens@ens.fr>
This commit is contained in:
Raito Bezarius
2025-01-30 20:46:23 +01:00
co-authored by Elias Coppens
parent 568c12fc49
commit b8165b6bba
+63
View File
@@ -0,0 +1,63 @@
{
lib,
rustPlatform,
fetchFromGitHub,
pkg-config,
stdenv,
darwin,
c-ares,
python3,
lua5_4,
capnproto,
cmake,
}:
rustPlatform.buildRustPackage rec {
pname = "g3";
version = "v1.10.4";
src = fetchFromGitHub {
owner = "bytedance";
repo = "g3";
tag = "g3proxy-${version}";
hash = "sha256-uafKYyzjGdtC+oMJG1wWOvgkSht/wTOzyODcPoTfOnU=";
};
cargoHash = "sha256-NbrJGGnpZkF7ZX3MqrMsZ03tWkN/nqWahh00O3IJGOw=";
useFetchCargoVendor = true;
# TODO: can we unvendor AWS LC somehow?
buildFeatures = [
"vendored-aws-lc"
"rustls-aws-lc"
];
# aws-lc/crypto compilation will trigger `strictoverflow` errors.
hardeningDisable = [ "strictoverflow" ];
nativeBuildInputs = [
pkg-config
rustPlatform.bindgenHook
python3
capnproto
cmake
];
buildInputs =
[
c-ares
lua5_4
]
++ lib.optionals stdenv.isDarwin [
darwin.apple_sdk.frameworks.Security
];
meta = {
description = "Enterprise-oriented Generic Proxy Solutions";
homepage = "https://github.com/bytedance/g3";
changelog = "https://github.com/bytedance/g3/blob/${src.rev}/CHANGELOG.md";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ raitobezarius ];
mainProgram = "g3proxy";
};
}