Chromium

From NixOS Wiki
Revision as of 10:08, 28 August 2021 by imported>Primeos dev (Start documenting how to override Chromium (a frequently asked question))

Note: Firefox requires the Google Hangouts Video plugin but Chromium (37+) doesn't require any plugin to use Google Hangouts.

Per User

It is possible to configure certain features in nixpkgs by creating ~/.nixpkgs/config.nix and setting the options. See below for details on how to set the equivalent options for the system profile when running NixOS.

To install Firefox and Chromium for a user profile you need to create ~/.nixpkgs/config.nix and add the following options:

~/.nixpkgs/config.nix:

{
    allowUnfree = true;

    firefox = {
     enableGoogleTalkPlugin = true;
     enableAdobeFlash = true;
    };

    chromium = {
     enablePepperFlash = true; # Chromium's non-NSAPI alternative to Adobe Flash
    };

}

After these options have been set you need to install the "Wrapper" versions of Firefox:

$ nix-env -i firefox-with-plugins chromium

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`):

  packageOverrides = pkgs: with pkgs; rec {
    # FF bin with plugins
    firefox-bin-wrapper = wrapFirefox { browser = firefox-bin; };
  };

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:

...

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 ];
...

then run

nixos-rebuild switch

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: nix-shell -p libva-utils --run vainfo

Gnome Shell extensions

Gnome Shell extensions can be enabled with enableGnomeExtensions = true. It is a mozilla plugin, therefore it does not work currently with Chromium.

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.

To create a customized Chromium the following approach can be used:

chromium.mkDerivation (base: { name = "my-chromium"; gnFlags = { test_flag = 42; }; })

It should also be possible to override a Chromium attribute using

chromium.browser.overrideAttrs ...

.