From b8165b6bbaeee8735aa95e8c33d0c4e59626667a Mon Sep 17 00:00:00 2001 From: Raito Bezarius Date: Thu, 30 Jan 2025 17:50:01 +0100 Subject: [PATCH] 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 Co-authored-by: Elias Coppens --- pkgs/by-name/g3/g3proxy/package.nix | 63 +++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 pkgs/by-name/g3/g3proxy/package.nix diff --git a/pkgs/by-name/g3/g3proxy/package.nix b/pkgs/by-name/g3/g3proxy/package.nix new file mode 100644 index 000000000000..638806304fce --- /dev/null +++ b/pkgs/by-name/g3/g3proxy/package.nix @@ -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"; + }; +}