{ pkgs, util, ... } @args: let
	config = import ./Config.nix args;

	mkExtension = url: {
		installation_mode = "force_installed";
		install_url       = url;
	};

	mkBookmark = name: url: { inherit name url; };
in {
	# Disable profile switching on rebuild.
	environment.variables.MOZ_LEGACY_PROFILES = "1";

	programs.firefox = {
		enable  = true;
		package = pkgs.firefox-esr;
		languagePacks = [ "en-US" "ru" ];
		autoConfig = config.text;
		policies = {
			ManagedBookmarks = [
				{ toplevel_name = "Pin"; }
				(mkBookmark "Dashboard" "https://home.voronind.com")
				(mkBookmark "Music"     "https://music.yandex.ru")
				(mkBookmark "Telegram"  "https://web.telegram.org/a")
				(mkBookmark "Discord"   "https://discord.com")
				(mkBookmark "WorkMail"  "https://mail.fsight.ru")
				(mkBookmark "Git"       "https://git.voronind.com")
				(mkBookmark "WorkGit"   "https://git.fmp.fsight.world")
				(mkBookmark "WorkBoard" "https://support.fsight.ru")
				(mkBookmark "Hass"      "https://iot.voronind.com")
				(mkBookmark "Cloud"     "https://cloud.voronind.com")
			];
			ExtensionUpdate = true;
			ExtensionSettings = {
				# Block extension installation outside of this config.
				"*" = {
					install_sources   = [ "*" ];
					installation_mode = "blocked";
				};
				"addon@darkreader.org"                   = mkExtension "https://addons.mozilla.org/firefox/downloads/latest/darkreader/latest.xpi";
				"cliget@zaidabdulla.com"                 = mkExtension "https://addons.mozilla.org/firefox/downloads/latest/cliget/latest.xpi";
				"uBlock0@raymondhill.net"                = mkExtension "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
				"{446900e4-71c2-419f-a6a7-df9c091e268b}" = mkExtension "https://addons.mozilla.org/firefox/downloads/latest/bitwarden-password-manager/latest.xpi";
				"{d7742d87-e61d-4b78-b8a1-b469842139fa}" = mkExtension "https://addons.mozilla.org/firefox/downloads/latest/vimium-ff/latest.xpi";
				"{e7625f06-e252-479d-ac7a-db68aeaff2cb}" = mkExtension "https://addons.mozilla.org/firefox/downloads/latest/togglefonts/latest.xpi";
				"{a6c4a591-f1b2-4f03-b3ff-767e5bedf4e7}" = mkExtension "https://addons.mozilla.org/firefox/downloads/latest/user-agent-string-switcher/latest.xpi";
				# NOTE: This extension is helpful to find the required parameters for this config.
				# Or find them yourself inside the `about:support`.
				# "queryamoid@kaply.com"                   = mkExtension "https://github.com/mkaply/queryamoid/releases/download/v0.1/query_amo_addon_id-0.1-fx.xpi";
			};
			# NOTE: `firefox-esr` edition is required to change default search engine.
			SearchEngines = {
				Default = "Searx";
				Add = [
					{
						Alias              = "s";
						Description        = "Searx Search";
						IconURL            = "https://search.voronind.com/favicon.ico";
						Method             = "POST";
						Name               = "Searx";
						PostData           = "q={searchTerms}";
						SuggestURLTemplate = "https://search.voronind.com/autocomplete?q={searchTerms}";
						URLTemplate        = "https://search.voronind.com/search?q=%{searchTerms}";
					}
				];
			};
		};
	};
}