diff --git a/pkgs/additional/firefox-extensions/default.nix b/pkgs/additional/firefox-extensions/default.nix index 72b44912..af1d3428 100644 --- a/pkgs/additional/firefox-extensions/default.nix +++ b/pkgs/additional/firefox-extensions/default.nix @@ -1,6 +1,7 @@ { stdenv , callPackage , fetchFirefoxAddon +, gnused , jq , strip-nondeterminism , unzip @@ -11,8 +12,8 @@ let # given an addon, repackage it without some `perm`ission removePermission = perm: addon: mkPatchedAddon addon { patchPhase = '' - NEW_MANIFEST=$(jq 'del(.permissions[] | select(. == "${perm}"))' "$out/$UUID/manifest.json") - echo "$NEW_MANIFEST" > "$out/$UUID/manifest.json" + NEW_MANIFEST=$(jq 'del(.permissions[] | select(. == "${perm}"))' manifest.json) + echo "$NEW_MANIFEST" > manifest.json ''; nativeBuildInputs = [ jq ]; }; @@ -39,19 +40,17 @@ let UUID="${extid}" echo "patching firefox addon $name into $out/$UUID.xpi" - # extract the XPI - mkdir -p "$out/$UUID" - unzip -q "${addon}/$UUID.xpi" -d "$out/$UUID" + # extract the XPI into the working directory + unzip -q "${addon}/$UUID.xpi" -d "." ''; installPhase = '' runHook preInstall # repackage the XPI - cd "$out/$UUID" - zip -r -q -FS "$out/$UUID.xpi" * + mkdir "$out" + zip -r -q -FS "$out/$UUID.xpi" ./* strip-nondeterminism "$out/$UUID.xpi" - rm -r "$out/$UUID" runHook postInstall ''; @@ -91,7 +90,17 @@ in { ether-metamask = addon "ether-metamask" "webextension@metamask.io" "sha256-UI83wUUc33OlQYX+olgujeppoo2D2PAUJ+Wma5mH2O0="; i2p-in-private-browsing = addon "i2p-in-private-browsing" "i2ppb@eyedeekay.github.io" "sha256-dJcJ3jxeAeAkRvhODeIVrCflvX+S4E0wT/PyYzQBQWs="; sidebery = addon "sidebery" "{3c078156-979c-498b-8990-85f7987dd929}" "sha256-YONfK/rIjlsrTgRHIt3km07Q7KnpIW89Z9r92ZSCc6w="; - sponsorblock = addon "sponsorblock" "sponsorBlocker@ajay.app" "sha256-b/OTFmhSEUZ/CYrYCE4rHVMQmY+Y78k8jSGMoR8vsZA="; + sponsorblock = mkPatchedAddon + (addon "sponsorblock" "sponsorBlocker@ajay.app" "sha256-b/OTFmhSEUZ/CYrYCE4rHVMQmY+Y78k8jSGMoR8vsZA=") + { + patchPhase = '' + # patch sponsorblock to not show the help tab on first launch. + # XXX: i tried to build sponsorblock from source and patch this *before* it gets webpack'd, + # but web shit is absolutely cursed and building from source requires a fucking PhD + # (if you have one, feel free to share your nix package) + ${gnused}/bin/sed -i 's/default\.config\.userID)/default.config.userID && false)/' js/background.js + ''; + }; ublacklist = addon "ublacklist" "@ublacklist" "sha256-NZ2FmgJiYnH7j2Lkn0wOembxaEphmUuUk0Ytmb0rNWo="; ublock-origin = addon "ublock-origin" "uBlock0@raymondhill.net" "sha256-EGGAA+cLUow/F5luNzFG055rFfd3rEyh8hTaL/23pbM="; }