nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
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})