|
|
| (One intermediate revision by the same user not shown) |
| Line 179: |
Line 179: |
| </syntaxhighlight> | | </syntaxhighlight> |
|
| |
|
| <languages/>
| |
| <translate> | | <translate> |
| == Installation == <!--T:1--> | | == Add support for Brave Browser in Profile Sync daemon == <!--T:27--> |
|
| |
|
| === NixOS === <!--T:2-->
| | <!--T:28--> |
| | | Adding Brave Browser support to Profile Sync daemon can be automated with an overlay. |
| <!--T:3-->
| |
| Add <tvar name="chromium_package">{{nixos:package|chromium}}</tvar> to <tvar name="systemPackages">{{NixOS Manual|name=systemPackages|anchor=#sec-package-management}}</tvar>.
| |
| | |
| == Updating browser policies == <!--T:4-->
| |
| | |
| <!--T:5-->
| |
| In Chromium, policy settings are accessible via <tvar name="chrome_policy_link">{{Ic|chrome://policy}}</tvar>. They allow the user to change enterprise policies affecting things like
| |
| | |
| <!--T:6-->
| |
| * Creating webapps when the browser is installed
| |
| * Finding and downloading browser extensions automatically
| |
| * Enabling or disabling the dinosaur game when the device is offline
| |
| * Disable screenshots to be taken with browser extensions
| |
| * Block all downloads from the browser (if you want to do that for some reason)
| |
| * and more!
| |
| | |
| <!--T:7-->
| |
| A full list of policies can be found at [<tvar name=1>https://chromeenterprise.google/policies/</tvar> Chrome Enterprise Policy List & Management].
| |
| | |
| === Natively Supported Policies === <!--T:8-->
| |
| | |
| <!--T:9-->
| |
| By default NixOS provides a few policies that can be enabled directly, a simple example is given below to understand how these are implemented
| |
| </translate>
| |
| | |
| <syntaxhighlight lang="nixos" line="1"> programs.chromium = {
| |
| enable = true;
| |
| homepageLocation = "https://www.startpage.com/";
| |
| extensions = [
| |
| "eimadpbcbfnmbkopoojfekhnkhdbieeh;https://clients2.google.com/service/update2/crx" # dark reader
| |
| "aapbdbdomjkkjkaonfhkkikfgjllcleb;https://clients2.google.com/service/update2/crx" # google translate
| |
| ];
| |
| extraOpts = {
| |
| "WebAppInstallForceList" = [
| |
| {
| |
| "custom_name" = "Youtube";
| |
| "create_desktop_shortcut" = false;
| |
| "default_launch_container" = "window";
| |
| "url" = "https://youtube.com";
| |
| }
| |
| ];
| |
| };
| |
| };</syntaxhighlight>
| |
| | |
| <translate>
| |
| <!--T:10-->
| |
| * <tvar name="homepageLocation">{{Ic|homepageLocation}}</tvar> option allows you to set the site that the homepage will open on
| |
| * <tvar name="extensions">{{Ic|extensions}}</tvar> allows for the download of extensions directly in the browser through a simple list of the extension ID's that can be obtained from the [<tvar name="1">https://chromewebstore.google.com/</tvar> Chrome Web Store] by opening an extension page and copying the last part of the URL
| |
| ** In the example however there is another component, the download source from which the extensions will be downloaded
| |
| ** The URL provided in the list is the link that is used by google for managing, checking and updating extensions
| |
| ** So the method of just placing the extension ID can work like this: <tvar name="ext_id">{{Ic|"fnpbehpgglbfnpimkachnpnecjncndgm"}}</tvar>
| |
| ** But just in case that method does not automatically function the second method is shown above, where you place <tvar name="symbol">{{Ic|;}}</tvar> and then the URL <tvar name="url">{{Ic|https //clients2.google.com/service/update2/crx}}</tvar> to explicitly tell NixOS where to install the extension from
| |
| * There are many more options that are natively supported and you can learn about them through <tvar name="command">{{Ic|man configuration.nix}}</tvar>
| |
| * But as shown above there is also an <tvar name="extraOpts">{{Ic|extraOpts}}</tvar> option and that is used for policies that are not supported for direct setup, such as the policy to install web-apps
| |
| | |
| === Non-natively Supported Policies === <!--T:11-->
| |
| | |
| <!--T:12-->
| |
| There are hundreds of policies in Chromium based browsers, and not all have direct methods to set them. The <tvar name="extraOpts">{{Ic|extraOpts}}</tvar> option allows for the declaration of all the other policies.
| |
| | |
| <!--T:13-->
| |
| There is no single place to find all Chromium policies, but these are some places to look;
| |
| | |
| <!--T:14-->
| |
| * Commonly used policies are present and documented within {{Ic|man configuration.nix}} under {{Ic|programs.chromium}}.
| |
| * You can navigate to <tvar name="chrome_policy_link">{{Ic|chrome://policy}}</tvar> and enable "Show policies with no value set" to see all available keys. Clicking a policy name opens its specific definition and usage details.
| |
| * The most up to date policies for Chromium are available in the [<tvar name="1">https://source.chromium.org/chromium/chromium/src/+/main:chrome/common/pref_names.h</tvar> source code.]
| |
| | |
| == Accelerated video playback == <!--T:15-->
| |
| | |
| <!--T:16-->
| |
| Make sure [[<tvar name="1">Special:MyLanguage/Accelerated Video Playback</tvar>|Accelerated Video Playback]] is setup on the system properly. Check <tvar name="chrome_gpu_link">{{ic|chrome://gpu}}</tvar> to see if Chromium has enabled hardware acceleration.
| |
| | |
| <!--T:17-->
| |
| If accelerated video playback is not working, check relevant flags at <tvar name="chrome_flags_link">{{ic|chrome://flags}}</tvar>, or enable them using the CLI:
| |
| </translate>
| |
| | |
| {{file|/etc/nixos/configuration.nix|nix|<nowiki>
| |
| {
| |
| environment.systemPackages = with pkgs; [
| |
| (chromium.override {
| |
| commandLineArgs = [
| |
| "--enable-features=AcceleratedVideoEncoder"
| |
| "--ignore-gpu-blocklist"
| |
| "--enable-zero-copy"
| |
| ];
| |
| })
| |
| ];
| |
| }
| |
| </nowiki>}}
| |
| | |
| <translate>
| |
| <!--T:18-->
| |
| In some cases, <tvar name="chrome_gpu_link">{{ic|chrome://gpu}}</tvar> will show Video Decode as enabled, but Video Acceleration Information as blank, with <tvar name="chrome_media_link">{{ic|chrome://media-internals}}</tvar> using the FFmpeg Video Decoder (software decoding). If this happens, try to enable the following features:
| |
| </translate>
| |
| | |
| {{file|/etc/nixos/configuration.nix|nix|<nowiki>
| |
| {
| |
| environment.systemPackages = with pkgs; [
| |
| (chromium.override {
| |
| commandLineArgs = [
| |
| "--enable-features=AcceleratedVideoEncoder,VaapiOnNvidiaGPUs,VaapiIgnoreDriverChecks,Vulkan,DefaultANGLEVulkan,VulkanFromANGLE"
| |
| "--enable-features=VaapiIgnoreDriverChecks,VaapiVideoDecoder,PlatformHEVCDecoderSupport"
| |
| "--enable-features=UseMultiPlaneFormatForHardwareVideo"
| |
| "--ignore-gpu-blocklist"
| |
| "--enable-zero-copy"
| |
| ];
| |
| })
| |
| ];
| |
| }
| |
| </nowiki>}}
| |
| | |
| <translate>
| |
| == Enabling native Wayland support == <!--T:19-->
| |
| | |
| <!--T:20-->
| |
| You can enable native Wayland support in all Chromium based and most Electron apps by setting the `NIXOS_OZONE_WL` environment variable to `1`.
| |
| | |
| == Enabling DRM (Widevine support) == <!--T:21-->
| |
| | |
| <!--T:22-->
| |
| By default, <tvar name="chromium_package">{{nixos:package|chromium}}</tvar> does not support playing DRM protected media. However, there is a build time flag to include the proprietary Widevine blob from Nixpkgs:
| |
| </translate> | | </translate> |
|
| |
| {{file|/etc/nixos/configuration.nix|nix|<nowiki>
| |
| {
| |
| environment.systemPackages = with pkgs; [
| |
| (chromium.override { enableWideVine = true; })
| |
| ];
| |
| }
| |
| </nowiki>}}
| |
|
| |
| <translate>
| |
| == KeePassXC support in Flatpak == <!--T:23-->
| |
|
| |
| <!--T:24-->
| |
| To enable browser integration between KeePassXC and Chromium-based browsers when running in Flatpak, configure the following filesystem access:
| |
| </translate>
| |
|
| |
| <syntaxhighlight lang="toml"># NativeMessagingHost directory (browser-specific)
| |
| # Brave Browser
| |
| xdg-config/BraveSoftware/Brave-Browser/NativeMessagingHosts:ro
| |
| # Chromium
| |
| xdg-config/chromium/NativeMessagingHosts:ro
| |
| # Google Chrome
| |
| xdg-config/google-chrome/NativeMessagingHosts:ro
| |
|
| |
| # KeePassXC server socket and Nix store
| |
| xdg-run/app/org.keepassxc.KeePassXC/org.keepassxc.KeePassXC.BrowserServer
| |
| /nix/store:ro
| |
| </syntaxhighlight>
| |
|
| |
| <translate>
| |
| == Using libc memory allocator == <!--T:25-->
| |
|
| |
| <!--T:26-->
| |
| Chromium may not work when an alternative system-wide memory allocator like scudo is used. To use libc on Chromium, the following firejail wrap is required:
| |
| </translate>
| |
|
| |
| <syntaxhighlight lang="nix">
| |
| programs.firejail = {
| |
| enable = true;
| |
| wrappedBinaries = {
| |
| chromium = {
| |
| executable = "${pkgs.chromium}/bin/chromium-browser";
| |
| profile = "${pkgs.firejail}/etc/firejail/chromium-browser.profile";
| |
| extraArgs = [
| |
| "--blacklist=/etc/ld-nix.so.preload"
| |
| ];
| |
| };
| |
| };
| |
| };
| |
| </syntaxhighlight>
| |
|
| |
| == Add support for Brave Browser in Profile Sync daemon ==
| |
|
| |
| Adding Brave Browser support to Profile Sync daemon can be automated with an overlay.
| |
|
| |
|
| <syntaxhighlight lang="nix"> | | <syntaxhighlight lang="nix"> |
| Line 384: |
Line 207: |
| } | | } |
| </syntaxhighlight> | | </syntaxhighlight> |
|
| |
|
| |
| [[Category:Applications]]
| |
| [[Category:Web Browser{{#translation:}}]]
| |
|
| |
|
|
| |
|
| [[Category:Applications]] | | [[Category:Applications]] |
| [[Category:Web Browser{{#translation:}}]] | | [[Category:Web Browser{{#translation:}}]] |