Firefox: Difference between revisions

Qweered (talk | contribs)
m Modern alias
Ardenet (talk | contribs)
Marked this version for translation
 
(4 intermediate revisions by 4 users not shown)
Line 19: Line 19:
<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.
<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.


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


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


==== System setup ==== <!--T:6-->
==== System setup ==== <!--T:58-->
</translate>
</translate>
{{code|lang=nix|line=no|1=# Example for /etc/nixos/configuration.nix
{{code|lang=nix|line=no|1=# Example for /etc/nixos/configuration.nix
environment.systemPackages = [
environment.systemPackages = [
Line 40: Line 43:
];}}
];}}
<translate>
<translate>
<!--T:7-->
<!--T:59-->
After rebuilding with <code>nixos-rebuild switch</code>, Firefox will be installed system-wide.
After rebuilding with <code>nixos-rebuild switch</code>, Firefox will be installed system-wide.


== Configuration == <!--T:8-->
== Configuration == <!--T:60-->


==== Basic ==== <!--T:9-->
==== Basic ==== <!--T:61-->
</translate>
</translate>
{{code|lang=nix|line=no|1=
{{code|lang=nix|line=no|1=
programs.firefox = {
programs.firefox = {
Line 63: Line 67:
};
};
}}
}}
<translate>
<translate>
<!--T:10-->
<!--T:3-->
The snippet above enables Firefox for all users (or the current Home Manager profile, if placed in <code>home.nix</code>).
The snippet above enables Firefox for all users (or the current Home Manager profile, if placed in <code>home.nix</code>).


==== Advanced ==== <!--T:11-->
==== Advanced ==== <!--T:23-->
</translate>
 
<translate>
<!--T:24-->
<!--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.
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>
</translate>
{{code|lang=nix|line=no|1=
{{code|lang=nix|line=no|1=
programs.firefox = {
programs.firefox = {
Line 134: Line 139:
         updates_disabled  = true;
         updates_disabled  = true;
       };
       };
    };


      "3rdparty".Extensions = {
    # Extension configuration
        "uBlock0@raymondhill.net".adminSettings = {
    "3rdparty".Extensions = {
          userSettings = rec {
      "uBlock0@raymondhill.net".adminSettings = {
            uiTheme            = "dark";
        userSettings = rec {
            uiAccentCustom    = true;
          uiTheme            = "dark";
            uiAccentCustom0    = "#8300ff";
          uiAccentCustom    = true;
            cloudStorageEnabled = mkForce false;
          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 = [
           importedLists = [
             "CZE-0"
             "https:#filters.adtidy.org/extension/ublock/filters/3.txt"
            "adguard-generic"
            "adguard-annoyance"
            "adguard-social"
            "adguard-spyware-url"
            "easylist"
            "easyprivacy"
             "https:#github.com/DandelionSprout/adfilt/raw/master/LegitimateURLShortener.txt"
             "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"
           ];
           ];
          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"
        ];
       };
       };
     };
     };
Line 224: Line 230:
};
};
}}
}}
<translate>
<translate>
<!--T:11b-->
<!--T:25-->
[https://nix-community.github.io/home-manager/options.xhtml#opt-programs.firefox.enable More options are available on Home Manager's site.]
[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:4-->


== Firefox Variants == <!--T:12-->
<!--T:5-->
</translate>
<translate>
<!--T:13-->
There are several Firefox variants available. To choose one, set the <code>programs.firefox.package</code> option accordingly.
There are several Firefox variants available. To choose one, set the <code>programs.firefox.package</code> option accordingly.
</translate>
</translate>
{{Note|The packages for the variants listed below are installed ''instead'' of the normal <code>firefox</code> package.}}
 
{{Note|<translate><!--T:6--> The packages for the variants listed below are installed ''instead'' of the normal <code>firefox</code> package.</translate>}}
 
<translate>
<translate>
=== Variant: Official Binaries === <!--T:14-->
=== Variant: Official Binaries === <!--T:7-->
</translate>
 
<translate>
<!--T:8-->
<!--T:15-->
Mozilla provides official pre-built Firefox binaries via the <code>firefox-bin</code> package, which are downloaded directly from Mozilla's servers.
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:9-->
=== Variant: Extended Support Release (ESR) === <!--T:16-->
 
</translate>
<!--T:10-->
<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.
<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:11-->
=== Variant: Nightly === <!--T:18-->
 
</translate>
<!--T:12-->
<translate>
<!--T:19-->
Nightly builds are daily builds from the central Mozilla repository.
Nightly builds are daily builds from the central Mozilla repository.
</translate>
 
<translate>
==== Method 1: Using nix-community/flake-firefox-nightly ==== <!--T:13-->
==== Method 1: Using nix-community/flake-firefox-nightly ==== <!--T:20-->
 
</translate>
<!--T:14-->
<translate>
<!--T:21-->
This method is reproducible but may lag behind the upstream version. First, add the input to your flake:
This method is reproducible but may lag behind the upstream version. First, add the input to your flake:
</translate>
</translate>
{{code|lang=nix|line=no|1=
{{code|lang=nix|line=no|1=
inputs = {
inputs = {
Line 272: Line 271:
};
};
}}
}}
<translate>
<translate>
<!--T:22-->
<!--T:16-->
Then, add the package to your system:
Then, add the package to your system:
</translate>
</translate>
{{code|lang=nix|line=no|1=
{{code|lang=nix|line=no|1=
# In configuration.nix, assuming use of specialArgs
# In configuration.nix, assuming use of specialArgs
Line 282: Line 283:
];
];
}}
}}
<translate>
<translate>
==== Method 2: Using mozilla/nixpkgs-mozilla ==== <!--T:23-->
==== Method 2: Using mozilla/nixpkgs-mozilla ==== <!--T:18-->
</translate>
 
