{ final, prev, sources, ... }: { preserve-dscp = prev.stdenv.mkDerivation rec { pname = "preserve-dscp"; inherit (sources.bpf-examples) version src; patches = [ ./kern_env.patch ./kern_sec_classifier.patch ]; makeFlags = [ "PREFIX=$(out)" ]; buildFlags = [ "preserve-dscp" ]; CPATH = prev.lib.makeSearchPathOutput "dev" "include" (buildInputs ++ nativeBuildInputs); BPF_CFLAGS = "-Wno-unused-command-line-argument -fno-stack-protector"; outputs = [ "out" "lib" ]; buildInputs = with final; [ elfutils libpcap zlib ]; nativeBuildInputs = with final; [ llvmPackages.clang llvmPackages.llvm pkgconfig bpftool libmnl gnum4 glibc_multi makeWrapper ]; installPhase = '' mkdir -p $lib/lib/bpf install -t $lib/lib/bpf \ preserve-dscp/preserve_dscp_kern.o mkdir -p $out/bin install -m 555 -t $out/bin \ preserve-dscp/preserve-dscp wrapProgram $out/bin/preserve-dscp \ --set-default PRESERVE_DSCP_KERN $lib/lib/bpf/preserve_dscp_kern.o ''; dontFixup = true; meta.mainProgram = "preserve-dscp"; }; }