diff --git a/users/richie/home/firefox.nix b/users/richie/home/firefox.nix new file mode 100644 index 0000000..70aaee6 --- /dev/null +++ b/users/richie/home/firefox.nix @@ -0,0 +1,292 @@ +{ pkgs, ... }: +{ + programs.firefox = { + enable = true; + profiles.richie = { + extensions = with pkgs.inputs.firefox-addons; [ + bitwarden-password-manager + darkreader + dearrow + fastforwardteam + return-youtube-dislikes + sponsorblock + ublock-origin + ]; + search.engines = { + "Nix Options" = { + urls = [ + { + template = "https://search.nixos.org/options"; + params = [ + { + name = "type"; + value = "packages"; + } + { + name = "channel"; + value = "unstable"; + } + { + name = "query"; + value = "{searchTerms}"; + } + ]; + } + ]; + icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; + definedAliases = [ "@o" ]; + }; + "Nix Packages" = { + urls = [ + { + template = "https://search.nixos.org/packages"; + params = [ + { + name = "type"; + value = "packages"; + } + { + name = "channel"; + value = "unstable"; + } + { + name = "query"; + value = "{searchTerms}"; + } + ]; + } + ]; + icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; + definedAliases = [ "@n" ]; + }; + }; + search.force = true; + settings = { + # SECTION: FASTFOX + # GENERAL + "content.notify.interval" = 100000; + + # GFX + "gfx.canvas.accelerated.cache-items" = 4096; + "gfx.canvas.accelerated.cache-size" = 512; + "gfx.content.skia-font-cache-size" = 20; + + # DISK CACHE + "browser.cache.jsbc_compression_level" = 3; + + # MEDIA CACHE + "media.memory_cache_max_size" = 65536; + "media.cache_readahead_limit" = 7200; + "media.cache_resume_threshold" = 3600; + + # IMAGE CACHE + "image.mem.decode_bytes_at_a_time" = 32768; + + # NETWORK + "network.buffer.cache.size" = 262144; + "network.buffer.cache.count" = 128; + "network.http.max-connections" = 1800; + "network.http.max-persistent-connections-per-server" = 10; + "network.http.max-urgent-start-excessive-connections-per-host" = 5; + "network.http.pacing.requests.enabled" = false; + "network.dnsCacheExpiration" = 3600; + "network.dns.max_high_priority_threads" = 8; + "network.ssl_tokens_cache_capacity" = 10240; + + # SPECULATIVE LOADING + "network.dns.disablePrefetch" = true; + "network.prefetch-next" = false; + "network.predictor.enabled" = false; + + # EXPERIMENTAL + "layout.css.grid-template-masonry-value.enabled" = true; + "dom.enable_web_task_scheduling" = true; + "layout.css.has-selector.enabled" = true; + "dom.security.sanitizer.enabled" = true; + + # SECTION: SECUREFOX + # TRACKING PROTECTION + "browser.contentblocking.category" = "strict"; + "urlclassifier.trackingSkipURLs" = "*.reddit.com, *.twitter.com, *.twimg.com, *.tiktok.com"; + "urlclassifier.features.socialtracking.skipURLs" = "*.instagram.com, *.twitter.com, *.twimg.com"; + "network.cookie.sameSite.noneRequiresSecure" = true; + "browser.download.start_downloads_in_tmp_dir" = true; + "browser.helperApps.deleteTempFileOnExit" = true; + "browser.uitour.enabled" = false; + "privacy.globalprivacycontrol.enabled" = true; + + # OCSP & CERTS / HPKP + "security.OCSP.enabled" = 0; + "security.remote_settings.crlite_filters.enabled" = true; + "security.pki.crlite_mode" = 2; + + # SSL / TLS + "security.ssl.treat_unsafe_negotiation_as_broken" = true; + "browser.xul.error_pages.expert_bad_cert" = true; + "security.tls.enable_0rtt_data" = false; + + # DISK AVOIDANCE + "browser.privatebrowsing.forceMediaMemoryCache" = true; + "browser.sessionstore.interval" = 60000; + + # SHUTDOWN & SANITIZING + "privacy.history.custom" = true; + + # SEARCH / URL BAR + "browser.search.separatePrivateDefault.ui.enabled" = true; + "browser.urlbar.update2.engineAliasRefresh" = true; + # PREF: restore search engine suggestions + "browser.search.suggest.enabled" = true; + "browser.urlbar.suggest.quicksuggest.sponsored" = false; + "browser.urlbar.suggest.quicksuggest.nonsponsored" = false; + "browser.formfill.enable" = false; + "security.insecure_connection_text.enabled" = true; + "security.insecure_connection_text.pbmode.enabled" = true; + "network.IDN_show_punycode" = true; + + # HTTPS-FIRST POLICY + "dom.security.https_first" = true; + "dom.security.https_first_schemeless" = true; + + # PASSWORDS + "signon.formlessCapture.enabled" = false; + "signon.rememberSignons" = false; + "signon.privateBrowsingCapture.enabled" = false; + "network.auth.subresource-http-auth-allow" = 1; + "editor.truncate_user_pastes" = false; + + # MIXED CONTENT + CROSS-SITE + "security.mixed_content.block_display_content" = true; + "security.mixed_content.upgrade_display_content" = true; + "security.mixed_content.upgrade_display_content.image" = true; + "pdfjs.enableScripting" = false; + "extensions.postDownloadThirdPartyPrompt" = false; + + # HEADERS / REFERERS + "network.http.referer.XOriginTrimmingPolicy" = 2; + + # CONTAINERS + "privacy.userContext.ui.enabled" = true; + + # WEBRTC + "media.peerconnection.ice.proxy_only_if_behind_proxy" = true; + "media.peerconnection.ice.default_address_only" = true; + + # SAFE BROWSING + "browser.safebrowsing.downloads.remote.enabled" = false; + + # MOZILLA + # PREF: allow websites to ask you to receive site notifications + "permissions.default.desktop-notification" = 0; # allow websites to ask + # PREF: allow websites to ask you for your location + "permissions.default.geo" = 0; + "geo.provider.network.url" = "https://location.services.mozilla.com/v1/geolocate?key=%MOZILLA_API_KEY%"; + "permissions.manager.defaultsUrl" = ""; + "webchannel.allowObject.urlWhitelist" = ""; + + # TELEMETRY + "datareporting.policy.dataSubmissionEnabled" = false; + "datareporting.healthreport.uploadEnabled" = false; + "toolkit.telemetry.unified" = false; + "toolkit.telemetry.enabled" = false; + "toolkit.telemetry.server" = "data:,"; + "toolkit.telemetry.archive.enabled" = false; + "toolkit.telemetry.newProfilePing.enabled" = false; + "toolkit.telemetry.shutdownPingSender.enabled" = false; + "toolkit.telemetry.updatePing.enabled" = false; + "toolkit.telemetry.bhrPing.enabled" = false; + "toolkit.telemetry.firstShutdownPing.enabled" = false; + "toolkit.telemetry.coverage.opt-out" = true; + "toolkit.coverage.opt-out" = true; + "toolkit.coverage.endpoint.base" = ""; + "browser.ping-centre.telemetry" = false; + "browser.newtabpage.activity-stream.feeds.telemetry" = false; + "browser.newtabpage.activity-stream.telemetry" = false; + + # EXPERIMENTS + "app.shield.optoutstudies.enabled" = false; + "app.normandy.enabled" = false; + "app.normandy.api_url" = ""; + + # CRASH REPORTS + "breakpad.reportURL" = ""; + "browser.tabs.crashReporting.sendReport" = false; + "browser.crashReports.unsubmittedCheck.autoSubmit2" = false; + + # DETECTION + "captivedetect.canonicalURL" = ""; + "network.captive-portal-service.enabled" = false; + "network.connectivity-service.enabled" = false; + + # SECTION: PESKYFOX + # MOZILLA UI + "browser.privatebrowsing.vpnpromourl" = ""; + "extensions.getAddons.showPane" = false; + "extensions.htmlaboutaddons.recommendations.enabled" = false; + "browser.discovery.enabled" = false; + "browser.shell.checkDefaultBrowser" = false; + "browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons" = false; + "browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features" = false; + "browser.preferences.moreFromMozilla" = false; + "browser.tabs.tabmanager.enabled" = false; + "browser.aboutConfig.showWarning" = false; + "browser.aboutwelcome.enabled" = false; + + # THEME ADJUSTMENTS + "toolkit.legacyUserProfileCustomizations.stylesheets" = true; + "browser.compactmode.show" = true; + "browser.display.focus_ring_on_anything" = true; + "browser.display.focus_ring_style" = 0; + "browser.display.focus_ring_width" = 0; + "layout.css.prefers-color-scheme.content-override" = 2; + + # COOKIE BANNER HANDLING + "cookiebanners.service.mode" = 1; + "cookiebanners.service.mode.privateBrowsing" = 1; + + # FULLSCREEN NOTICE + "full-screen-api.transition-duration.enter" = "0 0"; + "full-screen-api.transition-duration.leave" = "0 0"; + "full-screen-api.warning.delay" = -1; + "full-screen-api.warning.timeout" = 0; + + # URL BAR + "browser.urlbar.suggest.calculator" = true; + "browser.urlbar.unitConversion.enabled" = true; + "browser.urlbar.trending.featureGate" = false; + + # NEW TAB PAGE + "browser.newtabpage.activity-stream.feeds.topsites" = false; + "browser.newtabpage.activity-stream.feeds.section.topstories" = false; + + # POCKET + "extensions.pocket.enabled" = false; + + # DOWNLOADS + "browser.download.always_ask_before_handling_new_types" = true; + "browser.download.manager.addToRecentDocs" = false; + + # PDF + "browser.download.open_pdf_attachments_inline" = true; + + # TAB BEHAVIOR + "browser.bookmarks.openInTabClosesMenu" = false; + "browser.menu.showViewImageInfo" = true; + "findbar.highlightAll" = true; + "layout.word_select.eat_space_to_next_word" = false; + + # SECTION: MY OVERRIDES + "browser.startup.homepage" = "https://google.com"; + "identity.fxaccounts.enabled" = false; + + # SECTION SMOOTHFOX + # OPTION: SHARPEN SCROLLING * + "apz.overscroll.enabled" = true; # DEFAULT NON-LINUX + "mousewheel.min_line_scroll_amount" = 10; # 10-40; adjust this number to your liking; default=5 + "general.smoothScroll.mouseWheel.durationMinMS" = 80; # default=50 + "general.smoothScroll.currentVelocityWeighting" = "0.15"; # default=.25 + "general.smoothScroll.stopDecelerationWeighting" = "0.6"; # default=.4 + }; + }; + }; +} diff --git a/users/richie/home/gui.nix b/users/richie/home/gui.nix index b0f2173..37a3a09 100644 --- a/users/richie/home/gui.nix +++ b/users/richie/home/gui.nix @@ -1,6 +1,9 @@ { pkgs, ... }: { - imports = [ ./vscode ]; + imports = [ + ./vscode + ./firefox.nix + ]; home.packages = with pkgs; [ beeper