Firefox: Difference between revisions

imported>Samueldr
Adds FAQ for firefox quantum
 
Qweered (talk | contribs)
m Modern alias
 
(72 intermediate revisions by 37 users not shown)
Line 1: Line 1:
{{expansion}}
<languages/>
{{infobox application
  |name=Mozilla Firefox
  |image=Firefox logo, 2019.svg
  |type=Web Browser
  |developer=Mozilla Foundation & Community
  |firstRelease=November 9, 2004
  |latestRelease=Firefox 140.0 (June 24, 2025)
  |status=Active
  |license=[https://www.mozilla.org/MPL/2.0/ Mozilla Public License 2.0]
  |os=Cross-platform (Linux, macOS, Windows, *BSD)
  |website=[https://www.mozilla.org/firefox mozilla.org/firefox]
  |github=mozilla/firefox
  |bugTracker=[https://bugzilla.mozilla.org/ Bugzilla]
  |documentation=[https://support.mozilla.org/ Official Support]
}}
<translate>
<!--T:1-->
<strong>Firefox</strong><ref>Mozilla Foundation, "Firefox", Official Website, Accessed June 2025. https://www.mozilla.org/firefox</ref> is a free and open-source web browser developed by the Mozilla Foundation. It is known for its focus on privacy, security, and user freedom, offering a customizable experience through a rich ecosystem of add-ons and themes.


== FAQ ==
== Installation == <!--T:3-->


=== How do I get Firefox Quantum (57)? ===
==== Shell ==== <!--T:4-->
</translate>
{{code|lang=bash|line=no|1=$ nix-shell -p firefox}}
<translate>
<!--T:5-->
The command above makes <code>firefox</code> available in your current shell without modifying any configuration files.


When using nixos 17.09, stable, <code>nixos.firefox</code> currently gives version 56. [[FAQ#How_can_I_install_a_proprietary_or_unfree_package.3F|Enabling unfree]], and updating channels if required, allows the use of <code>nixos.firefox-bin</code> which is packaged from Mozilla's upstream released binaries.
==== System setup ==== <!--T:6-->
</translate>
{{code|lang=nix|line=no|1=# Example for /etc/nixos/configuration.nix
environment.systemPackages = [
  pkgs.firefox
];


Using nixos unstable, the nixos-built <code>nixos.firefox</code> has been updated to 57.
# User-specific installation (in ~/.config/nixpkgs/home.nix)
home.packages = [
  pkgs.firefox
];}}
<translate>
<!--T:7-->
After rebuilding with <code>nixos-rebuild switch</code>, Firefox will be installed system-wide.


Do note that <em>Quantum</em> is a marketing term, and as long as the version is greater than 57, the enhancement are in the built browser.
== Configuration == <!--T:8-->
 
==== Basic ==== <!--T:9-->
</translate>
{{code|lang=nix|line=no|1=
programs.firefox = {
  enable = true;
 
  languagePacks = [ "en-US" "de" "fr" ];
 
  preferences = {
    "browser.startup.homepage"      = "https://example.com";
    "privacy.resistFingerprinting"  = true;
  };
 
  policies = {
    DisableTelemetry = true;
  };
};
}}
<translate>
<!--T:10-->
The snippet above enables Firefox for all users (or the current Home Manager profile, if placed in <code>home.nix</code>).
 
==== Advanced ==== <!--T:11-->
</translate>
<translate>
<!--T:11a-->
Home Manager allows for deep customization of Firefox, including extensions, search engines, bookmarks, and themes. The example below shows a configuration for adding custom search engines with aliases.
</translate>
{{code|lang=nix|line=no|1=
programs.firefox = {
  enable = true;
 
  languagePacks = [ "en-US" ];
 
  policies = {
    # Updates & Background Services
    AppAutoUpdate                = false;
    BackgroundAppUpdate          = false;
 
    # Feature Disabling
    DisableBuiltinPDFViewer      = true;
    DisableFirefoxStudies        = true;
    DisableFirefoxAccounts        = true;
    DisableFirefoxScreenshots    = true;
    DisableForgetButton          = true;
    DisableMasterPasswordCreation = true;
    DisableProfileImport          = true;
    DisableProfileRefresh        = true;
    DisableSetDesktopBackground  = true;
    DisablePocket                = true;
    DisableTelemetry              = true;
    DisableFormHistory            = true;
    DisablePasswordReveal        = true;
 
    # Access Restrictions
    BlockAboutConfig              = false;
    BlockAboutProfiles            = true;
    BlockAboutSupport            = true;
 
    # UI and Behavior
    DisplayMenuBar                = "never";
    DontCheckDefaultBrowser      = true;
    HardwareAcceleration          = false;
    OfferToSaveLogins            = false;
    DefaultDownloadDirectory      = "${home}/Downloads";
 
    # Extensions
    ExtensionSettings = let
      moz = short: "https://addons.mozilla.org/firefox/downloads/latest/${short}/latest.xpi";
    in {
      "*".installation_mode = "blocked";
 
      "uBlock0@raymondhill.net" = {
        install_url      = moz "ublock-origin";
        installation_mode = "force_installed";
        updates_disabled  = true;
      };
 
      "{f3b4b962-34b4-4935-9eee-45b0bce58279}" = {
        install_url      = moz "animated-purple-moon-lake";
        installation_mode = "force_installed";
        updates_disabled  = true;
      };
 
      "{73a6fe31-595d-460b-a920-fcc0f8843232}" = {
        install_url      = moz "noscript";
        installation_mode = "force_installed";
        updates_disabled  = true;
      };
 
      "3rdparty".Extensions = {
        "uBlock0@raymondhill.net".adminSettings = {
          userSettings = rec {
            uiTheme            = "dark";
            uiAccentCustom    = true;
            uiAccentCustom0    = "#8300ff";
            cloudStorageEnabled = mkForce false;
 
            importedLists = [
              "https:#filters.adtidy.org/extension/ublock/filters/3.txt"
              "https:#github.com/DandelionSprout/adfilt/raw/master/LegitimateURLShortener.txt"
            ];
 
            externalLists = lib.concatStringsSep "\n" importedLists;
          };
 
          selectedFilterLists = [
            "CZE-0"
            "adguard-generic"
            "adguard-annoyance"
            "adguard-social"
            "adguard-spyware-url"
            "easylist"
            "easyprivacy"
            "https:#github.com/DandelionSprout/adfilt/raw/master/LegitimateURLShortener.txt"
            "plowe-0"
            "ublock-abuse"
            "ublock-badware"
            "ublock-filters"
            "ublock-privacy"
            "ublock-quick-fixes"
            "ublock-unbreak"
            "urlhaus-1"
          ];
        };
      };
    };
  };
 
  profiles.default.search = {
    force          = true;
    default        = "DuckDuckGo";
    privateDefault  = "DuckDuckGo";
 
    engines = {
      "Nix Packages" = {
        urls = [
          {
            template = "https://search.nixos.org/packages";
            params = [
              { name = "channel"; value = "unstable"; }
              { name = "query";  value = "{searchTerms}"; }
            ];
          }
        ];
        icon          = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
        definedAliases = [ "@np" ];
      };
 
      "Nix Options" = {
        urls = [
          {
            template = "https://search.nixos.org/options";
            params = [
              { name = "channel"; value = "unstable"; }
              { name = "query";  value = "{searchTerms}"; }
            ];
          }
        ];
        icon          = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
        definedAliases = [ "@no" ];
      };
 
      "NixOS Wiki" = {
        urls = [
          {
            template = "https://wiki.nixos.org/w/index.php";
            params = [
              { name = "search"; value = "{searchTerms}"; }
            ];
          }
        ];
        icon          = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
        definedAliases = [ "@nw" ];
      };
    };
  };
};
}}
<translate>
<!--T:11b-->
[https://nix-community.github.io/home-manager/options.xhtml#opt-programs.firefox.enable More options are available on Home Manager's site.]
</translate>
 
<translate>
 
== Firefox Variants == <!--T:12-->
</translate>
<translate>
<!--T:13-->
There are several Firefox variants available. To choose one, set the <code>programs.firefox.package</code> option accordingly.
</translate>
{{Note|The packages for the variants listed below are installed ''instead'' of the normal <code>firefox</code> package.}}
<translate>
=== Variant: Official Binaries === <!--T:14-->
</translate>
<translate>
<!--T:15-->
Mozilla provides official pre-built Firefox binaries via the <code>firefox-bin</code> package, which are downloaded directly from Mozilla's servers.
</translate>
<translate>
=== Variant: Extended Support Release (ESR) === <!--T:16-->
</translate>
<translate>
<!--T:17-->
<code>firefox-esr</code> is a variant that receives security updates for a longer period with a slower feature implementation cadence. It also allows for more extensive policy-based configuration.
</translate>
<translate>
=== Variant: Nightly === <!--T:18-->
</translate>
<translate>
<!--T:19-->
Nightly builds are daily builds from the central Mozilla repository.
</translate>
<translate>
==== Method 1: Using nix-community/flake-firefox-nightly ==== <!--T:20-->
</translate>
<translate>
<!--T:21-->
This method is reproducible but may lag behind the upstream version. First, add the input to your flake:
</translate>
{{code|lang=nix|line=no|1=
inputs = {
  firefox.url = "github:nix-community/flake-firefox-nightly";
  firefox.inputs.nixpkgs.follows = "nixpkgs";
};
}}
<translate>
<!--T:22-->
Then, add the package to your system:
</translate>
{{code|lang=nix|line=no|1=
# In configuration.nix, assuming use of specialArgs
environment.systemPackages = [
  inputs.firefox.packages.${pkgs.stdenv.hostPlatform.system}.firefox-nightly-bin
];
}}
<translate>
==== Method 2: Using mozilla/nixpkgs-mozilla ==== <!--T:23-->
</translate>
<translate>
<!--T:24-->
This method is not necessarily reproducible without a flake-like system but will always be the latest version.
</translate>
{{code|lang=nix|line=no|1=
nixpkgs.overlays = [
  (import (builtins.fetchTarball "https://github.com/mozilla/nixpkgs-mozilla/archive/master.tar.gz"))
];
programs.firefox.package = pkgs.latest.firefox-nightly-bin;
}}
<translate>
<!--T:25-->
Using this method requires the <code>--impure</code> flag for Nix commands, for example:
</translate>
{{code|lang=bash|line=no|1=$ nixos-rebuild switch --impure}}
 
<translate>
== Tips and Tricks == <!--T:26-->
</translate>
<translate>
==== Enhancing Privacy ==== <!--T:27-->
</translate>
{{Note|Hardening Firefox often involves a trade-off between privacy and convenience. Some websites may not function correctly with aggressive settings.}}
<translate>
<!--T:28-->
Beyond the declarative settings above, you can further enhance privacy:
* '''Container Tabs''': Use an extension like [https://addons.mozilla.org/en-US/firefox/addon/multi-account-containers/ Multi-Account Containers] to isolate websites from each other, preventing cross-site tracking.
* '''DNS over HTTPS (DoH)''': Encrypt your DNS queries by enabling DoH in Firefox's network settings to prevent ISP snooping.
</translate>
<translate>
==== Wayland support ==== <!--T:29-->
</translate>
{{code|lang=nix|line=no|1=environment.sessionVariables.MOZ_ENABLE_WAYLAND = "1";}}
<translate>
<!--T:30-->
Setting the variable above makes Firefox use Wayland when available.
</translate>
<translate>
==== Touchpad Gestures and Smooth Scrolling ==== <!--T:31-->
</translate>
<translate>
<!--T:32-->
Enable <code>xinput2</code> to improve touchscreen support and enable additional touchpad gestures and smooth scrolling.
</translate>
{{code|lang=nix|line=no|1=
environment.sessionVariables.MOZ_USE_XINPUT2 = "1";
}}
<translate>
==== KDE Plasma Integration ==== <!--T:33-->
</translate>
<translate>
<!--T:34-->
1. Add the native messaging host package to your configuration:
</translate>
{{code|lang=nix|line=no|1=programs.firefox.nativeMessagingHosts.packages = [ pkgs.plasma-browser-integration ];}}
<translate>
<!--T:35-->
2. Install the corresponding [https://addons.mozilla.org/en-US/firefox/addon/plasma-integration/ browser add-on].
</translate>
<translate>
==== Use KDE file picker ==== <!--T:36-->
</translate>
<translate>
<!--T:37-->
To use the KDE file picker instead of the GTK one, set the following preference:
</translate>
{{code|lang=nix|line=no|1=
programs.firefox.preferences = {
  "widget.use-xdg-desktop-portal.file-picker" = 1;
};
}}
 
<translate>
== Troubleshooting == <!--T:38-->
</translate>
<translate>
==== Native Messaging Hosts Fail to Load ==== <!--T:39-->
</translate>
<translate>
<!--T:40-->
Native messaging hosts (used for extensions like Plasma Integration) do not work with the <code>-bin</code> variants of Firefox or with Firefox installed imperatively via <code>nix-env</code>. You must use a variant built from source via your NixOS or Home Manager configuration.
</translate>
<translate>
==== ALSA audio instead of PulseAudio ==== <!--T:41-->
</translate>
<translate>
<!--T:42-->
To force Firefox to use ALSA, you can override it with a wrapper:
</translate>
{{code|lang=nix|line=no|1=programs.firefox.package = pkgs.wrapFirefox pkgs.firefox-unwrapped { libpulseaudio = pkgs.libalsa; };}}
<translate>
==== Screen Sharing under Wayland ==== <!--T:43-->
</translate>
<translate>
<!--T:44-->
Screen sharing on Wayland requires enabling PipeWire and the appropriate XDG Desktop Portals.
</translate>
{{code|lang=nix|line=no|1=
services.pipewire.enable = true;
xdg.portal = {
  enable = true;
  # Add the portal for your compositor, e.g.:
  extraPortals = with pkgs; [
    xdg-desktop-portal-wlr # For Sway/wlroots
    # xdg-desktop-portal-gtk # For GNOME
    # xdg-desktop-portal-kde # For KDE
  ];
};
}}
 
<translate>
== See also == <!--T:45-->
</translate>
<translate>
* [[Home Manager]] – Declarative per-user configuration
* [https://search.nixos.org/options?channel=unstable&query=programs.firefox NixOS options for Firefox]
* [https://discourse.nixos.org/tag/firefox Firefox topics on NixOS Discourse]
</translate>
<translate>
== References == <!--T:46-->
</translate>
 
[[Category:Applications]]
[[Category:Web Browser]]