Chromium
安装
NixOS
添加 chromium 到
systemPackages。
更新浏览器政策
在 Chromium 中,可以通过 chrome://policy 访问政策设置。用户可以使用这些设置更改影响企业政策的各种功能,例如
- 安装浏览器时自动创建 Web 应用
- 自动查找并下载浏览器扩展程序
- 设备离线时启用或禁用恐龙游戏
- 禁用浏览器扩展程序截屏功能
- 阻止浏览器进行所有下载(如果您出于某种原因需要这样做)
- 以及更多!
完整的政策列表可在 Chrome 企业政策列表和管理 中找到。
原生支持的政策
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" - 但以防该方法无法自动生效,上面显示了第二种方法,您需要放置
;,然后放置 URLhttps //clients2.google.com/service/update2/crx,以明确告诉 NixOS 从哪里安装扩展程序。
- 还有许多其他原生支持的选项,您可以通过
man configuration.nix了解它们。 - 但如上所示,还有一个
extraOpts选项,用于不支持直接设置的政策,例如安装网络应用程序的政策。
非原生支持的政策
基于 Chromium 的浏览器中存在数百种政策,但并非所有政策都有直接的设置方法。extraOpts 选项允许声明所有其他政策。
虽然没有一个地方可以找到所有 Chromium 政策,但以下是一些可以查找的地方;
- 常用策略已在
programs.chromium下的man configuration.nix中列出并记录。
- 您可以导航至
chrome://policy并启用“显示未设置值的政策(Show policies with no value set)”以查看所有可用键。点击政策名称即可查看其具体定义和使用详情。
- Chromium 的最新策略可在该源码中找到。
视频播放加速
请确保系统已正确设置 视频播放加速。检查 chrome://gpu 以查看 Chromium 是否已启用硬件加速。
如果视频播放加速不起作用,请检查 chrome://flags 中的相关标志,或使用 CLI 启用它们:
{
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 视频解码器(软件解码)。如果出现这种情况,请尝试启用以下功能:
{
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:
{
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"
];
};
};
};