{ config, lib, pkgs, ... }: with lib; let userjs = pkgs.callPackage ./userjs.nix { inherit (pkgs.personal.static.userjs) arkenfox; inherit (pkgs.lib.personal) toUserJS; }; engines = import ./engines.nix { inherit lib pkgs; }; in { config = lib.mkMerge [ { stylix.targets.firefox = { colorTheme.enable = true; profileNames = [ "default" ]; }; programs.firefox = { configPath = "${config.xdg.configHome}/mozilla/firefox"; profiles.default = { id = 0; # isDefault = true extensions = { packages = with pkgs.personal.firefoxAddons; [ canvasblocker clearurls darkreader neat-url redirector smart-referer temporary-containers ublock-origin unpaywall url-in-title ]; settings."FirefoxColor@mozilla.com" = { force = true; settings.theme.colors = let mkBgColor = lib.mkForce ( with config.lib.stylix.colors; { r = base00-rgb-r; g = base00-rgb-g; b = base00-rgb-b; } ); in { frame = mkBgColor; sidebar_border = mkBgColor; popup_border = mkBgColor; tab_baground_separator = mkBgColor; tab_line = mkBgColor; toolbar_field_border_focus = mkBgColor; }; }; }; search = { force = lib.mkDefault true; engines = with engines; disableDefault // { inherit Searx; } // lib.optionalAttrs config.personal.identities.personal personal // lib.optionalAttrs config.personal.identities.work work // lib.optionalAttrs config.personal.profiles.dev dev; default = "Searx"; order = [ "Searx" "Wikipedia" ]; }; extraConfig = userjs.default; }; }; } (lib.mkIf config.programs.firefox.enable { home.shellAliases.fftmp = "firefox --profile $(mktemp -d)"; home.sessionVariables.BROWSER = "firefox"; }) ]; }