2024-06-30 08:12:46 +00:00
|
|
|
{
|
|
|
|
stdenv,
|
|
|
|
fetchurl,
|
|
|
|
jq,
|
|
|
|
strip-nondeterminism,
|
|
|
|
unzip,
|
|
|
|
writeScript,
|
|
|
|
zip,
|
2024-05-02 00:46:19 +00:00
|
|
|
}:
|
|
|
|
|
2024-06-30 08:12:46 +00:00
|
|
|
{
|
|
|
|
name,
|
|
|
|
url ? null,
|
|
|
|
sha1 ? "",
|
|
|
|
sha256 ? "",
|
|
|
|
sha512 ? "",
|
|
|
|
fixedExtid ? null,
|
|
|
|
hash ? "",
|
|
|
|
src ? "",
|
2024-05-02 00:46:19 +00:00
|
|
|
}:
|
|
|
|
|
|
|
|
let
|
|
|
|
extid = if fixedExtid == null then "nixos@${name}" else fixedExtid;
|
2024-06-30 08:12:46 +00:00
|
|
|
source =
|
|
|
|
if url == null then
|
|
|
|
src
|
|
|
|
else
|
|
|
|
fetchurl {
|
|
|
|
url = url;
|
|
|
|
inherit
|
|
|
|
sha1
|
|
|
|
sha256
|
|
|
|
sha512
|
|
|
|
hash
|
|
|
|
;
|
|
|
|
};
|
2024-05-02 00:46:19 +00:00
|
|
|
in
|
|
|
|
stdenv.mkDerivation {
|
|
|
|
inherit name;
|
|
|
|
|
|
|
|
passthru = {
|
|
|
|
inherit extid;
|
|
|
|
};
|
|
|
|
|
|
|
|
builder = writeScript "xpibuilder" ''
|
|
|
|
source $stdenv/setup
|
|
|
|
|
|
|
|
echo "firefox addon $name into $out"
|
|
|
|
|
|
|
|
UUID="${extid}"
|
|
|
|
mkdir -p "$out/$UUID"
|
|
|
|
unzip -q ${source} -d "$out/$UUID"
|
|
|
|
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" *
|
|
|
|
strip-nondeterminism "$out/$UUID.xpi"
|
|
|
|
rm -r "$out/$UUID"
|
|
|
|
'';
|
|
|
|
|
|
|
|
nativeBuildInputs = [
|
|
|
|
jq
|
|
|
|
strip-nondeterminism
|
|
|
|
unzip
|
|
|
|
zip
|
|
|
|
];
|
|
|
|
}
|