OFFSET偏移
← 文章目录OFFSET / FIELD NOTESNO. 076

GNOME 模块选项参考

沿模块源码查清桌面入口、服务开关、应用分组和排除机制。

所在专题NixOS 上的 GNOME 声明式桌面 ↗
约 15 分钟阅读开始阅读

核验范围:2026 年 10 月查询的 nixpkgs nixos-unstable 模块与上游文档。分组列表、包数和服务默认值会随 revision 改变;部署时应以项目锁定的 nixpkgs 和 Home Manager 源码为准。本文没有构建、激活或桌面运行测试。

模块真源:nixos/modules/services/desktop-managers/gnome.nix(主模块)+ nixos/modules/services/desktops/gnome/*.nix(服务开关)。配套官方文档 gnome.md 在主模块同一目录。这份参考把 services.desktopManager.gnome.*、services.gnome.*、environment.gnome.* 的主要公开接口和当时的服务开关列出,标注默认值——标注"由 GNOME 自动开启"的,是该服务开关真正的生效默认,手动改可能破坏桌面。

一、入口与桌面管理选项:services.desktopManager.gnome.*#

选项 类型 默认值 作用
enable bool false 启用 GNOME 桌面管理器;GDM 推荐但需单独声明启用
sessionPath listOf package [] 附加到会话搜索路径的包(Shell 扩展、GSettings 条件 autostart 用)。官方备注:last resort,能打补丁就别用它
favoriteAppsOverride lines 内置默认 dock 设置 org.gnome.shell.favorite-apps 的默认值。internal 选项(标记为 messy),NixOS 不承诺稳定
extraGSettingsOverrides lines "" 附加的 GSettings vendor overrides(INI 格式,[schema] + key=value)
extraGSettingsOverridePackages listOf path [] 被 override 的 schema 所属包(如 pkgs.gsettings-desktop-schemas、pkgs.gnome-shell)
debug bool false 开启 gnome-session debug 消息(设 GNOME_SESSION_DEBUG=1)
flashback.enableMetacity bool false 标准 GNOME Flashback 会话(Metacity 窗口管理器)
flashback.customSessions listOf submodule [] 自定义 Flashback 会话,替换 Metacity 为其他 WM
flashback.panelModulePackages listOf package [ pkgs.gnome-applets ] 提供给 gnome-panel 的模块包(通常装到 $out/lib/gnome-panel/modules)

flashback.customSessions 每个条目是 submodule,含四个字段:

字段 类型 默认 说明
wmName str([a-zA-Z0-9_-]+) 必填 WM 唯一标识符
wmLabel str 必填 会话选择器里显示的名字
wmCommand str 必填 WM 可执行文件路径
enableGnomePanel bool true 该会话是否启用 GNOME 面板

extraGSettingsOverrides 原理 主模块把 extraGSettingsOverrides + extraGSettingsOverridePackages + favoriteAppsOverride 组装进 pkgs.gnome.nixos-gsettings-overrides 包,生成 share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas/,再经 NIX_GSETTINGS_OVERRIDES_DIR 环境变量注入会话——所以它是"系统默认值"层,用户 dconf 已有值优先。详见 NixOS GSettings 与 dconf 设置管理。

二、分组开关:services.gnome.*(5 个)#

开关 生效默认 管什么
core-os-services.enable 启用 GNOME 时强制 true 服务底座:dconf、polkit、accounts-daemon、NetworkManager、power-profiles-daemon、xdg portal、蓝牙、输入法(默认 ibus)等
core-shell.enable 启用 GNOME 时强制 true GNOME Shell 本体 + 配套服务(colord、geoclue、gvfs、GNOME 设置 daemon…)
core-apps.enable true(mkDefault) 完整应用套件(nautilus、epiphany、gnome-console、text-editor、maps…)
games.enable false 小游戏(aisleriot、gnome-chess、gnome-mines…)
core-developer-tools.enable false 开发者工具(gnome-builder、dconf-editor、devhelp、d-spy、sysprof)

分组开关的默认结构 core-os-services 和 core-shell 是普通优先级赋值 true(主模块 lib.mkIf 里直接 = true),关掉它们=拆桌面。core-apps 用 mkDefault true(用户可 = false 覆盖成极简 GNOME)。games/dev-tools 默认就是 false,开了才装。详见 GNOME 声明式管理。

三、服务开关:services.gnome.*(16 个,模块在 services/desktops/gnome/)#

大多数只有 enable 一个 bool 选项;带额外选项的已注明。默认列 = 实际生效默认(含 GNOME 各分组自动开启的情况)。

服务 默认 作用
at-spi2-core GNOME 自动 true 辅助技术总线(org.a11y.Bus)。报 The name org.a11y.Bus was not provided by any .service files 就启用
evolution-data-server GNOME 自动 true 通讯录/日历数据服务。额外选项 plugins(listOf package,默认 [])
gcr-ssh-agent GNOME core-os-services 以 mkDefault 开启,独立模块默认还需核对 GCR SSH agent(ssh key 密钥管理)
glib-networking GNOME 自动 true GLib 网络扩展(TLS、代理等)
gnome-browser-connector GNOME 自动 true 浏览器扩展原生 host,让浏览器能装 GNOME Shell 扩展
gnome-initial-setup GNOME 自动 true 首次启动向导
gnome-keyring GNOME 自动 true 密钥环 daemon(登录凭据)
gnome-online-accounts GNOME 自动 true 单点登录框架
gnome-remote-desktop GNOME 自动 true 基于 PipeWire 的远程桌面
gnome-settings-daemon GNOME 自动 true 设置 daemon(core-shell 的核心依赖)
gnome-software flatpak 启用时才装 软件中心(PackageKit 不支持 Nix,需 flatpak)
gnome-user-share GNOME 自动 true 用户级文件共享(WebDAV)
localsearch GNOME 自动 true LocalSearch 索引服务(TinySPARQL 前端,GNOME Music 依赖它)
rygel GNOME 自动 true UPnP 媒体服务器。额外选项 package(默认 pkgs.rygel)
sushi GNOME 自动 true nautilus 快速预览器
tinysparql GNOME 自动 true TinySPARQL 搜索引擎/元数据存储

关服务 = 拆功能 官方文档明说:关这些服务不受支持,可能弄坏应用。经典例子:tinysparql + localsearch 一起关会干掉 GNOME 搜索;GNOME Music 没有 TinySPARQL 直接罢工。

已移除:gnome-online-miners(mkRemovedOptionModule,broken for a while now)。

四、排除机制:environment.gnome.excludePackages#

environment.gnome.excludePackages = [ pkgs.epiphany ];   # 从默认 GNOME 环境剔除
  • 类型 listOf package,默认 []。按包名匹配,从 core-apps / games / core-developer-tools 的 environment.systemPackages 里剔除(主模块 removeExcluded/notExcluded)
  • 主要用于排除这三个分组的包;实际源码也过滤 core-shell 的 optionalPackages(core-shell 里大部分是强制包,只有 optionalPackages 能排)。Epiphany 排除后 webkitgtk 大包通常随之离开系统 closure
  • 排除包的同时会连带跳过对应程序模块(如排除 sushi → 不启用 sushi 服务;排除 gnome-disk-utility → 不启 programs.gnome-disks)

五、各分组默认装了什么#

core-apps(25 个):baobab、decibels、epiphany、gnome-text-editor、gnome-calculator、gnome-calendar、gnome-characters、gnome-clocks、gnome-console、gnome-contacts、gnome-font-viewer、gnome-logs、gnome-maps、gnome-music、gnome-system-monitor、gnome-tecla、gnome-weather、loupe、nautilus、papers、gnome-connections、showtime、simple-scan、snapshot、yelp。

games(20 个):aisleriot、atomix、five-or-more、four-in-a-row、gnome-2048、gnome-chess、gnome-klotski、gnome-mahjongg、gnome-mines、gnome-nibbles、gnome-robots、gnome-sudoku、gnome-taquin、gnome-tetravex、hitori、iagno、lightsoff、quadrapassel、swell-foop、tali。

core-developer-tools(5 个):dconf-editor、devhelp、d-spy、gnome-builder、sysprof。

core-shell 中可被排除的部分 optional 包(以锁定源码为准):adwaita-icon-theme、gnome-backgrounds、gnome-bluetooth、gnome-color-manager、gnome-control-center、gnome-tour、gnome-user-docs、gnome-menus、xdg-user-dirs、xdg-user-dirs-gtk。

只加不减 vs 只减不加 想多装 GNOME 生态包(如 pkgs.gpaste、pkgs.gnomeExtensions.*)直接加 environment.systemPackages;想少装用 excludePackages。NixOS 没有"从 GNOME 里加自定义包"的专门选项——分组列表是写死的,自定义只能走 systemPackages。

关联#

参考与延伸

  1. Nixpkgs GNOME 模块 ↗
  2. Nixpkgs GNOME 文档 ↗

根据技术笔记重新整理,示例使用通用名称。

沿专题继续阅读

NixOS 上的 GNOME 声明式桌面

  1. 01GNOME 的声明式桌面管理
  2. 02GNOME 模块选项参考
  3. 03管理 GSettings 默认值与 dconf 状态
  4. 04从设置 diff 到声明与扩展
  5. 05用 Specialisation 构建 GNOME 变体
  6. 06Wayland 会话中的 kmscon 与 uwsm
CONTINUE READING / 下一篇管理 GSettings 默认值与 dconf 状态

分清 schema 默认、vendor override 和用户数据库,选择合适的声明接口。