aboutsummaryrefslogtreecommitdiff
path: root/profiles/addons
diff options
context:
space:
mode:
authortilpner2020-05-18 13:04:08 +0200
committertilpner2020-05-18 13:04:08 +0200
commit63528355a9b9f492809a777d9ac8d6e529688b02 (patch)
treeb8bd0610980dd55521fe0d58c6830674770635d3 /profiles/addons
parent9e60a30afa8aef1fd2258a0217b02cdb3bd123a5 (diff)
downloadfirefox-profiles-63528355a9b9f492809a777d9ac8d6e529688b02.tar.gz
firefox-profiles-63528355a9b9f492809a777d9ac8d6e529688b02.tar.xz
firefox-profiles-63528355a9b9f492809a777d9ac8d6e529688b02.zip
Patch custom qwantjunior addon into omni.ja
Diffstat (limited to 'profiles/addons')
-rw-r--r--profiles/addons/default.nix36
-rw-r--r--profiles/addons/qwantjunior/content-script.js34
-rw-r--r--profiles/addons/qwantjunior/favicon.icobin0 -> 2285 bytes
-rw-r--r--profiles/addons/qwantjunior/managed_storage.json20
-rw-r--r--profiles/addons/qwantjunior/manifest.json40
5 files changed, 127 insertions, 3 deletions
diff --git a/profiles/addons/default.nix b/profiles/addons/default.nix
index 0e1827f..0253026 100644
--- a/profiles/addons/default.nix
+++ b/profiles/addons/default.nix
@@ -1,17 +1,24 @@
-{ lib, fetchurl }:
+{ pkgs, lib, fetchurl, runCommand }:
let
# Extension IDs are used as keys, see .applications.gecko.id in manifest.json
- addon = { id, url, sha256, settings ? null }: {
+ localAddon = { id, src, settings ? null }: {
policies = {
ExtensionSettings.${id} = {
installation_mode = "force_installed";
- install_url = "file://${fetchurl { inherit url sha256; }}";
+ install_url = "file://${src}";
};
} // (lib.optionalAttrs (settings != null) {
"3rdparty".Extensions.${id} = settings;
});
};
+
+ addon = { id, url, sha256, settings ? null }: localAddon {
+ inherit id settings;
+ src = fetchurl {
+ inherit url sha256;
+ };
+ };
in {
# This can be safe-ish, if extension installation is also disabled
disableExtensionSignatureChecking.preferences = {
@@ -40,6 +47,29 @@ in {
settings.adminSettings = builtins.readFile ./ublock/config.json;
};
+ qwantjunior = localAddon {
+ id = "qwantjunior@search.mozilla.org";
+ src = runCommand "addon.xpi" { nativeBuildInputs = [ pkgs.zip ]; } ''
+ SRC=${./qwantsearch}
+ cd $SRC
+ zip -r $out .
+ '';
+
+ settings.settings = {
+ searchRegionKey = "DE";
+ searchLanguageKey = "de";
+ interfaceLanguageKey = "de_de";
+ };
+ };
+
+ qwantjuniorSystem.policies = {
+ "3rdparty".Extensions."qwantjunior@search.mozilla.org".settings = {
+ searchRegionKey = "DE";
+ searchLanguageKey = "de";
+ interfaceLanguageKey = "de_de";
+ };
+ };
+
/*
borderify.policies = {
ExtensionSettings."borderify@example.com" = {
diff --git a/profiles/addons/qwantjunior/content-script.js b/profiles/addons/qwantjunior/content-script.js
new file mode 100644
index 0000000..01b3976
--- /dev/null
+++ b/profiles/addons/qwantjunior/content-script.js
@@ -0,0 +1,34 @@
+"use strict";
+
+function changeSettings(managed) {
+ var preferred = managed.settings;
+ var userStorage = JSON.parse(localStorage.getItem('user'));
+ var needsReload = false;
+
+ if (userStorage == null) {
+ localStorage.setItem('user', JSON.stringify({
+ userSetting: preferred
+ }));
+
+ needsReload = true;
+ } else if (userStorage.version == "2") {
+ var setting = userStorage.userSetting;
+
+ for (const [key, value] of Object.entries(preferred)) {
+ if (setting[key] != preferred[key]) {
+ setting[key] = preferred[key];
+ needsReload = true;
+ }
+ }
+
+ localStorage.setItem('user', JSON.stringify(userStorage));
+ }
+
+ if (needsReload) {
+ location.reload();
+ }
+}
+
+browser.storage.managed
+ .get("settings")
+ .then(changeSettings);
diff --git a/profiles/addons/qwantjunior/favicon.ico b/profiles/addons/qwantjunior/favicon.ico
new file mode 100644
index 0000000..5e44aac
--- /dev/null
+++ b/profiles/addons/qwantjunior/favicon.ico
Binary files differ
diff --git a/profiles/addons/qwantjunior/managed_storage.json b/profiles/addons/qwantjunior/managed_storage.json
new file mode 100644
index 0000000..00afb5a
--- /dev/null
+++ b/profiles/addons/qwantjunior/managed_storage.json
@@ -0,0 +1,20 @@
+{
+ "$schema": "http://json-schema.org/draft-03/schema#",
+ "type": "object",
+ "properties": {
+ "settings": {
+ "type": "object",
+ "properties": {
+ "searchRegionKey": {
+ "type": "string"
+ },
+ "searchLanguageKey": {
+ "type": "string"
+ },
+ "interfaceLanguageKey": {
+ "type": "string"
+ }
+ }
+ }
+ }
+}
diff --git a/profiles/addons/qwantjunior/manifest.json b/profiles/addons/qwantjunior/manifest.json
new file mode 100644
index 0000000..f38a086
--- /dev/null
+++ b/profiles/addons/qwantjunior/manifest.json
@@ -0,0 +1,40 @@
+{
+ "name": "QwantJunior",
+ "description": "Search Qwant Junior",
+ "manifest_version": 2,
+ "version": "1.0",
+ "applications": {
+ "gecko": {
+ "id": "qwantjunior@search.mozilla.org"
+ }
+ },
+ "hidden": true,
+ "icons": {
+ "16": "favicon.ico"
+ },
+ "web_accessible_resources": [
+ "favicon.ico"
+ ],
+ "chrome_settings_overrides": {
+ "search_provider": {
+ "is_default": true,
+ "name": "Qwant Junior",
+ "search_url": "https://www.qwantjunior.com",
+ "search_form": "https://www.qwantjunior.com/?q={searchTerms}",
+ "search_url_get_params": "q={searchTerms}",
+ "suggest_url": "https://api.qwant.com/egp/suggest/",
+ "suggest_url_get_params": "q={searchTerms}&client=opensearch"
+ }
+ },
+
+ "permissions": [
+ "storage",
+ "https://www.qwantjunior.com/*"
+ ],
+
+ "content_scripts": [
+ { "matches": [ "https://www.qwantjunior.com/*" ],
+ "run_at": "document_idle",
+ "js": [ "content-script.js" ] }
+ ]
+}