about summary refs log tree commit diff stats
path: root/home-manager/firefox/generate-extension.py
diff options
context:
space:
mode:
Diffstat (limited to 'home-manager/firefox/generate-extension.py')
-rwxr-xr-xhome-manager/firefox/generate-extension.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/home-manager/firefox/generate-extension.py b/home-manager/firefox/generate-extension.py
new file mode 100755
index 00000000..cfb73542
--- /dev/null
+++ b/home-manager/firefox/generate-extension.py
@@ -0,0 +1,41 @@
+#!/usr/bin/env python
+# source: https://github.com/etu/nixconfig/blob/ba47d577c8bfb4a1c06927c34ece34118f4a0460/modules/graphical/firefox/generate.py
+
+from concurrent.futures import ThreadPoolExecutor
+import json
+import os
+import requests
+
+EXTENSIONS = sorted([
+    "darkreader",
+    "firenvim",
+    "keepassxc-browser",
+    "simple-tab-groups",
+])
+
+def index_ext(ext: str):
+    print(f"Indexing {ext}...")
+
+    resp = requests.get(f"https://addons.mozilla.org/api/v5/addons/addon/{ext}/").json()
+    rel = resp["current_version"]
+
+    if not rel["file"]["hash"].startswith("sha256:"):
+        raise ValueError("Unhandled hash type")
+
+    return {
+        "pname": ext,
+        "version": rel["version"],
+        "addonId": resp["guid"],
+        "url": rel["file"]["url"],
+        "sha256": rel["file"]["hash"],
+    }
+
+if __name__ == "__main__":
+    outfile = os.path.dirname(os.path.realpath(__file__)) + "/extensions.json"
+
+    with ThreadPoolExecutor() as e:
+        extensions = {ext: e.submit(index_ext, ext) for ext in EXTENSIONS}
+        extensions = {k: v.result() for k, v in extensions.items()}
+
+    with open(outfile, "w") as f:
+        json.dump(extensions, f, indent=2)