{ user ? throw "user argument is required", home ? throw "home argument is required", }: { config, lib, pkgs, ... }: let hmConfig = config.home-manager.users.${user}; in { environment.persistence = { "/persist/state"."${home}/.mozilla" = { }; "/persist/cache"."${home}/.cache/mozilla" = { }; }; home-manager.users.${user} = { programs.firefox = { enable = true; policies = { AutofillAddressEnabled = false; AutofillCreditCardEnabled = false; DefaultDownloadDirectory = "${home}/Downloads"; DisableFirefoxStudies = true; DisablePocket = true; DisableSetDesktopBackground = true; DisableTelemetry = true; DontCheckDefaultBrowser = true; EnableTrackingProtection = { Value = true; Locked = true; Cryptomining = true; Fingerprinting = true; EmailTracking = true; }; FirefoxHome = { "Locked" = true; "Search" = true; "TopSites" = true; "SponsoredTopSites" = false; "Highlights" = false; "Pocket" = false; "SponsoredPocket" = false; "Snippets" = false; }; NoDefaultBookmarks = true; OfferToSaveLogins = false; OverrideFirstRunPage = ""; PasswordManagerEnabled = false; Preferences = lib.attrsets.mapAttrs (key: value: { Value = value; Status = "locked"; }) { "browser.aboutConfig.showWarning" = false; "browser.bookmarks.addedImportButton" = true; "browser.bookmarks.showMobileBookmarks" = true; "browser.download.useDownloadDir" = false; "browser.toolbars.bookmarks.visibility" = "always"; "browser.sessionstore.restore_on_demand" = true; "browser.sessionstore.restore_pinned_tabs_on_demand" = false; "browser.translations.automaticallyPopup" = false; "extensions.autoDisableScopes" = 0; }; }; profiles.default = { extensions.packages = with pkgs.nur.repos.rycee.firefox-addons; [ languagetool bitwarden darkreader noscript sponsorblock ublock-origin violentmonkey wayback-machine fakespot-fake-reviews-amazon ]; search = { default = "ddg"; privateDefault = "ddg"; order = [ "ddg" "google" "wikipedia" "nix" ]; force = true; engines = { "google".metaData.alias = "@g"; "ddg".metaData.alias = "@d"; "wikipedia".metaData.alias = "@w"; "nix" = { urls = [ { template = "https://mynixos.com/search"; params = [ { name = "q"; value = "{searchTerms}"; } ]; } ]; icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; definedAliases = [ "@n" ]; }; }; }; }; }; xdg.mimeApps.defaultApplications = lib.attrsets.genAttrs [ "text/html" "x-scheme-handler/http" "x-scheme-handler/https" "x-scheme-handler/about" "x-scheme-handler/unknown" ] (_: "firefox.desktop"); home.sessionVariables.DEFAULT_BROWSER = lib.meta.getExe hmConfig.programs.firefox.finalPackage; }; }