diff options
Diffstat (limited to 'mixins/firefox/minimum')
-rw-r--r-- | mixins/firefox/minimum/addons-passthru.patch | 16 | ||||
-rw-r--r-- | mixins/firefox/minimum/default.nix | 414 | ||||
-rw-r--r-- | mixins/firefox/minimum/simplefox.css | 205 |
3 files changed, 635 insertions, 0 deletions
diff --git a/mixins/firefox/minimum/addons-passthru.patch b/mixins/firefox/minimum/addons-passthru.patch new file mode 100644 index 0000000..6bd149d --- /dev/null +++ b/mixins/firefox/minimum/addons-passthru.patch @@ -0,0 +1,16 @@ +diff --git a/default.nix b/default.nix +index 3098b10..806d05c 100644 +--- a/default.nix ++++ b/default.nix +@@ -14,6 +14,11 @@ let + + preferLocalBuild = true; + allowSubstitutes = true; ++ passthru = { ++ inherit addonId; ++ inherit pname; ++ inherit version; ++ }; + + buildCommand = '' + dst="$out/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}" \ No newline at end of file diff --git a/mixins/firefox/minimum/default.nix b/mixins/firefox/minimum/default.nix new file mode 100644 index 0000000..8ecf48a --- /dev/null +++ b/mixins/firefox/minimum/default.nix @@ -0,0 +1,414 @@ +let + profile = "default"; + prf = ".mozilla/firefox/${profile}"; + extstorage = "${prf}/browser-extension-data"; +in + { + config, + inputs, + pkgs, + lib, + ... + }: { + home-manager.users.tzlil = let + firefox-addons = pkgs.callPackage (pkgs.applyPatches { + src = inputs.firefox-addons; + patches = [./addons-passthru.patch]; + name = "firefox-addons-patched"; + }) {}; + mozlz4 = n: x: + pkgs.runCommand "${n}.lz4" {buildInputs = [pkgs.mozlz4a];} '' + mozlz4a ${pkgs.writeTextFile { + name = n; + text = builtins.toJSON x; + }} $out + ''; + cfg = config.home-manager.users.tzlil.programs; + addons = cfg.firefox.profiles.${profile}.extensions; + extensionPath = "extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}"; + + firefoxData = + pkgs.runCommand "firefox-default-profile" { + buildInputs = [ + pkgs.xvfb-run + (pkgs.firefox.override { + extraPolicies = { + Extensions.Install = map (x: x.src.outPath) addons; + ExtensionSettings = { + "google@search.mozilla.org" = {installation_mode = "blocked";}; + "amazondotcom@search.mozilla.org" = {installation_mode = "blocked";}; + "wikipedia@search.mozilla.org" = {installation_mode = "blocked";}; + "bing@search.mozilla.org" = {installation_mode = "blocked";}; + }; + }; + }) + ]; + } '' + HOME=$(mktemp -d) + export FONTCONFIG_FILE=${pkgs.makeFontsConf {fontDirectories = [pkgs.roboto];}} + mkdir -p $HOME/.mozilla/firefox/ + mkdir $out + ln -s $out $HOME/.mozilla/firefox/default + cat >> $HOME/.mozilla/firefox/profiles.ini<< EOF + [Profile0] + Default=1 + IsRelative=1 + Name=default + Path=default + EOF + + echo user_pref\(\"browser.region.network.url\", \"\"\)\; > $HOME/.mozilla/firefox/default/user.js + + xvfb-run firefox --screenshot about:blank --headless + + # cat $HOME/.mozilla/firefox/default/extensions.json > $out + # + ''; + # extensionsData = "${firefoxData}/extensions.json"; + + # addonStartup = pkgs.runCommand "addonStartup.json" { + # buildInputs = [ + # pkgs.mozlz4a + # pkgs.jq + # ]; + # } + # '' + # mozlz4a -d ${firefoxData}/addonStartup.json.lz4 /dev/stdout | jq . > $out + # ''; + + # decrappedAddonStartup = lib.attrsets.updateManyAttrsByPath [ + # { + # path = ["app-builtin" "addons" "google@search.mozilla.org" "enable"]; + # update = old: false; + # } + # ] addonStartup; + + extensionManifest = e: + builtins.fromJSON (builtins.readFile (pkgs.runCommand "${e.addonId}-manifest.json" {buildInputs = [pkgs.p7zip];} '' + 7z x -so ${e.src.outPath} manifest.json > $out + '')); + in { + # these come from the HM module + home.file."${prf}/extension-preferences.json".source = pkgs.emptyFile; + home.file."${prf}/extension-preferences.json.tmp".source = pkgs.emptyFile; + + home.file."${prf}/extension-settings.json".source = pkgs.emptyFile; + home.file."${prf}/extension-settings.json.tmp".source = pkgs.emptyFile; + + home.file."${prf}/search.json.mozlz4".source = mozlz4 "search.json.mozlz4" { + engines = [ + { + _isAppProvided = true; + _metaData = {hidden = true;}; + _name = "Google"; + id = "google@search.mozilla.orgdefault"; + } + { + _isAppProvided = true; + _metaData = {hidden = true;}; + _name = "Amazon.com"; + id = "amazondotcom@search.mozilla.orgdefault"; + } + { + _isAppProvided = true; + _metaData = {hidden = true;}; + _name = "Wikipedia (en)"; + id = "wikipedia@search.mozilla.orgdefault"; + } + { + _isAppProvided = true; + _metaData = {hidden = true;}; + _name = "Bing"; + id = "bing@search.mozilla.orgdefault"; + } + { + _isAppProvided = true; + _metaData = {hidden = true;}; + _name = "DuckDuckGo"; + id = "ddg@search.mozilla.orgdefault"; + } + { + __searchForm = "https://kagi.com/"; + _definedAliases = []; + _iconMapObj = {"{\"width\":48,\"height\":48}" = "data:image/vnd.microsoft.icon;base64,AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAABMLAAATCwAAAAAAAAAAAAAAAAAAGbL/ABiy/w8Zsv9fGbP/vhmz//AZs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//EZs//BGbP/ZRiz/w0Ys/8AAAAAABmy/wAZsv8YGbP/nRmz//QZs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbX//xm1//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs//0GbP/mxiy/xgZsv8AGbL/DBmz/5sZs//+GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz/v8ZldH/GZTR/xmt9f8Ztf//GbT//xmz//8Zs///GbP//xmz//8Zs//+GbP/nRmz/w8Zs/9kGbP/8xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbT//xm2//8Ztv//GbX//xm1//8Ztf//GbX//xm1//8Ztf//GaLl/xk6S/8ZJSz/GUVc/xlxnP8Zpuz/GbT//xmz//8Zs///GbP//xmz//8Zs//zGbP/Xxmz/8AZs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbT//xmz/f8ZoOL/GYe9/xmDt/8Zh73/GYvD/xmQyv8ZlNH/GZjX/xmU0f8ZUm7/GRkZ/xkYGP8ZFRT/GSs1/xmZ2P8ZtP//GbP//xmz//8Zs///GbP//xmz//8Zs/++GbP/8Bmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zrvf/GXKe/xkyP/8ZHyL/GR0f/xkgIv8ZIiX/GSQp/xkmLf8ZKC//GSYs/xkaGv8ZGRn/GRkZ/xkYGP8ZYIL/GbL8/xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//AZs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbL9/xlumP8ZHiD/GRcW/xkZGP8ZGRj/GRgY/xkYGP8ZGBj/GRgY/xkYF/8ZGBj/GRkZ/xkYGP8ZFxb/GT5Q/xmg4v8ZtP//GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xm0//8Zmdj/GSw2/xkXF/8ZGRn/GRkZ/xkXF/8ZFxb/GRcW/xkXFv8ZFxb/GRcW/xkXFv8ZGBf/GSMn/xlRbP8Zm9v/GbT//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///Gbb//xl7rP8ZGxz/GRkZ/xkZGf8ZHR//GUtk/xljiP8ZY4j/GWOI/xljiP8ZY4j/GWOI/xlvmf8ZjMX/Ga31/xm0//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Ztv//GXSg/xkYGP8ZGRn/GRcW/xk+UP8ZqO//GbT//xm1//8Ztf//GbX//xm1//8ZtP//GbX//xm1//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xm1//8ZhLn/GR4h/xkZGP8ZFxb/GUZb/xmw+P8Zsvz/Gabs/xme4P8ZnuD/Gabs/xmy/f8Ztf//GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbT//xmk6f8ZOEf/GRcW/xkYGP8ZJCr/GWyV/xlaev8ZOEb/GSkw/xkoMP8ZN0b/GVp6/xmPyv8Zsfz/GbT//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbT//xl9rv8ZICT/GRgY/xkZGf8ZGhr/GRcX/xkXF/8ZGBf/GRgX/xkXFv8ZFxb/GSYs/xlpkf8ZrfT/GbT//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbD5/xltlv8ZHyP/GRkY/xkZGf8ZGRn/GRgY/xkXFv8ZFxb/GRgY/xkZGf8ZGBf/GRwf/xlli/8ZsPn/GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Ztf//GYK1/xkgJP8ZGBj/GRkZ/xkYF/8ZJy7/GT9S/xk/Uv8ZKC//GRgY/xkZGf8ZGBj/GSEm/xmGu/8Ztf//GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xms9f8ZRlz/GRcW/xkZGf8ZGRn/GUZc/xmSzf8Zrfb/Gaz1/xmRzP8ZQ1j/GRkY/xkZGf8ZFxb/GUlh/xmt9v8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Ztf//GZjW/xknLv8ZGBj/GRgX/xkxPP8Zm9r/Gbb//xmz//8Zs///Gbb//xmY1v8ZMDv/GRgX/xkYGP8ZKC//GZnY/xm1//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xm1//8ZhLn/GR0f/xkZGf8ZFxb/GVZ0/xmz/v8Zs///GbP//xmz//8Zs///GbP+/xlXdf8ZFxb/GRkZ/xkdH/8Zh73/GbX//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbX//xmBtP8ZHB7/GRkZ/xkXF/8ZYYP/GbX//xmz//8Zs///GbP//xmz//8ZtP//GV+B/xkXFv8ZGRn/GRwe/xmCtv8Ztf//GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Ztf//GY3H/xkgI/8ZGRj/GRcW/xlEWv8ZrfT/GbT//xmz//8Zs///GbT//xmr8v8ZQlf/GRcW/xkZGP8ZICT/GY7I/xm1//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xm0//8Zo+f/GTRB/xkXF/8ZGRj/GR8i/xlzn/8ZsPn/GbX//xm1//8Zsfr/GXGd/xkfIv8ZGRj/GRcX/xk1Qv8Zo+f/GbT//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8ZY4f/GRkZ/xkZGf8ZGBj/GSIm/xlTcP8ZfK3/GXys/xlWdP8ZIib/GRgY/xkZGf8ZGBj/GWSJ/xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbT//xmh5P8ZPU7/GRcV/xkZGf8ZGBj/GRcX/xkcHf8ZHB3/GRcX/xkYGP8ZGRn/GRgX/xk8Tv8ZoOL/GbT//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbT//xmRzP8ZN0b/GRgX/xkYF/8ZGRn/GRkZ/xkZGf8ZGRn/GRkZ/xkYGP8ZICT/GYG0/xmz//8Zsv3/GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbT//xmc3f8ZVnT/GScu/xkZGv8ZGBf/GRgY/xkZGf8ZGRn/GRkZ/xkbHP8ZO0z/GVNv/xmHvf8ZtP//GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbT//xmv+P8ZldP/GXem/xlli/8ZZoz/GXWj/xk7TP8ZFxb/GRkZ/xkXFv8ZFxb/GW+Z/xm1//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP/8Bmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xm0//8Ztf//GbT//xm0//8Ztf//GY3G/xkxPf8ZFxb/GRcW/xkXF/8Zb5n/GbX//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//AZs/++GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8ZtP7/GZbT/xlbe/8ZPU//GTtM/xl/sf8Ztf//GbP//xmz//8Zs///GbP//xmz//8Zs///GbP/wBmz/18Zs//zGbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Ztf//GbL9/xms9f8Zq/P/GbD6/xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//MZs/9kGLL/Dxmz/54Zs//+GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs//+GbP/mxmz/wwZtP8AGrT/GBmz/5sZs//0GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP/9Bmz/50atP8YGbT/AAAAAAAYsv8AGLH/DRmz/2QZs//BGbP/8Rmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP/8Bmz/74Zs/9fGLT/Dxmz/wAAAAAAwAAAA4AAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAcAAAAM=";}; + _iconURL = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAURJREFUOE+dk79LAzEcxT+B0goKIih64k9wcxHBzVE66aarY4uHoIMUl8NBK4iLxSq0CP4HRdqlUGdxEx2KIFRBa9VBRBDUFk/Cedgjd95hliTkvZf3fclXAJgFbQdYkuvAQ5AV07W4MPNaBkEsMNEJTAmzoJl+5MojTBrQGoGrXSfaU+D4AubTTnBggWEdPhpOciQE1/uqV8XBwwuMJyzgfdaae38SOknCUJdPCWMr8PT6S5bwegMGdehuh7NtH4GJVag+Q8mA0X4LXL6FqXUY6ITTTR+BLxP64hboUIe3T1g8cJbULKFksFeEZE4NayEKxmyAEO3AZIBbR/Beh7U575+iOLAFKmkQwiLKORxyF/EUcIPbz/pnBvIwloHLKoz0QEcbnN9A+c49SOkgUCdGNyCfgJZw0/2yI+X2nx2ZEjO15W8/wHRJmDJVowAAAABJRU5ErkJggg=="; + _iconUpdateURL = null; + _loadPath = "[https]kagi.com/kagi.xml"; + _metaData = { + loadPathHash = "UtVcODv+iDIE7YbKsRgmcuEtoupCFvV7xIfe+lM7oDs="; + order = 6; + }; + _name = "Kagi"; + _orderHint = null; + _telemetryId = null; + _updateInterval = null; + _updateURL = null; + _urls = [ + { + params = []; + rels = ["results"]; + template = "https://kagi.com/search?q={searchTerms}"; + } + { + params = []; + rels = ["suggestions"]; + template = "https://kagi.com/api/autosuggest?q={searchTerms}"; + type = "application/x-suggestions+json"; + } + ]; + description = "A privacy-focused, user-centric search engine."; + id = "de6311b3-e1df-456e-bc42-73f88ffcd9eb"; + } + { + __searchForm = "https://search.nixos.org/"; + _definedAliases = ["!np"]; + # _iconMapObj = {"{\"width\":48,\"height\":48}" = "data:image/vnd.microsoft.icon;base64,AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAABMLAAATCwAAAAAAAAAAAAAAAAAAGbL/ABiy/w8Zsv9fGbP/vhmz//AZs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//EZs//BGbP/ZRiz/w0Ys/8AAAAAABmy/wAZsv8YGbP/nRmz//QZs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbX//xm1//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs//0GbP/mxiy/xgZsv8AGbL/DBmz/5sZs//+GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz/v8ZldH/GZTR/xmt9f8Ztf//GbT//xmz//8Zs///GbP//xmz//8Zs//+GbP/nRmz/w8Zs/9kGbP/8xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbT//xm2//8Ztv//GbX//xm1//8Ztf//GbX//xm1//8Ztf//GaLl/xk6S/8ZJSz/GUVc/xlxnP8Zpuz/GbT//xmz//8Zs///GbP//xmz//8Zs//zGbP/Xxmz/8AZs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbT//xmz/f8ZoOL/GYe9/xmDt/8Zh73/GYvD/xmQyv8ZlNH/GZjX/xmU0f8ZUm7/GRkZ/xkYGP8ZFRT/GSs1/xmZ2P8ZtP//GbP//xmz//8Zs///GbP//xmz//8Zs/++GbP/8Bmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zrvf/GXKe/xkyP/8ZHyL/GR0f/xkgIv8ZIiX/GSQp/xkmLf8ZKC//GSYs/xkaGv8ZGRn/GRkZ/xkYGP8ZYIL/GbL8/xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//AZs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbL9/xlumP8ZHiD/GRcW/xkZGP8ZGRj/GRgY/xkYGP8ZGBj/GRgY/xkYF/8ZGBj/GRkZ/xkYGP8ZFxb/GT5Q/xmg4v8ZtP//GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xm0//8Zmdj/GSw2/xkXF/8ZGRn/GRkZ/xkXF/8ZFxb/GRcW/xkXFv8ZFxb/GRcW/xkXFv8ZGBf/GSMn/xlRbP8Zm9v/GbT//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///Gbb//xl7rP8ZGxz/GRkZ/xkZGf8ZHR//GUtk/xljiP8ZY4j/GWOI/xljiP8ZY4j/GWOI/xlvmf8ZjMX/Ga31/xm0//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Ztv//GXSg/xkYGP8ZGRn/GRcW/xk+UP8ZqO//GbT//xm1//8Ztf//GbX//xm1//8ZtP//GbX//xm1//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xm1//8ZhLn/GR4h/xkZGP8ZFxb/GUZb/xmw+P8Zsvz/Gabs/xme4P8ZnuD/Gabs/xmy/f8Ztf//GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbT//xmk6f8ZOEf/GRcW/xkYGP8ZJCr/GWyV/xlaev8ZOEb/GSkw/xkoMP8ZN0b/GVp6/xmPyv8Zsfz/GbT//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbT//xl9rv8ZICT/GRgY/xkZGf8ZGhr/GRcX/xkXF/8ZGBf/GRgX/xkXFv8ZFxb/GSYs/xlpkf8ZrfT/GbT//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbD5/xltlv8ZHyP/GRkY/xkZGf8ZGRn/GRgY/xkXFv8ZFxb/GRgY/xkZGf8ZGBf/GRwf/xlli/8ZsPn/GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Ztf//GYK1/xkgJP8ZGBj/GRkZ/xkYF/8ZJy7/GT9S/xk/Uv8ZKC//GRgY/xkZGf8ZGBj/GSEm/xmGu/8Ztf//GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xms9f8ZRlz/GRcW/xkZGf8ZGRn/GUZc/xmSzf8Zrfb/Gaz1/xmRzP8ZQ1j/GRkY/xkZGf8ZFxb/GUlh/xmt9v8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Ztf//GZjW/xknLv8ZGBj/GRgX/xkxPP8Zm9r/Gbb//xmz//8Zs///Gbb//xmY1v8ZMDv/GRgX/xkYGP8ZKC//GZnY/xm1//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xm1//8ZhLn/GR0f/xkZGf8ZFxb/GVZ0/xmz/v8Zs///GbP//xmz//8Zs///GbP+/xlXdf8ZFxb/GRkZ/xkdH/8Zh73/GbX//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbX//xmBtP8ZHB7/GRkZ/xkXF/8ZYYP/GbX//xmz//8Zs///GbP//xmz//8ZtP//GV+B/xkXFv8ZGRn/GRwe/xmCtv8Ztf//GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Ztf//GY3H/xkgI/8ZGRj/GRcW/xlEWv8ZrfT/GbT//xmz//8Zs///GbT//xmr8v8ZQlf/GRcW/xkZGP8ZICT/GY7I/xm1//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xm0//8Zo+f/GTRB/xkXF/8ZGRj/GR8i/xlzn/8ZsPn/GbX//xm1//8Zsfr/GXGd/xkfIv8ZGRj/GRcX/xk1Qv8Zo+f/GbT//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8ZY4f/GRkZ/xkZGf8ZGBj/GSIm/xlTcP8ZfK3/GXys/xlWdP8ZIib/GRgY/xkZGf8ZGBj/GWSJ/xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbT//xmh5P8ZPU7/GRcV/xkZGf8ZGBj/GRcX/xkcHf8ZHB3/GRcX/xkYGP8ZGRn/GRgX/xk8Tv8ZoOL/GbT//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbT//xmRzP8ZN0b/GRgX/xkYF/8ZGRn/GRkZ/xkZGf8ZGRn/GRkZ/xkYGP8ZICT/GYG0/xmz//8Zsv3/GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbT//xmc3f8ZVnT/GScu/xkZGv8ZGBf/GRgY/xkZGf8ZGRn/GRkZ/xkbHP8ZO0z/GVNv/xmHvf8ZtP//GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbT//xmv+P8ZldP/GXem/xlli/8ZZoz/GXWj/xk7TP8ZFxb/GRkZ/xkXFv8ZFxb/GW+Z/xm1//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP/8Bmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xm0//8Ztf//GbT//xm0//8Ztf//GY3G/xkxPf8ZFxb/GRcW/xkXF/8Zb5n/GbX//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//AZs/++GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8ZtP7/GZbT/xlbe/8ZPU//GTtM/xl/sf8Ztf//GbP//xmz//8Zs///GbP//xmz//8Zs///GbP/wBmz/18Zs//zGbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Ztf//GbL9/xms9f8Zq/P/GbD6/xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//MZs/9kGLL/Dxmz/54Zs//+GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs//+GbP/mxmz/wwZtP8AGrT/GBmz/5sZs//0GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP/9Bmz/50atP8YGbT/AAAAAAAYsv8AGLH/DRmz/2QZs//BGbP/8Rmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP//xmz//8Zs///GbP/8Bmz/74Zs/9fGLT/Dxmz/wAAAAAAwAAAA4AAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAcAAAAM=";}; + # _iconURL = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAURJREFUOE+dk79LAzEcxT+B0goKIih64k9wcxHBzVE66aarY4uHoIMUl8NBK4iLxSq0CP4HRdqlUGdxEx2KIFRBa9VBRBDUFk/Cedgjd95hliTkvZf3fclXAJgFbQdYkuvAQ5AV07W4MPNaBkEsMNEJTAmzoJl+5MojTBrQGoGrXSfaU+D4AubTTnBggWEdPhpOciQE1/uqV8XBwwuMJyzgfdaae38SOknCUJdPCWMr8PT6S5bwegMGdehuh7NtH4GJVag+Q8mA0X4LXL6FqXUY6ITTTR+BLxP64hboUIe3T1g8cJbULKFksFeEZE4NayEKxmyAEO3AZIBbR/Beh7U575+iOLAFKmkQwiLKORxyF/EUcIPbz/pnBvIwloHLKoz0QEcbnN9A+c49SOkgUCdGNyCfgJZw0/2yI+X2nx2ZEjO15W8/wHRJmDJVowAAAABJRU5ErkJggg=="; + _iconURL = "file://${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; + _iconUpdateURL = null; + # _loadPath = "[https]kagi.com/kagi.xml"; + _metaData = { + # loadPathHash = "UtVcODv+iDIE7YbKsRgmcuEtoupCFvV7xIfe+lM7oDs="; + order = 7; + }; + _name = "nixpkgs"; + _orderHint = null; + _telemetryId = null; + _updateInterval = null; + _updateURL = null; + _urls = [ + { + params = []; + rels = ["results"]; + template = "https://search.nixos.org/packages?query={searchTerms}"; + } + ]; + description = "nixpkgs"; + id = "229feefe-acd1-47ac-87e1-11373a6608b5"; + } + ]; + metaData = { + appDefaultEngineId = "google@search.mozilla.orgdefault"; + channel = "default"; + defaultEngineId = "de6311b3-e1df-456e-bc42-73f88ffcd9eb"; + defaultEngineIdHash = "G2Ce4is1f2X6BdVBEv3KgHQDQPdU4JHhPKU9dJz7uPU="; + distroID = "nixos"; + experiment = ""; + locale = "en-US"; + region = "IL"; + useSavedOrder = true; + }; + version = 9; + }; + home.file."${prf}/search.json.mozlz4.tmp".source = pkgs.emptyFile; + + home.file."${prf}/extensions".source = lib.mkForce "${pkgs.symlinkJoin { + name = "extensions"; + paths = addons; + }}/share/mozilla/${extensionPath}"; + + home.file."${extstorage}/redirector@einaregilsson.com/storage.js".text = builtins.toJSON { + redirects = + map ({ + includePattern, + redirectUrl, + description, + }: { + appliesTo = ["main_frame"]; + inherit description; + disabled = false; + error = null; + exampleResult = ""; + exampleUrl = ""; + excludePattern = ""; + grouped = false; + inherit includePattern; + patternDesc = ""; + patternType = "W"; + processMatches = "noProcessing"; + inherit redirectUrl; + }) [ + { + includePattern = "https://*youtube.com/watch?*v=*"; + redirectUrl = "https://yewtu.be/watch?$2v=$3"; + description = "invidious"; + } + { + includePattern = "https://*youtube.com/results?*search_query=*"; + redirectUrl = "https://yewtu.be/search?$2q=$3"; + description = "invidious search"; + } + ]; + enableNotifications = false; + }; + + home.file."${prf}/crashes".source = pkgs.emptyDirectory; + home.file."${prf}/datareporting".source = pkgs.emptyDirectory; + home.file."${prf}/saved-telemetry-pings".source = pkgs.emptyDirectory; + + # home.file."${prf}/addonStartup.json.lz4".source = "${firefoxData}/addonStartup.json.lz4"; + # home.file."${prf}/addonStartup.json.lz4.tmp".source = pkgs.emptyFile; + + home.file."${prf}/addons.json".source = pkgs.emptyFile; + home.file."${prf}/addons.json.tmp".source = pkgs.emptyFile; + + # home.file."${prf}/extensions.json".source = extensionsData; + # home.file."${prf}/extensions.json".text = builtins.toJSON { + # schemaVersion = 35; + # addons = + # map (x: { + # active = true; + # appDisabled = false; + # defaultLocale = {}; + # embedderDisabled = false; + # foreignInstall = true; + # hidden = false; + # id = x.addonId; + # location = "app-profile"; + # manifestVersion = (extensionManifest x).manifest_version; + # optionalPermissions = { + # permissions = (extensionManifest x).optional_permissions or []; + # origins = (extensionManifest x).optional_permissions or []; + # }; + # path = x.src.outPath; + # rootURI = "jar:file://${x.src.outPath}!/"; + # softDisabled = false; + # type = "extension"; + # userDisabled = false; + # userPermissions = { + # permissions = (extensionManifest x).permissions or []; + # origins = (extensionManifest x).permissions or []; + # }; + # version = (extensionManifest x).version; + # }) + # addons; + # }; + # home.file."${prf}/extensions.json.tmp".source = pkgs.emptyFile; + + # tries to access W_OK it forever + # home.file."${prf}/prefs.js".source = pkgs.emptyFile; + + # home.file."${prf}/prefs-1.js".source = pkgs.emptyFile; + + programs.firefox = { + enable = true; + package = pkgs.firefox-wayland.override { + extraPolicies = { + CaptivePortal = false; + DisableFirefoxStudies = true; + DisablePocket = true; + DisableTelemetry = true; + DisableFirefoxAccounts = true; + FirefoxHome = { + Pocket = false; + Snippets = false; + }; + UserMessaging = { + ExtensionRecommendations = false; + SkipOnboarding = true; + }; + SearchEngines.Default = "Kagi"; + Extensions.Install = map (x: x.src.outPath) addons; + ExtensionSettings = { + # "google@search.mozilla.org" = {installation_mode = "blocked";}; + # "amazondotcom@search.mozilla.org" = {installation_mode = "blocked";}; + # "wikipedia@search.mozilla.org" = {installation_mode = "blocked";}; + # "bing@search.mozilla.org" = {installation_mode = "blocked";}; + "{3c078156-979c-498b-8990-85f7987dd929}" = {installation_mode = "force_installed";}; + }; + }; + }; + profiles.${profile} = { + userChrome = + builtins.readFile ./simplefox.css + + '' + /* hide top tabs */ + #TabsToolbar { + visibility: collapse !important; + margin-bottom: 21px !important; + } + #sidebar-box[sidebarcommand="treestyletab_piro_sakura_ne_jp-sidebar-action"] #sidebar-header { + visibility: collapse !important; + } + + /* + * Bookmarks toolbar is visible only on new tab page, just like Chrome. + */ + + #main-window #PersonalToolbar { + visibility: collapse !important; + } + + #main-window[title^="about:newtab"] #PersonalToolbar, + #main-window[title^="New Tab"] #PersonalToolbar, + #main-window[title^="Nightly"] #PersonalToolbar, + #main-window[title^="Mozilla Firefox"] #PersonalToolbar, + #main-window[title^="Firefox"] #PersonalToolbar, + #main-window[title^="新标签页"] #PersonalToolbar, + #main-window[title^="Customize Firefox"] #PersonalToolbar { + visibility: visible !important; + } + ''; + extensions = with firefox-addons; [ + # ublock-origin + # clearurls + # privacy-possum + # skip-redirect + # canvasblocker + i-dont-care-about-cookies + darkreader + (firefox-addons.buildFirefoxXpiAddon { + pname = "sidebery"; + version = "v5.0.0rc4"; + addonId = "{3c078156-979c-498b-8990-85f7987dd929}"; + url = "https://github.com/mbnuqw/sidebery/releases/download/v5.0.0rc4/sidebery-5.0.0rc4.xpi"; + sha256 = "sha256-YsH9yYfGefClRS93dMV/eLMFuoPFKPrx0NL2hIv4dEk="; + meta = with lib; { + homepage = "https://github.com/mbnuqw/sidebery"; + description = "Tabs tree and bookmarks in sidebar with advanced containers configuration."; + license = licenses.mit; + platforms = platforms.all; + }; + }) + sidebery + redirector + ublock-origin + keepassxc-browser + ]; + settings = { + "extensions.activeThemeID" = "{e410fec2-1cbd-4098-9944-e21e708418af}"; + + # (try to) hide crap + "browser.search.hiddenOneOffs" = "Google,Bing,Amazon.com,eBay,Twitter,Wikipedia (en)"; + "browser.newtabpage.activity-stream.showSponsored" = false; + "browser.newtabpage.activity-stream.showSponsoredTopSites" = false; + "services.sync.prefs.sync.browser.newtabpage.activity-stream.showSponsored" = false; + "services.sync.prefs.sync.browser.newtabpage.activity-stream.showSponsoredTopSites" = false; + "browser.newtabpage.activity-stream.default.sites" = ""; + "browser.urlbar.suggest.topsites" = false; + "browser.newtabpage.activity-stream.feeds.topsites" = false; + + # disable welcome page + "browser.aboutwelcome.enabled" = false; + # disable privacy notice + "datareporting.policy.firstRunURL" = ""; + # "browser.newtabpage.activity-stream.aboutHome.enabled" = false; + + #simplefox + "toolkit.legacyUserProfileCustomizations.stylesheets" = true; + "layers.acceleration.force-enabled" = true; + "gfx.webrender.all" = true; + "svg.context-properties.content.enabled" = true; + + "signon.rememberSignons" = false; + }; + # extraConfig = { + + # }; + }; + }; + }; + environment.persistence."/nix/persist".users.tzlil.directories = [ + "${extstorage}/keepassxc-browser@keepassxc.org" + ]; + } diff --git a/mixins/firefox/minimum/simplefox.css b/mixins/firefox/minimum/simplefox.css new file mode 100644 index 0000000..08a8f93 --- /dev/null +++ b/mixins/firefox/minimum/simplefox.css @@ -0,0 +1,205 @@ +/* +┌─┐┬┌┬┐┌─┐┬ ┌─┐ +└─┐││││├─┘│ ├┤ +└─┘┴┴ ┴┴ ┴─┘└─┘ +┌─┐┌─┐─┐ ┬ +├┤ │ │┌┴┬┘ +└ └─┘┴ └─ + +by Miguel Avila + +*/ + +/* + +┌─┐┌─┐┌┐┌┌─┐┬┌─┐┬ ┬┬─┐┌─┐┌┬┐┬┌─┐┌┐┌ +│ │ ││││├┤ ││ ┬│ │├┬┘├─┤ │ ││ ││││ +└─┘└─┘┘└┘└ ┴└─┘└─┘┴└─┴ ┴ ┴ ┴└─┘┘└┘ + +*/ + +:root { + --sfwindow: #19171a; + --sfsecondary: #201e21; + } + + /* Urlbar View */ + + /*─────────────────────────────*/ + /* Comment this section if you */ + /* want to show the URL Bar */ + /*─────────────────────────────*/ + + .urlbarView { + display: none !important; + } + + /*─────────────────────────────*/ + + /* + ┌─┐┌─┐┬ ┌─┐┬─┐┌─┐ + │ │ ││ │ │├┬┘└─┐ + └─┘└─┘┴─┘└─┘┴└─└─┘ + */ + + /* Tabs colors */ + #tabbrowser-tabs:not([movingtab]) + > #tabbrowser-arrowscrollbox + > .tabbrowser-tab + > .tab-stack + > .tab-background[multiselected='true'], + #tabbrowser-tabs:not([movingtab]) + > #tabbrowser-arrowscrollbox + > .tabbrowser-tab + > .tab-stack + > .tab-background[selected='true'] { + background-image: none !important; + background-color: var(--toolbar-bgcolor) !important; + } + + /* Inactive tabs color */ + #navigator-toolbox { + background-color: var(--sfwindow) !important; + } + + /* Window colors */ + :root { + --toolbar-bgcolor: var(--sfsecondary) !important; + --tabs-border-color: var(--sfsecondary) !important; + --lwt-sidebar-background-color: var(--sfwindow) !important; + --lwt-toolbar-field-focus: var(--sfsecondary) !important; + } + + /* Sidebar color */ + #sidebar-box, + .sidebar-placesTree { + background-color: var(--sfwindow) !important; + } + + /* + + ┌┬┐┌─┐┬ ┌─┐┌┬┐┌─┐ + ││├┤ │ ├┤ │ ├┤ + ─┴┘└─┘┴─┘└─┘ ┴ └─┘ + ┌─┐┌─┐┌┬┐┌─┐┌─┐┌┐┌┌─┐┌┐┌┌┬┐┌─┐ + │ │ ││││├─┘│ ││││├┤ │││ │ └─┐ + └─┘└─┘┴ ┴┴ └─┘┘└┘└─┘┘└┘ ┴ └─┘ + + */ + + /* Tabs elements */ + .tab-close-button { + display: none; + } + + .tabbrowser-tab:not([pinned]) .tab-icon-image { + display: none !important; + } + + #nav-bar:not([tabs-hidden='true']) { + box-shadow: none; + } + + #tabbrowser-tabs[haspinnedtabs]:not([positionpinnedtabs]) + > #tabbrowser-arrowscrollbox + > .tabbrowser-tab[first-visible-unpinned-tab] { + margin-inline-start: 0 !important; + } + + :root { + --toolbarbutton-border-radius: 0 !important; + --tab-border-radius: 0 !important; + --tab-block-margin: 0 !important; + } + + .tab-background { + border-right: 0px solid rgba(0, 0, 0, 0) !important; + margin-left: -4px !important; + } + + .tabbrowser-tab:is([visuallyselected='true'], [multiselected]) + > .tab-stack + > .tab-background { + box-shadow: none !important; + } + + .tabbrowser-tab[last-visible-tab='true'] { + padding-inline-end: 0 !important; + } + + #tabs-newtab-button { + padding-left: 0 !important; + } + + /* Url Bar */ + #urlbar-input-container { + background-color: var(--sfsecondary) !important; + border: 1px solid rgba(0, 0, 0, 0) !important; + } + + #urlbar-container { + margin-left: 0 !important; + } + + #urlbar[focused='true'] > #urlbar-background { + box-shadow: none !important; + } + + #navigator-toolbox { + border: none !important; + } + + /* Bookmarks bar */ + .bookmark-item .toolbarbutton-icon { + display: none; + } + toolbarbutton.bookmark-item:not(.subviewbutton) { + min-width: 1.6em; + } + + /* Toolbar */ + #tracking-protection-icon-container, + #urlbar-zoom-button, + #star-button-box, + #pageActionButton, + #pageActionSeparator, + #tabs-newtab-button, + #back-button, + #PanelUI-button, + #forward-button, + .tab-secondary-label { + display: none !important; + } + + .urlbarView-url { + color: #dedede !important; + } + + /* Disable elements */ + #context-navigation, + #context-savepage, + #context-pocket, + #context-sendpagetodevice, + #context-selectall, + #context-viewsource, + #context-inspect-a11y, + #context-sendlinktodevice, + #context-openlinkinusercontext-menu, + #context-bookmarklink, + #context-savelink, + #context-savelinktopocket, + #context-sendlinktodevice, + #context-searchselect, + #context-sendimage, + #context-print-selection { + display: none !important; + } + + #context_bookmarkTab, + #context_moveTabOptions, + #context_sendTabToDevice, + #context_reopenInContainer, + #context_selectAllTabs, + #context_closeTabOptions { + display: none !important; + } \ No newline at end of file |