{
  config,
  lib,
  pkgs,
  ...
}:
{
  stylix.targets.firefox.enable = false;
  programs = {
    browserpass = {
      enable = true;
      browsers = [ "firefox" ];
    };
    firefox = {
      enable = true;
      policies = {
        BlockAboutProfiles = true;
        Cookies = {
          Behavior = "reject-tracker-and-partition-foreign";
          BehaviorPrivateBrowsing = "reject";
          Locked = true;
        };
        DefaultDownloadDirectory = config.xdg.userDirs.download;
        DisableAppUpdate = true;
        DisableFirefoxAccounts = true;
        DisableFirefoxScreenshots = true;
        DisableFirefoxStudies = true;
        DisableFormHistory = true;
        DisablePocket = true;
        DisableProfileImport = true;
        DisableSetDesktopBackground = true;
        DisableSystemAddonUpdate = true;
        DisableTelemetry = true;
        DisplayMenuBar = "default-off";
        DontCheckDefaultBrowser = true;
        EnableTrackingProtection = {
          Value = true;
          Locked = true;
          Cryptomining = true;
          Fingerprinting = true;
        };
        ExtensionSettings = {
          "queryamoid@kaply.com" = {
            installation_mode = "force_installed";
            install_url = "https://github.com/mkaply/queryamoid/releases/download/v0.1/query_amo_addon_id-0.1-fx.xpi";
          };
          # uBlock Origin
          "uBlock0@raymondhill.net" = {
            installation_mode = "force_installed";
            install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
          };
          # Browserpass
          "browserpass@maximbaz.com" = {
            installation_mode = "force_installed";
            install_url = "https://addons.mozilla.org/firefox/downloads/latest/browserpass-ce/latest.xpi";
          };
          # SimpleLogin
          "addon@simplelogin" = {
            installation_mode = "force_installed";
            install_url = "https://addons.mozilla.org/firefox/downloads/latest/simplelogin/latest.xpi";
          };
          # Consent-O-Matic
          "gdpr@cavi.au.dk" = {
            installation_mode = "force_installed";
            install_url = "https://addons.mozilla.org/firefox/downloads/latest/consent-o-matic/latest.xpi";
          };
          # ClearURLs
          "{74145f27-f039-47ce-a470-a662b129930a}" = {
            installation_mode = "force_installed";
            install_url = "https://addons.mozilla.org/firefox/downloads/latest/clearurls/latest.xpi";
          };
        };
        FirefoxHome = {
          Search = true;
          TopSites = false;
          SponsoredTopSites = false;
          Highlights = false;
          Pocket = false;
          SponsoredPocket = false;
          Snippets = false;
          Locked = true;
        };
        FirefoxSuggest = {
          WebSuggestions = false;
          SponsoredSuggestions = false;
          ImproveSuggest = false;
          Locked = true;
        };
        HardwareAcceleration = true;
        Homepage = {
          Locked = true;
          StartPage = "homepage-locked";
        };
        NewTabPage = true;
        NoDefaultBookmarks = false;
        OfferToSaveLogins = false;
        PasswordManagerEnabled = false;
        PDFjs = {
          Enabled = false;
        };
        Permissions = {
          Autoplay = {
            Default = "block-audio-video";
          };
        };
        PictureInPicture = {
          Enabled = true;
        };
        PopupBlocking = {
          Default = true;
        };
        RequestedLocales = [ "en-GB" ];
        SearchBar = "unified";
        ShowHomeButton = true;
        StartDownloadsInTempDirectory = true;
      };
      profiles.user = {
        isDefault = true;
        bookmarks = builtins.fromJSON (builtins.readFile ./bookmarks.json);
        settings = {
          "app.shield.optoutstudies.enabled" = false;
          "browser.startup.homepage" = lib.mkDefault "https://home.xenia.me.uk";
          "browser.tabs.inTitlebar" = 0;
          "browser.bookmarks.addedImportButton" = false;
          "browser.bookmarks.showMobileBookmarks" = false;
          "browser.toolbars.bookmarks.visibility" = "never";
          "browser.contentblocking.category" = "strict";
          "browser.search.region" = "GB";
          "browser.search.isUS" = false;
          "browser.warnOnQuitShortcut" = false;
          "browser.zoom.siteSpecific" = false;
          "distribution.searchplugins.defaultLocale" = "en-GB";
          "doh-rollout.home-region" = "GB";
          "dom.private-attribution.submission.enabled" = false;
          "extensions.activeThemeID" = "default-theme@mozilla.org";
          "extensions.formautofill.creditCards.enabled" = false;
          "general.useragent.locale" = "en-GB";
          "intl.accept_languages" = "en-gb,en";
          "intl.locale.requested" = "en-gb,en";
          "intl.regional_prefs.use_os_locales" = true;
          "media.eme.enabled" = true;
          "privacy.globalprivacycontrol.enabled" = true;
          "privacy.donottrackheader.enabled" = true;
          "privacy.webrtc.legacyGlobalIndicator" = false;
          "signon.management.page.breach-alerts.enabled" = false;
          "signon.rememberSignons" = false;
          "widget.use-xdg-desktop-portal.file-picker" = 1;
          "widget.use-xdg-desktop-portal.mime-handler" = 1;
          "widget.use-xdg-desktop-portal.open-uri" = 1;
          "browser.newtabpage.pinned" = [
            {
              title = "NixOS Wiki";
              url = "https://wiki.nixos.org";
            }
            {
              title = "Arch Wiki";
              url = "https://wiki.archlinux.org";
            }
            {
              title = "Hyprland Wiki";
              url = "https://wiki.hyprland.org";
            }
          ];
        };
        search = rec {
          default = "DuckDuckGo";
          privateDefault = default;
          force = true;
          order = [
            "DuckDuckGo"
            "Atlas SearXNG"
          ];
          engines = {
            "Atlas SearXNG" = {
              urls = [ { template = "https://search.atlas.engineer/searxng/search?q={searchTerms}"; } ];
              definedAliases = [ "@atlas" ];
            };
            "NixOS Wiki" = {
              urls = [ { template = "https://wiki.nixos.org/w/index.php?search={searchTerms}"; } ];
              icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
              definedAliases = [
                "@nix"
                "@nixos"
                "@nixoswiki"
              ];
            };
            "Arch Wiki" = {
              urls = [ { template = "https://wiki.archlinux.org/index.php?search={searchTerms}"; } ];
              definedAliases = [
                "@aw"
                "@arch"
                "@archwiki"
              ];
            };
            "GitHub" = {
              urls = [ { template = "https://github.com/search?q={searchTerms}"; } ];
              definedAliases = [
                "@gh"
                "@git"
                "@github"
              ];
            };
            "FlatHub" = {
              url = [ { template = "https://flathub.org/apps/search?q={searchTerms}"; } ];
              definedAliases = [
                "@flat"
                "@fthub"
                "@flathub"
              ];
            };
            "NixOS Packages" = {
              urls = [
                {
                  template = "http://search.nixos.org/packages?channel=unstable&size=50&sort=relevance&type=packages&query={searchTerms}";
                }
              ];
              icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
              definedAliases = [ "@nixpkgs" ];
            };
            "PyPI packages" = {
              urls = [ { template = "https://pypi.org/search/?q={searchTerms}"; } ];
              definedAliases = [ "@pypi" ];
            };
          };
        };
      };
    };
  };
}