firefox.nix (7120B)
1 { lib, config, ... }: 2 3 { 4 programs.firefox = { 5 enable = true; 6 configPath = "${config.xdg.configHome}/mozilla/firefox"; 7 8 profiles = { 9 default = { 10 id = 0; 11 name = "default"; 12 isDefault = true; 13 14 settings = { 15 # sort:start 16 "accessibility.browsewithcaret_shortcut.enabled" = false; # disable F7 caret browsing shortcut 17 "browser.aboutConfig.showWarning" = false; # disable about:config warning 18 "browser.aboutwelcome.enabled" = false; # disable welcome screen 19 "browser.ai.control.default" = "blocked"; # ai blocking 20 "browser.ai.control.linkPreviewKeyPoints" = "blocked"; # ai blocking 21 "browser.ai.control.pdfjsAltText" = "blocked"; # ai blocking 22 "browser.ai.control.sidebarChatbot" = "blocked"; # ai blocking 23 "browser.ai.control.smartTabGroups" = "blocked"; # ai blocking 24 "browser.ai.control.smartWindow" = "blocked"; # ai blocking 25 "browser.ai.control.translations" = "blocked"; # ai blocking 26 "browser.discovery.containers.enabled" = false; # disable containers 27 "browser.download.alwaysOpenPanel" = true; # show downloads when started, even after hiding button 28 "browser.gesture.swipe.left" = "cmd_scrollLeft"; # disable trackpad swipe gestures 29 "browser.gesture.swipe.right" = "cmd_scrollRight"; # disable trackpad swipe gestures 30 "browser.ml.linkPreview.enabled" = false; # long press link previews 31 "browser.newtab.extensionControlled" = true; # don't warn new tab page has changed 32 "browser.newtab.privateAllowed" = true; # hide new tab warning in private too 33 "browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons" = false; # recommend extensions while I browse 34 "browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features" = false; # recommend features while I browse 35 "browser.nova.enabled" = false; # disable new ugly gradient themes 36 "browser.profiles.enabled" = false; # disable profiles 37 "browser.search.suggest.enabled" = false; # disable search suggestions in urlbar 38 "browser.sessionstore.resume_from_crash" = false; # don't prompt to restore the previous session on startup 39 "browser.startup.couldRestoreSession.count" = "2"; # disable restore tabs on startup banner 40 "browser.startup.homepage" = "https://breadcat.github.io/startpage/"; 41 "browser.tabs.groups.enabled" = false; # disable tab grouping 42 "browser.toolbars.bookmarks.visibility" = "never"; # always hide bookmarks bar 43 "browser.uiCustomization.state" = builtins.toJSON { placements = { "nav-bar" = [ "back-button" "forward-button" "stop-reload-button" "urlbar-container" ]; "TabsToolbar" = [ "tabbrowser-tabs" ]; }; currentVersion = 26; newElementCount = 0; }; # toolbar layout 44 "browser.urlbar.showSearchTerms.enabled" = false; # always show address in address bar 45 "browser.urlbar.suggest.quicksuggest.all" = false; # disable suggestions in urlbar 46 "browser.urlbar.suggest.quicksuggest.sponsored" = false; # disable sponsored suggestions in urlbar 47 "extensions.activeThemeID" = "firefox-compact-dark@mozilla.org"; 48 "extensions.autoDisableScopes" = 0; # enable extensions by default 49 "extensions.formautofill.creditCards.enabled" = false; # disable credit card saving 50 "general.autoScroll" = true; # middle mouse page scroll instead of paste 51 "media.videocontrols.picture-in-picture.enabled" = false; # disable pip entirely 52 "media.videocontrols.picture-in-picture.video-toggle.enabled" = false; # disable pip popup 53 "media.webspeech.synth.dont_notify_on_error" = true; # disable speech errors 54 "media.webspeech.synth.enabled" = false; # disable speech entirely 55 "privacy.reducePageProtection.infobar.enabled.pbmode" = false; # reloading page tracker protecion bar 56 # sort:end 57 }; 58 59 extensions = { 60 force = true; 61 settings = { "newtaboverride@agenedia.com".settings = { type = "homepage"; focus_website = true; }; }; 62 }; 63 64 }; 65 }; 66 67 policies = { 68 DisableFirefoxAccounts = true; 69 DisableFirefoxStudies = true; 70 DisablePocket = true; 71 DisableMasterPasswordCreation = true; 72 DisableTelemetry = true; 73 ExtensionSettings = { 74 "*".installation_mode = "blocked"; 75 "uBlock0@raymondhill.net" = { 76 installation_mode = "force_installed"; 77 install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi"; 78 private_browsing = true; 79 default_area = "menupanel"; 80 "adminSettings" = builtins.toJSON { 81 userSettings = [ [ "prefetchingDisabled" "true" ] ]; 82 selectedFilterLists = [ 83 "ublock-filters" 84 "ublock-badware" 85 "ublock-privacy" 86 "ublock-unbreak" 87 "easylist" 88 "easyprivacy" 89 "plowe-0" 90 "fanboy-cookiemonster" 91 "ublock-cookies-easylist" 92 "adguard-cookies" 93 "ublock-annoyances" 94 ]; 95 # externalLists = '' 96 # https://example.com/my-filter-list.txt 97 # ''; 98 }; 99 }; 100 "newtaboverride@agenedia.com" = { 101 installation_mode = "force_installed"; 102 install_url = "https://addons.mozilla.org/firefox/downloads/latest/new-tab-override/latest.xpi"; 103 private_browsing = true; 104 default_area = "menupanel"; 105 }; 106 "CookieAutoDelete@kennydo.com" = { 107 installation_mode = "force_installed"; 108 install_url = "https://addons.mozilla.org/firefox/downloads/latest/cookie-autodelete/latest.xpi"; 109 private_browsing = true; 110 default_area = "menupanel"; 111 }; 112 "sponsorBlocker@ajay.app" = { 113 installation_mode = "force_installed"; 114 install_url = "https://addons.mozilla.org/firefox/downloads/latest/sponsorblock/latest.xpi"; 115 private_browsing = true; 116 default_area = "menupanel"; 117 }; 118 }; 119 UserMessaging = { 120 "ExtensionRecommendations" = false; 121 "FeatureRecommendations" = false; 122 "UrlbarInterventions" = false; 123 "FirefoxLabs" = false; 124 "MoreFromMozzilla" = false; 125 "SkipOnboarding" = true; 126 "Locked" = true; 127 }; 128 }; 129 }; 130 131 home.sessionVariables = { 132 BROWSER = "firefox"; 133 MOZ_ENABLE_WAYLAND = 1; 134 }; 135 136 xdg.mimeApps.defaultApplications = { 137 "text/html" = ["firefox.desktop"]; 138 "text/xml" = ["firefox.desktop"]; 139 "x-scheme-handler/http" = ["firefox.desktop"]; 140 "x-scheme-handler/https" = ["firefox.desktop"]; 141 }; 142 143 }