{ pkgs, inputs, ... }: let lock-false = { Value = false; Status = "locked"; }; lock-true = { Value = true; Status = "locked"; }; in { programs = { firefox = { enable = true; package = pkgs.wrapFirefox pkgs.firefox-unwrapped { extraPolicies = { DisableTelemetry = true; DisableFirefoxStudies = true; EnableTrackingProtection = { Value= true; Locked = true; Cryptomining = true; Fingerprinting = true; }; DisablePocket = true; DisableFirefoxAccounts = true; DisableAccounts = true; DisableFirefoxScreenshots = true; OverrideFirstRunPage = ""; OverridePostUpdatePage = ""; DontCheckDefaultBrowser = true; DisplayBookmarksToolbar = "always"; # alternatives: "always" or "newtab" DisplayMenuBar = "default-off"; # alternatives: "always", "never" or "default-on" SearchBar = "unified"; # alternative: "separate" /* ---- EXTENSIONS ---- */ ExtensionSettings = { "*".installation_mode = "allowed"; # blocks all addons except the ones specified below # Enpass "firefox-enpass@enpass.io" = { install_url = "https://dl.enpass.io/stable/extensions/firefox/versions/v6.11.10.2/enpass_password_manager-6.11.10.2.xpi"; installation_mode = "force_installed"; }; }; /* ---- PREFERENCES ---- */ # Set preferences shared by all profiles. Preferences = { "browser.contentblocking.category" = { Value = "strict"; Status = "locked"; }; "extensions.pocket.enabled" = lock-false; "extensions.screenshots.disabled" = lock-true; "browser.topsites.contile.enabled" = lock-false; "browser.formfill.enable" = lock-false; "browser.search.suggest.enabled" = lock-false; "browser.search.suggest.enabled.private" = lock-false; "browser.urlbar.suggest.searches" = lock-false; "browser.urlbar.showSearchSuggestionsFirst" = lock-false; "browser.newtabpage.activity-stream.feeds.section.topstories" = lock-false; "browser.newtabpage.activity-stream.feeds.snippets" = lock-false; "browser.newtabpage.activity-stream.section.highlights.includePocket" = lock-false; "browser.newtabpage.activity-stream.section.highlights.includeBookmarks" = lock-false; "browser.newtabpage.activity-stream.section.highlights.includeDownloads" = lock-false; "browser.newtabpage.activity-stream.section.highlights.includeVisited" = lock-false; "browser.newtabpage.activity-stream.showSponsored" = lock-false; "browser.newtabpage.activity-stream.system.showSponsored" = lock-false; "browser.newtabpage.activity-stream.showSponsoredTopSites" = lock-false; }; }; }; /* ---- PROFILES ---- */ # Switch profiles via about:profiles page. # For options that are available in Home-Manager see # https://nix-community.github.io/home-manager/options.html#opt-programs.firefox.profiles profiles ={ chris = { # choose a profile name; directory is /home//.mozilla/firefox/chris id = 0; # 0 is the default profile; see also option "isDefault" name = "chris"; # name as listed in about:profiles isDefault = true; # can be omitted; true if profile ID is 0 settings = { # specify profile-specific preferences here; check about:config for options "browser.startup.homepage" = "https://tower.scarif.space"; # "browser.newtabpage.pinned" = [{ # title = "NixOS"; # url = "https://nixos.org"; # }]; }; search = { force = true; default = "holocron"; engines = { holocron = { name = "Holocron"; urls = [{ template = "https://holocron.scarif.space/search"; params = [ { name = "q"; value = "{searchTerms}"; } ]; }]; iconUpdateURL = "https://holocron.scarif.space/static/themes/simple/img/favicon.png"; definedAliases = [ "@h" ]; # Allows you to type '@s query' in the URL bar }; nix-packages = { name = "Nix Packages"; urls = [{ template = "https://search.nixos.org/packages"; params = [ { name = "type"; value = "packages"; } { name = "query"; value = "{searchTerms}"; } ]; }]; icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; definedAliases = [ "@np" ]; }; nixos-wiki = { name = "NixOS Wiki"; urls = [{ template = "https://wiki.nixos.org/w/index.php?search={searchTerms}"; }]; iconMapObj."16" = "https://wiki.nixos.org/favicon.ico"; definedAliases = [ "@nw" ]; }; bing.metaData.hidden = true; google.metaData.alias = "@g"; # builtin engines only support specifying one additional alias }; }; }; }; }; }; programs.home-manager.enable = true; }