Jump to content

Chromium

From Official NixOS Wiki
Revision as of 16:03, 31 May 2026 by Ardenet (talk | contribs) (Created page with "* $homepageLocation 选项允许您设置主页打开的网站。 * $extensions 允许您通过一个简单的扩展程序 ID 列表直接在浏览器中下载扩展程序。该列表可以从 [$1 Chrome 网上应用商店] 获取,通过打开扩展程序页面并复制 URL 的最后一部分。 ** 然而,示例中还有另一个组件,即扩展程序的下载源。 ** 列表中提供的 URL 是 Google 用于管理、检查和更新扩展程序的链接。 **...")

安装

NixOS

添加 chromiumsystemPackages

更新浏览器政策

在 Chromium 中,可以通过 chrome://policy 访问政策设置。用户可以使用这些设置更改影响企业政策的各种功能,例如

  • 安装浏览器时自动创建 Web 应用
  • 自动查找并下载浏览器扩展程序
  • 设备离线时启用或禁用恐龙游戏
  • 禁用浏览器扩展程序截屏功能
  • 阻止浏览器进行所有下载(如果您出于某种原因需要这样做)
  • 以及更多!

A full list of policies can be found at Chrome Enterprise Policy List & Management.

原生支持的政策

NixOS 默认提供了一些可以直接启用的政策,下面给出一个简单的示例来理解这些政策的实现方式。

  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";
        }
      ];
    };
  };
  • homepageLocation 选项允许您设置主页打开的网站。
  • extensions 允许您通过一个简单的扩展程序 ID 列表直接在浏览器中下载扩展程序。该列表可以从 Chrome 网上应用商店 获取,通过打开扩展程序页面并复制 URL 的最后一部分。
    • 然而,示例中还有另一个组件,即扩展程序的下载源。
    • 列表中提供的 URL 是 Google 用于管理、检查和更新扩展程序的链接。
    • 因此,只需放置扩展程序 ID 的方法即可工作,如下所示:"fnpbehpgglbfnpimkachnpnecjncndgm"
    • 但以防该方法无法自动生效,上面显示了第二种方法,您需要放置 ;,然后放置 URL https //clients2.google.com/service/update2/crx,以明确告诉 NixOS 从哪里安装扩展程序。
  • 还有许多其他原生支持的选项,您可以通过 man configuration.nix 了解它们。
  • 但如上所示,还有一个 extraOpts 选项,用于不支持直接设置的政策,例如安装网络应用程序的政策。

非原生支持的政策

There are hundreds of policies in Chromium based browsers, and not all have direct methods to set them. The extraOpts option allows for the declaration of all the other policies.

There is no single place to find all Chromium policies, but these are some places to look;

  • Commonly used policies are present and documented within man configuration.nix under programs.chromium.
  • You can navigate to chrome://policy 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 source code.

视频播放加速

请确保系统已正确设置 视频播放加速。检查 chrome://gpu 以查看 Chromium 是否已启用硬件加速。

如果视频播放加速不起作用,请检查 chrome://flags 中的相关标志,或使用 CLI 启用它们:

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

在某些情况下,chrome://gpu 将显示“视频解码(Video Decode)”已启用,但“视频加速信息(Video Acceleration Information)”为空,此时 chrome://media-internals 使用的是 FFmpeg 视频解码器(软件解码)。如果出现这种情况,请尝试启用以下功能:

❄︎ /etc/nixos/configuration.nix
{
  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"
      ];
    })
  ];
}

启用原生 Wayland 支持

您可以通过将 `NIXOS_OZONE_WL` 环境变量设置为 `1`,在所有基于 Chromium 的应用程序和大多数 Electron 应用程序中启用原生 Wayland 支持。

启用 DRM(Widevine 支持)

默认情况下,chromium 不支持播放受 DRM 保护的媒体。但是,可以通过构建时标志来包含来自 Nixpkgs 的专有 Widevine blob:

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

Flatpak 中的 KeePassXC 支持

要在 Flatpak 环境下运行 KeePassXC 和基于 Chromium 的浏览器时启用浏览器集成,请配置以下文件系统访问权限:

# 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

使用 libc 内存分配器

当使用诸如 scudo 之类的其他系统级内存分配器时,Chromium 可能无法正常工作。要在 Chromium 上使用 libc,需要以下 firejail 封装:

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"
      ];
    };
  };
};