From b4bc62ec60acca1bb027a27bfa7e5c6335d7983e Mon Sep 17 00:00:00 2001 From: tzlil Date: Sat, 5 Aug 2023 07:26:19 +0300 Subject: really silly firefox thing --- mixins/firefox/absolute-minimum.nix | 94 +++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 mixins/firefox/absolute-minimum.nix (limited to 'mixins/firefox/absolute-minimum.nix') diff --git a/mixins/firefox/absolute-minimum.nix b/mixins/firefox/absolute-minimum.nix new file mode 100644 index 0000000..7d9fd79 --- /dev/null +++ b/mixins/firefox/absolute-minimum.nix @@ -0,0 +1,94 @@ +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}"; + + addonStartupData = builtins.fromJSON (builtins.readFile (pkgs.runCommand "addonStartup.json" {buildInputs = [ pkgs.xvfb-run pkgs.mozlz4a pkgs.jq (pkgs.firefox.override { + extraPolicies.Extensions.Install = map (x: x.src.outPath) addons; + })];} '' + HOME=$(mktemp -d) + export FONTCONFIG_FILE=${pkgs.makeFontsConf { fontDirectories = [ pkgs.roboto ]; }} + mkdir -p $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 + + mozlz4a -d $HOME/.mozilla/firefox/default/addonStartup.json.lz4 /dev/stdout | jq .\"app-profile\".addons > $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 = pkgs.emptyFile; + 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."${prf}/storage".source = pkgs.emptyDirectory; + 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 = mozlz4 "addonStartup.json" {"app-profile".addons = addonStartupData;}; + 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 = pkgs.emptyFile; + 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; + profiles.${profile} = { + extensions = with firefox-addons; [ + kristofferhagen-nord-theme + ]; + settings = { + "extensions.activeThemeID" = "{e410fec2-1cbd-4098-9944-e21e708418af}"; + "browser.search.hiddenOneOffs" = "Google,Bing,Amazon.com,eBay,Twitter,Wikipedia (en)"; + }; + }; + }; + }; + } -- cgit 1.4.1