2020-11-30 16:30:46 +01:00
|
|
|
{stdenv, lib, coreutils, unzip, jq, zip, fetchurl,writeScript, ...}:
|
2020-12-15 22:02:34 +01:00
|
|
|
|
|
|
|
{
|
|
|
|
name
|
2021-10-03 02:43:41 +02:00
|
|
|
, url ? null
|
2020-11-30 18:49:29 +01:00
|
|
|
, md5 ? ""
|
|
|
|
, sha1 ? ""
|
|
|
|
, sha256 ? ""
|
|
|
|
, sha512 ? ""
|
2020-12-15 22:02:34 +01:00
|
|
|
, fixedExtid ? null
|
2020-12-09 13:39:15 +01:00
|
|
|
, hash ? ""
|
2021-10-03 02:43:41 +02:00
|
|
|
, src ? ""
|
2020-11-30 16:30:46 +01:00
|
|
|
}:
|
2020-12-15 22:02:34 +01:00
|
|
|
|
2021-10-03 02:43:41 +02:00
|
|
|
let
|
2020-12-15 22:02:34 +01:00
|
|
|
extid = if fixedExtid == null then "nixos@${name}" else fixedExtid;
|
2021-10-03 02:43:41 +02:00
|
|
|
source = if url == null then src else fetchurl {
|
|
|
|
url = url;
|
|
|
|
inherit md5 sha1 sha256 sha512 hash;
|
|
|
|
};
|
|
|
|
in
|
|
|
|
stdenv.mkDerivation {
|
|
|
|
inherit name;
|
|
|
|
|
2020-11-30 16:30:46 +01:00
|
|
|
passthru = {
|
2020-12-09 20:58:00 +01:00
|
|
|
inherit extid;
|
2020-11-30 16:30:46 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
builder = writeScript "xpibuilder" ''
|
|
|
|
source $stdenv/setup
|
|
|
|
|
|
|
|
header "firefox addon $name into $out"
|
|
|
|
|
|
|
|
UUID="${extid}"
|
|
|
|
mkdir -p "$out/$UUID"
|
2021-10-03 02:43:41 +02:00
|
|
|
unzip -q ${source} -d "$out/$UUID"
|
2020-11-30 16:30:46 +01:00
|
|
|
NEW_MANIFEST=$(jq '. + {"applications": { "gecko": { "id": "${extid}" }}, "browser_specific_settings":{"gecko":{"id": "${extid}"}}}' "$out/$UUID/manifest.json")
|
|
|
|
echo "$NEW_MANIFEST" > "$out/$UUID/manifest.json"
|
|
|
|
cd "$out/$UUID"
|
|
|
|
zip -r -q -FS "$out/$UUID.xpi" *
|
|
|
|
rm -r "$out/$UUID"
|
|
|
|
'';
|
|
|
|
nativeBuildInputs = [ coreutils unzip zip jq ];
|
|
|
|
}
|