1{
2 lib,
3 buildPythonPackage,
4 bpf-linker,
5 rustPlatform,
6 mitmproxy-rs,
7}:
8
9buildPythonPackage {
10 pname = "mitmproxy-linux";
11 inherit (mitmproxy-rs) version src cargoDeps;
12 pyproject = true;
13
14 postPatch = ''
15 substituteInPlace ../mitmproxy-rs-*-vendor/aya-build-*/src/lib.rs \
16 --replace-fail '"+nightly",' "" \
17 --replace-fail '"-Z",' "" \
18 --replace-fail '"build-std=core",' ""
19
20 substituteInPlace mitmproxy-linux-ebpf/.cargo/config.toml \
21 --replace-fail 'build-std = ["core"]' ""
22
23 cp ${./fix-mitmproxy-linux-redirector-path.diff} tmp.diff
24 substituteInPlace tmp.diff \
25 --replace-fail @mitmproxy-linux-redirector@ $out/bin/mitmproxy-linux-redirector
26 patch -p1 < tmp.diff
27 '';
28
29 RUSTFLAGS = "-C target-feature=";
30 RUSTC_BOOTSTRAP = 1;
31
32 buildAndTestSubdir = "mitmproxy-linux";
33
34 nativeBuildInputs = [
35 bpf-linker
36 rustPlatform.cargoSetupHook
37 rustPlatform.maturinBuildHook
38 ];
39
40 # repo has no python tests
41 doCheck = false;
42
43 pythonImportsCheck = [ "mitmproxy_linux" ];
44
45 meta = {
46 inherit (mitmproxy-rs.meta) changelog license maintainers;
47 description = "Linux Rust bits in mitmproxy";
48 homepage = "https://github.com/mitmproxy/mitmproxy_rs/tree/main/mitmproxy-linux";
49 platforms = lib.platforms.linux;
50 };
51}