diff options
author | Luis Hebendanz <luis.nixos@gmail.com> | 2020-12-15 22:02:34 +0100 |
---|---|---|
committer | Luis Hebendanz <luis.nixos@gmail.com> | 2020-12-15 22:02:34 +0100 |
commit | 1c8c134972b64aa31ceddc2b5054ff664e396910 (patch) | |
tree | d91594d575c8e8808d01de49dd201939eb03e8df /pkgs | |
parent | 4d902a7013872c790d52e522e1d027fd3e13b9bf (diff) |
firefox: wrapper updating an addon perserves addon settings
Diffstat (limited to 'pkgs')
-rw-r--r-- | pkgs/applications/networking/browsers/firefox/wrapper.nix | 35 | ||||
-rw-r--r-- | pkgs/build-support/fetchfirefoxaddon/default.nix | 9 |
2 files changed, 27 insertions, 17 deletions
diff --git a/pkgs/applications/networking/browsers/firefox/wrapper.nix b/pkgs/applications/networking/browsers/firefox/wrapper.nix index a9888c3c47bee..88fb6af4b0165 100644 --- a/pkgs/applications/networking/browsers/firefox/wrapper.nix +++ b/pkgs/applications/networking/browsers/firefox/wrapper.nix @@ -1,5 +1,5 @@ { stdenv, lib, makeDesktopItem, makeWrapper, lndir, config -, replace, fetchurl, zip, unzip, jq, xdg_utils +, replace, fetchurl, zip, unzip, jq, xdg_utils, writeText ## various stuff that can be plugged in , flashplayer, hal-flash @@ -97,12 +97,17 @@ let # EXTRA PREF CHANGES # # # ######################### - policiesJson = builtins.toFile "policies.json" - (builtins.toJSON enterprisePolicies); + policiesJson = writeText "policies.json" (builtins.toJSON enterprisePolicies); usesNixExtensions = nixExtensions != null; - extensions = builtins.map (a: + nameArray = builtins.map(a: a.name) (if usesNixExtensions then nixExtensions else []); + + # Check that every extension has a unqiue .name attribute + # and an extid attribute + extensions = if nameArray != (lib.unique nameArray) then + throw "Firefox addon name needs to be unique" + else builtins.map (a: if ! (builtins.hasAttr "extid" a) then throw "nixExtensions has an invalid entry. Missing extid attribute. Please use fetchfirefoxaddon" else @@ -128,12 +133,19 @@ let }; } ) {} extensions; - } + } // + { + Extensions = { + Install = lib.foldr (e: ret: + ret ++ [ "${e.outPath}/${e.extid}.xpi" ] + ) [] extensions; + }; + } // extraPolicies; }; - mozillaCfg = builtins.toFile "mozilla.cfg" '' -// First line must be a comment + mozillaCfg = writeText "mozilla.cfg" '' + // First line must be a comment // Disables addon signature checking // to be able to install addons that do not have an extid @@ -320,18 +332,13 @@ let # preparing for autoconfig mkdir -p "$out/lib/${firefoxLibName}/defaults/pref" - cat > "$out/lib/${firefoxLibName}/defaults/pref/autoconfig.js" <<EOF - pref("general.config.filename", "mozilla.cfg"); - pref("general.config.obscure_value", 0); - EOF + echo 'pref("general.config.filename", "mozilla.cfg");' > "$out/lib/${firefoxLibName}/defaults/pref/autoconfig.js" + echo 'pref("general.config.obscure_value", 0);' >> "$out/lib/${firefoxLibName}/defaults/pref/autoconfig.js" cat > "$out/lib/${firefoxLibName}/mozilla.cfg" < ${mozillaCfg} mkdir -p $out/lib/${firefoxLibName}/distribution/extensions - for i in ${toString extensions}; do - ln -s -t $out/lib/${firefoxLibName}/distribution/extensions $i/* - done ############################# # # # END EXTRA PREF CHANGES # diff --git a/pkgs/build-support/fetchfirefoxaddon/default.nix b/pkgs/build-support/fetchfirefoxaddon/default.nix index 4b7c68484d2e9..9efe9197d6873 100644 --- a/pkgs/build-support/fetchfirefoxaddon/default.nix +++ b/pkgs/build-support/fetchfirefoxaddon/default.nix @@ -1,16 +1,20 @@ {stdenv, lib, coreutils, unzip, jq, zip, fetchurl,writeScript, ...}: -{ name + +{ + name , url , md5 ? "" , sha1 ? "" , sha256 ? "" , sha512 ? "" +, fixedExtid ? null , hash ? "" }: + stdenv.mkDerivation rec { inherit name; - extid = "${src.outputHash}@${name}"; + extid = if fixedExtid == null then "nixos@${name}" else fixedExtid; passthru = { exitd=extid; }; @@ -35,4 +39,3 @@ stdenv.mkDerivation rec { }; nativeBuildInputs = [ coreutils unzip zip jq ]; } - |