aboutsummaryrefslogtreecommitdiff
path: root/pkgs/applications/networking/browsers/tor-browser-bundle
diff options
context:
space:
mode:
authorJoachim Fasting <joachifm@fastmail.fm>2017-09-26 20:28:12 +0200
committerJoachim Fasting <joachifm@fastmail.fm>2017-09-26 23:17:08 +0200
commit346661d77be29e01a05680fb51ed79049963be33 (patch)
tree545bdab55660801343875b61df6d2a52ad966921 /pkgs/applications/networking/browsers/tor-browser-bundle
parentfe3b95e749ac851b1d0890f6fc6d8ae5d9004dd8 (diff)
tor-browser-bundle: redo extensions
Diffstat (limited to 'pkgs/applications/networking/browsers/tor-browser-bundle')
-rw-r--r--pkgs/applications/networking/browsers/tor-browser-bundle/default.nix98
1 files changed, 74 insertions, 24 deletions
diff --git a/pkgs/applications/networking/browsers/tor-browser-bundle/default.nix b/pkgs/applications/networking/browsers/tor-browser-bundle/default.nix
index fb3e06a94be8..96d9feabc150 100644
--- a/pkgs/applications/networking/browsers/tor-browser-bundle/default.nix
+++ b/pkgs/applications/networking/browsers/tor-browser-bundle/default.nix
@@ -2,11 +2,13 @@
, lib
, fetchurl
, fetchgit
+, symlinkJoin
, tor
, tor-browser-unwrapped
# Extensions, common
+, unzip
, zip
# HTTPS Everywhere
@@ -27,11 +29,16 @@ let
sha256 = "0j37mqldj33fnzghxifvy6v8vdwkcz0i4z81prww64md5s8qcsa9";
};
+ # Each extension drv produces an output comprising an unpacked .xpi
+ # named after the extension uuid, as it would appear under
+ # `firefox/extensions'.
firefoxExtensions = {
https-everywhere = stdenv.mkDerivation rec {
name = "https-everywhere-${version}";
version = "5.2.21";
+ extid = "https-everywhere-eff@eff.org";
+
src = fetchgit {
url = "https://git.torproject.org/https-everywhere.git";
rev = "refs/tags/${version}";
@@ -44,16 +51,24 @@ let
python27
python27Packages.lxml
rsync
+ unzip
zip
];
- buildCommand = ''
+ unpackPhase = ''
cp -dR --no-preserve=mode "$src" src
cd src
+ '';
- sed -i makexpi.sh -e '104d' # cp -a translations/* fails because the dir is empty ...
+ # Beware: the build expects translations/ to be non-empty (which it
+ # will be with submodules initialized).
+ buildPhase = ''
$shell ./makexpi.sh ${version} --no-recurse
- install -m 444 -Dt $out pkg"/"*.xpi
+ '';
+
+ installPhase = ''
+ mkdir $out
+ unzip -d "$out/$extid" "pkg/https-everywhere-$version-eff.xpi"
'';
meta = {
@@ -61,53 +76,98 @@ let
};
};
- noscript = fetchurl {
- url = https://secure.informaction.com/download/releases/noscript-5.0.10.xpi;
- sha256 = "18k5karbaj5mhd9cyjbqgik6044bw88rjalkh6anjanxbn503j6g";
+ noscript = stdenv.mkDerivation rec {
+ name = "noscript-${version}";
+ version = "5.0.10";
+
+ extid = "{73a6fe31-595d-460b-a920-fcc0f8843232}";
+
+ src = fetchurl {
+ url = "https://secure.informaction.com/download/releases/noscript-${version}.xpi";
+ sha256 = "18k5karbaj5mhd9cyjbqgik6044bw88rjalkh6anjanxbn503j6g";
+ };
+
+ nativeBuildInputs = [ unzip ];
+
+ unpackPhase = ":";
+
+ installPhase = ''
+ mkdir $out
+ unzip -d "$out/$extid" "$src"
+ '';
};
torbutton = stdenv.mkDerivation rec {
name = "torbutton-${version}";
version = "1.9.8.1";
+ extid = "torbutton@torproject.org";
+
src = fetchgit {
url = "https://git.torproject.org/torbutton.git";
rev = "refs/tags/${version}";
sha256 = "1amp0c9ky0a7fsa0bcbi6n6ginw7s2g3an4rj7kvc1lxmrcsm65l";
};
- nativeBuildInputs = [ zip ];
+ nativeBuildInputs = [ unzip zip ];
- buildCommand = ''
+ unpackPhase = ''
cp -dR --no-preserve=mode "$src" src
cd src
+ '';
+ buildPhase = ''
$shell ./makexpi.sh
- install -m 444 -Dt $out pkg"/"*.xpi
'';
+
+ installPhase = ''
+ mkdir $out
+ unzip -d "$out/$extid" "pkg/torbutton-$version.xpi"
+ '';
+
+ meta = {
+ homepage = https://gitweb.torproject.org/torbutton.git/;
+ };
};
tor-launcher = stdenv.mkDerivation rec {
name = "tor-launcher-${version}";
version = "0.2.12.3";
+ extid = "tor-launcher@torproject.org";
+
src = fetchgit {
url = "https://git.torproject.org/tor-launcher.git";
rev = "refs/tags/${version}";
sha256 = "0126x48pjiy2zm4l8jzhk70w24hviaz560ffp4lb9x0ar615bc9q";
};
- nativeBuildInputs = [ zip ];
+ nativeBuildInputs = [ unzip zip ];
- buildCommand = ''
+ unpackPhase = ''
cp -dR --no-preserve=mode "$src" src
cd src
+ '';
+ buildPhase = ''
make package
- install -m 444 -Dt $out pkg"/"*.xpi
'';
+
+ installPhase = ''
+ mkdir $out
+ unzip -d "$out/$extid" "pkg/tor-launcher-$version.xpi"
+ '';
+
+ meta = {
+ homepage = https://gitweb.torproject.org/tor-launcher.git/;
+ };
};
};
+
+ extensionsEnv = symlinkJoin {
+ name = "tor-browser-extensions";
+ paths = with firefoxExtensions; [ https-everywhere noscript torbutton tor-launcher ];
+ };
in
stdenv.mkDerivation rec {
name = "tor-browser-bundle-${version}";
@@ -163,18 +223,8 @@ stdenv.mkDerivation rec {
EOF
# Preload extensions
- install -m 444 -D \
- ${firefoxExtensions.tor-launcher}/tor-launcher-*.xpi \
- browser/extensions/tor-launcher@torproject.org.xpi
- install -m 444 -D \
- ${firefoxExtensions.torbutton}/torbutton-*.xpi \
- browser/extensions/torbutton@torproject.org.xpi
- install -m 444 -D \
- ${firefoxExtensions.https-everywhere}/https-everywhere-*-eff.xpi \
- browser/extensions/https-everywhere-eff@eff.org.xpi
- install -m 444 -D \
- ${firefoxExtensions.noscript} \
- browser/extensions/{73a6fe31-595d-460b-a920-fcc0f8843232}.xpi
+ # XXX: the fact that ln -s env browser/extensions fails, symlinkJoin seems a little redundant ...
+ ln -s -t browser/extensions ${extensionsEnv}"/"*
# Copy bundle data
cat \