Chromium: Difference between revisions

From NixOS Wiki
imported>Pogobanane
mention new way to enable wayland
Klinger (talk | contribs)
 
(9 intermediate revisions by 3 users not shown)
Line 1: Line 1:
'''Note''': Firefox requires the Google Hangouts Video plugin but Chromium (37+) doesn't require any plugin to use Google Hangouts.
== Installation ==
=== NixOS ===
Add {{nixos:package|chromium}} to {{NixOS Manual|name=systemPackages|anchor=#sec-package-management}}.


== Per User ==
== Accelerated video playback ==  


It is possible to configure certain features in nixpkgs by creating <code>~/.nixpkgs/config.nix</code> and setting the options. See below for details on how to set the equivalent options for the system profile when running NixOS.
Make sure [[Accelerated Video Playback]] is setup on the system properly. Check {{ic|chrome://gpu}} to see if Chromium has enabled hardware acceleration.


To install Firefox and Chromium for a user profile you need to create <code>~/.nixpkgs/config.nix</code> and add the following options:
If accelerated video playback is not working, check relevant flags at {{ic|chrome://flags}}, or enable them using the cli:
 
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
~/.nixpkgs/config.nix:
<syntaxhighlight lang="nix">
{
{
    allowUnfree = true;
  environment.systemPackages = with pkgs; [
 
     (chromium.override {
     firefox = {
      commandLineArgs = [
    enableGoogleTalkPlugin = true;
        "--enable-features=VaapiVideoDecodeLinuxGL"
    };
        "--ignore-gpu-blocklist"
 
        "--enable-zero-copy"
    chromium = {
      ];
    enablePepperFlash = true; # Chromium's non-NSAPI alternative to Adobe Flash
     })
     };
  ];
 
}
}
</syntaxhighlight>
</nowiki>}}
 
After these options have been set you need to install the "Wrapper" versions of Firefox:
 
<syntaxhighlight lang="console">
$ nix-env -i firefox-with-plugins chromium
</syntaxhighlight>
 
If you are using a version that does not have a wrapper, you can write one (add to config.nix and install with `nix-env -iA nixpkgs.pkgs.firefox-bin-wrapper` or `nix-env -iA nixos.pkgs.firefox-bin-wrapper`):
<syntaxhighlight lang="nix">
  packageOverrides = pkgs: with pkgs; rec {
    # FF bin with plugins
    firefox-bin-wrapper = wrapFirefox { browser = firefox-bin; };
  };
</syntaxhighlight>
 
== For NixOS ==
 
In NixOS you can configure nixpkgs options by adding a nixpkgs.config section to /etc/nixos/configuration.nix. This has no effect on nix-env commands but does apply to packages installed via the environment.systemPackages list. The options are exactly the same as above.
 
In order to install Firefox with support for plugins, you need to use the "Wrapper" version. For example, in /etc/nixos/configuration.nix environment.systemPackages this would be firefoxWrapper.
 
To install Firefox and Chromium with Google Talk and Flash in your system profile you can add the following to your configuration.nix file.
 
/etc/nixos/configuration.nix:
<syntaxhighlight lang="nix">
...
 
nixpkgs.config = {
 
    allowUnfree = true;
 
    firefox = {
    enableGoogleTalkPlugin = true;
    enableAdobeFlash = true;
    };
 
    chromium = {
    enablePepperFlash = true; # Chromium removed support for Mozilla (NPAPI) plugins so Adobe Flash no longer works
    };
 
  };
 
environment.systemPackages = [ pkgs.firefoxWrapper pkgs.chromium ];
...
</syntaxhighlight>
 
then run <pre>nixos-rebuild switch</pre>
 
== Enable GPU accelerated video decoding (VA-API) ==
 
VA-API is enabled by default now in Chromium. Check chrome://gpu if it is working and if VA is detected. You may need to enable Hardware-accelerated video decode in chrome://flags.
 
Make sure the required VA-API drivers are installed: [[Accelerated Video Playback]]
 
Make sure your driver works by running: <code>nix-shell -p libva-utils --run vainfo</code>
 
== Gnome Shell extensions ==
 
Gnome Shell extensions can be enabled with <code>enableGnomeExtensions = true</code>. It is a mozilla plugin, therefore it does not work currently with Chromium.


== Enabling native Wayland support ==
== Enabling native Wayland support ==


Since Nixos 22.05 you can turn on native wayland support in all chrome and most electron apps by setting an environment variable: <code>environment.sessionVariables.NIXOS_OZONE_WL = "1"</code> ([https://nixos.org/manual/nixos/unstable/release-notes.html#sec-release-22.05-notable-changes see notable changes])
You can turn on native Wayland support in all chrome and most electron apps by setting an environment variable: <code>environment.sessionVariables.NIXOS_OZONE_WL = "1"</code>.


In earlier versions you can enable wayland support by setting the appropriate command-line flags:
== Enabling DRM (Widevine support) ==
 
By default, {{nixos:package|chromium}} does not support playing DRM protected media. However, there is a build time flag to include the unfree Widevine blob from nixpkgs:
<syntaxhighlight lang="nix">
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
nixpkgs.config.chromium.commandLineArgs = "--enable-features=UseOzonePlatform --ozone-platform=wayland";
{
</syntaxhighlight>
  environment.systemPackages = with pkgs; [
 
    (chromium.override { enableWideVine = true; })
== Overriding Chromium ==
  ];
 
}
Note: This section was never properly tested. Please update it accordingly if you notice issues with the examples and feel free to extend it.
</nowiki>}}
 
To create a customized Chromium the following approach can be used:
<pre>
chromium.mkDerivation (base: { name = "my-chromium"; gnFlags = { test_flag = 42; }; })
</pre>
 
It should also be possible to override a Chromium attribute using <pre>chromium.browser.overrideAttrs ...</pre>.


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

Latest revision as of 20:43, 26 September 2024

Installation

NixOS

Add chromium to systemPackages.

Accelerated video playback

Make sure Accelerated Video Playback is setup on the system properly. Check chrome://gpu to see if Chromium has enabled hardware acceleration.

If accelerated video playback is not working, check relevant flags at chrome://flags, or enable them using the cli:

/etc/nixos/configuration.nix
{
  environment.systemPackages = with pkgs; [
    (chromium.override {
      commandLineArgs = [
        "--enable-features=VaapiVideoDecodeLinuxGL"
        "--ignore-gpu-blocklist"
        "--enable-zero-copy"
      ];
    })
  ];
}

Enabling native Wayland support

You can turn on native Wayland support in all chrome and most electron apps by setting an environment variable: environment.sessionVariables.NIXOS_OZONE_WL = "1".

Enabling DRM (Widevine support)

By default, chromium does not support playing DRM protected media. However, there is a build time flag to include the unfree Widevine blob from nixpkgs:

/etc/nixos/configuration.nix
{
  environment.systemPackages = with pkgs; [
    (chromium.override { enableWideVine = true; })
  ];
}