summaryrefslogtreecommitdiffstats
path: root/pkgs/by-name/ho/hostsblock/package.nix
blob: c9afebf7aa4686a525228d47c6f995c962e48469 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
{
  lib,
  coreutils,
  curl,
  fetchFromGitHub,
  unzip,
  p7zip,
  gnused,
  gnugrep,
  stdenv,
  blacklist ? [ "adwords.google.com" ],
  whitelist ? [
    ".dropbox.com"
    " www.malwaredomainlists.com"
    " www.arcamax.com"
    " www.instructables.com"
    " goo.gl"
    " www.reddit.com"
    " t.co"
    " bit.ly"
    " www.viddler.com"
    " viddler.com"
    " tinyurl.com"
    " ompldr.org"
    " www.ompldr.org"
    "login.yahoo.com"
    " l.yimg.com"
    ".bp.blogspot.com"
  ],
}:

stdenv.mkDerivation {
  pname = "hostsblock";
  version = "20161213";

  src = fetchFromGitHub {
    owner = "gaenserich";
    repo = "hostsblock";
    rev = "91cacbdfbfb5e7ae9ba3babf8de41e135270c310";
    sha256 = "1w91fbgf8v2nn0a6m8l6kd455km2j1lvpvqil4yxhrg018aigax0";
  };

  installPhase = ''
    mkdir -p $out/bin
    install -Dm744 src/hostsblock.sh $out/bin/hostsblock
    install -Dm744 src/hostsblock-urlcheck.sh $out/bin/hostsblock-urlcheck

    mkdir -p $out/lib
    install -Dm644 src/hostsblock-common.sh $out/lib/

    mkdir -p $out/etc
    install -Dm644 conf/hostsblock.conf $out/etc/
    ${lib.concatMapStrings (d: "echo ${d} >> $out/etc/black.list\n") blacklist}
    ${lib.concatMapStrings (d: "echo ${d} >> $out/etc/white.list\n") whitelist}
    install -Dm644 conf/hosts.head $out/etc/

    for f in $out/bin/* $out/lib/* $out/etc/hostsblock.conf; do
      substituteInPlace $f --replace "/dev/shm" "/tmp"
      substituteInPlace $f --replace "/usr/lib/" "$out/lib/"
      substituteInPlace $f --replace "/etc/hostsblock/" "$out/etc/"
      sed --in-place --regexp-extended "s|([\` ])curl |\1${curl}/bin/curl |g" $f
      substituteInPlace $f --replace grep ${gnugrep}/bin/grep
      substituteInPlace $f --replace " sed " " ${gnused}/bin/sed "
      sed --in-place --regexp-extended "s|([^_])unzip |\1${unzip}/bin/unzip |" $f
      sed --in-place --regexp-extended "s|7za([^,])|${p7zip}/bin/7za\1|g" $f
    done

    echo "postprocess(){ ${coreutils}/bin/true; }" >> $out/etc/hostsblock.conf

    mkdir -p $out/share/dbus-1/system-services
    install -Dm644 systemd/hostsblock.service $out/share/dbus-1/system-services
    install -Dm644 systemd/hostsblock.timer $out/share/dbus-1/system-services
  '';

  meta = {
    description = "Ad- and malware-blocking script for Linux";
    homepage = "http://gaenserich.github.io/hostsblock/";
    license = lib.licenses.gpl3;
    maintainers = [ lib.maintainers.nicknovitski ];
    platforms = lib.platforms.unix;
  };

}