<translate>
<!--T:19-->
<!--T:24-->
This method is not necessarily reproducible without a flake-like system but will always be the latest version.
This method is not necessarily reproducible without a flake-like system but will always be the latest version.
</translate>
</translate>
{{code|lang=nix|line=no|1=
{{code|lang=nix|line=no|1=
nixpkgs.overlays = [
nixpkgs.overlays = [
Line 295: Line 297:
programs.firefox.package = pkgs.latest.firefox-nightly-bin;
programs.firefox.package = pkgs.latest.firefox-nightly-bin;
}}
}}
<translate>
<translate>
<!--T:25-->
<!--T:22-->
Using this method requires the <code>--impure</code> flag for Nix commands, for example:
Using this method requires the <code>--impure</code> flag for Nix commands, for example:
</translate>
</translate>
{{code|lang=bash|line=no|1=$ nixos-rebuild switch --impure}}
{{code|lang=bash|line=no|1=$ nixos-rebuild switch --impure}}


<translate>
<translate>
== Tips and Tricks == <!--T:26-->
== Tips and Tricks == <!--T:28-->
 
==== Force XWayland (X11) instead of Wayland ==== <!--T:62-->
 
<!--T:63-->
Firefox defaults to native Wayland when running under a Wayland compositor. To force it to use XWayland (X11) instead:
</translate>
</translate>
{{code|lang=nix|line=no|1=environment.sessionVariables.MOZ_ENABLE_WAYLAND = "0";}}
<translate>
<translate>
==== Enhancing Privacy ==== <!--T:27-->
<!--T:30a-->
</translate>
This is useful when troubleshooting Wayland-specific issues or when certain features work better under X11.
{{Note|Hardening Firefox often involves a trade-off between privacy and convenience. Some websites may not function correctly with aggressive settings.}}
 
<translate>
==== Touchpad Gestures and Smooth Scrolling ==== <!--T:34-->
<!--T:28-->
 
Beyond the declarative settings above, you can further enhance privacy:
<!--T:35-->
* '''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.
Enable <code>xinput2</code> to improve touchscreen support and enable additional touchpad gestures and smooth scrolling.
</translate>
</translate>
{{code|lang=nix|line=no|1=
{{code|lang=nix|line=no|1=
environment.sessionVariables.MOZ_USE_XINPUT2 = "1";
environment.sessionVariables.MOZ_USE_XINPUT2 = "1";
}}
}}
<translate>
<translate>
==== KDE Plasma Integration ==== <!--T:33-->
==== KDE Plasma Integration ==== <!--T:29-->
</translate>
 
<translate>
<!--T:30-->
<!--T:34-->
1. Add the native messaging host package to your configuration:
1. Add the native messaging host package to your configuration:
</translate>
</translate>
{{code|lang=nix|line=no|1=programs.firefox.nativeMessagingHosts.packages = [ pkgs.plasma-browser-integration ];}}
 
{{code|lang=nix|line=no|1=programs.firefox.nativeMessagingHosts.packages = [ pkgs.kdePackages.plasma-browser-integration ];}}
 
<translate>
<translate>
<!--T:35-->
<!--T:31-->
2. Install the corresponding [https://addons.mozilla.org/en-US/firefox/addon/plasma-integration/ browser add-on].
2. Install the corresponding [https://addons.mozilla.org/en-US/firefox/addon/plasma-integration/ browser add-on].
</translate>
 
<translate>
==== Use KDE file picker ==== <!--T:32-->
==== Use KDE file picker ==== <!--T:36-->
 
</translate>
<!--T:33-->
<translate>
<!--T:37-->
To use the KDE file picker instead of the GTK one, set the following preference:
To use the KDE file picker instead of the GTK one, set the following preference:
</translate>
</translate>
{{code|lang=nix|line=no|1=
{{code|lang=nix|line=no|1=
programs.firefox.preferences = {
programs.firefox.preferences = {
Line 358: Line 356:


<translate>
<translate>
== Troubleshooting == <!--T:38-->
== Troubleshooting == <!--T:36-->
</translate>
 
<translate>
==== Native Messaging Hosts Fail to Load ==== <!--T:40-->
==== Native Messaging Hosts Fail to Load ==== <!--T:39-->
 
</translate>
<!--T:42-->
<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.
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:27-->
==== ALSA audio instead of PulseAudio ==== <!--T:41-->
 
</translate>
<!--T:64-->
<translate>
<!--T:42-->
To force Firefox to use ALSA, you can override it with a wrapper:
To force Firefox to use ALSA, you can override it with a wrapper:
</translate>
</translate>
{{code|lang=nix|line=no|1=programs.firefox.package = pkgs.wrapFirefox pkgs.firefox-unwrapped { libpulseaudio = pkgs.libalsa; };}}
{{code|lang=nix|line=no|1=programs.firefox.package = pkgs.wrapFirefox pkgs.firefox-unwrapped { libpulseaudio = pkgs.libalsa; };}}
<translate>
<translate>
==== Screen Sharing under Wayland ==== <!--T:43-->
==== Screen Sharing under Wayland ==== <!--T:43-->
</translate>
 
<translate>
<!--T:44-->
<!--T:44-->
Screen sharing on Wayland requires enabling PipeWire and the appropriate XDG Desktop Portals.
Screen sharing on Wayland requires enabling PipeWire and the appropriate XDG Desktop Portals.
</translate>
</translate>
{{code|lang=nix|line=no|1=
{{code|lang=nix|line=no|1=
services.pipewire.enable = true;
services.pipewire.enable = true;
Line 396: Line 392:


<translate>
<translate>
== See also == <!--T:45-->
== See also == <!--T:65-->
</translate>
 
<translate>
<!--T:66-->
* [[Home Manager]] – Declarative per-user configuration
* [[Home Manager]] – Declarative per-user configuration
* [https://search.nixos.org/options?channel=unstable&query=programs.firefox NixOS options for Firefox]
* [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]
* [https://discourse.nixos.org/tag/firefox Firefox topics on NixOS Discourse]
</translate>
 
<translate>
== References == <!--T:67-->
== References == <!--T:46-->
</translate>
</translate>


[[Category:Applications]]
[[Category:Applications]]
[[Category:Web Browser]]
[[Category:Web Browser]]