nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at devShellTools-shell 110 lines 2.6 kB view raw
1{ 2 lib, 3 stdenv, 4 fetchFromGitHub, 5 nix-update-script, 6 7 libcap, 8 zlib, 9 libnetfilter_queue, 10 libnfnetlink, 11 12 iptables, 13 nftables, 14 gawk, 15}: 16 17stdenv.mkDerivation (finalAttrs: { 18 pname = "zapret"; 19 version = "71"; 20 21 src = fetchFromGitHub { 22 owner = "bol-van"; 23 repo = "zapret"; 24 25 leaveDotGit = true; 26 postFetch = '' 27 cd "$out" 28 git rev-parse --short HEAD > $out/COMMIT 29 find "$out" -name .git -print0 | xargs -0 rm -rf 30 ''; 31 32 tag = "v${finalAttrs.version}"; 33 hash = "sha256-cwwj0xGEiR3sg2WheurtQo6Hy5JAARcZJNHEHMfAoOE="; 34 }; 35 36 buildInputs = [ 37 libcap 38 zlib 39 libnetfilter_queue 40 libnfnetlink 41 ]; 42 43 nativeBuildInputs = [ 44 iptables 45 nftables 46 gawk 47 ]; 48 49 preBuild = '' 50 makeFlagsArray+=("CFLAGS=-DZAPRET_GH_VER=${finalAttrs.src.tag} -DZAPRET_GH_HASH=`cat $src/COMMIT`") 51 ''; 52 53 makeFlags = [ "TGT=${placeholder "out"}/bin" ]; 54 55 installPhase = '' 56 runHook preInstall 57 58 mkdir -p $out/usr/share/zapret/init.d/sysv 59 mkdir -p $out/usr/share/docs 60 61 cp $src/blockcheck.sh $out/bin/blockcheck 62 63 substituteInPlace $out/bin/blockcheck \ 64 --replace-fail '$(cd "$EXEDIR"; pwd)' "$out/usr/share/zapret" 65 66 ln -s ../../../bin/blockcheck $out/usr/share/zapret/blockcheck 67 68 cp $src/init.d/sysv/functions $out/usr/share/zapret/init.d/sysv/functions 69 cp $src/init.d/sysv/zapret $out/usr/share/zapret/init.d/sysv/init.d 70 71 substituteInPlace $out/usr/share/zapret/init.d/sysv/functions \ 72 --replace-fail "/opt/zapret" "\"$out/usr/share/zapret\"" 73 74 touch $out/usr/share/zapret/config 75 76 cp -r $src/docs/* $out/usr/share/docs 77 78 mkdir -p $out/usr/share/zapret/{common,ipset} 79 80 cp $src/common/* $out/usr/share/zapret/common 81 cp $src/ipset/* $out/usr/share/zapret/ipset 82 83 rm -f $out/usr/share/zapret/ipset/zapret-hosts-user-exclude.txt.default 84 85 mkdir -p $out/usr/share/zapret/nfq 86 ln -s ../../../../bin/nfqws $out/usr/share/zapret/nfq/nfqws 87 88 for i in ip2net mdig tpws 89 do 90 mkdir -p $out/usr/share/zapret/$i 91 ln -s ../../../../bin/$i $out/usr/share/zapret/$i/$i 92 done 93 94 ln -s ../usr/share/zapret/init.d/sysv/init.d $out/bin/zapret 95 96 runHook postInstall 97 ''; 98 99 passthru.updateScript = nix-update-script { }; 100 101 meta = { 102 description = "DPI bypass multi platform"; 103 homepage = "https://github.com/bol-van/zapret"; 104 changelog = "https://github.com/bol-van/zapret/releases/tag/${finalAttrs.src.tag}"; 105 license = lib.licenses.mit; 106 maintainers = with lib.maintainers; [ nishimara ]; 107 mainProgram = "zapret"; 108 platforms = lib.platforms.linux; 109 }; 110})