核验范围:2026 年 10 月查询的 nixpkgs
nixos-unstable模块与上游文档。分组列表、包数和服务默认值会随 revision 改变;部署时应以项目锁定的 nixpkgs 和 Home Manager 源码为准。本文没有构建、激活或桌面运行测试。
声明式启用#
services.desktopManager.gnome.enable = true;
services.displayManager.gdm.enable = true;但这组声明背后是一整套分组开关——GNOME 在 NixOS 里被拆成了可独立开关的包组。
模块分组开关(services.gnome.*)#
| 开关 | 默认 | 管什么 |
|---|---|---|
core-os-services |
强制 true | 服务底座:dconf、polkit、accounts-daemon、NetworkManager、xdg portal、power-profiles |
core-shell |
强制 true | GNOME Shell 本体:gnome-session + gnome-shell(systemd 单元)、control-center、settings-daemon |
core-apps |
true | 默认应用套件(例如:nautilus、epiphany、calculator、weather、console…) |
games |
false | 小游戏(扫雷、数独、国际象棋…) |
core-developer-tools |
false | 开发者工具(gnome-builder、dconf-editor、sysprof…) |
所以:
- 极简 GNOME =
core-apps.enable = false+ excludegnome-tour/gnome-user-docs(这俩在 core-shell optionalPackages,不在 core-apps) - 较完整的 GNOME = 启用 core-apps 与所需开发工具/游戏(games 可按需保持关闭)
webkitgtk 大包 core-apps 里的 Epiphany(浏览器)依赖 webkitgtk——一个巨大的包,首次构建/下载很慢。极简配置省掉它;全量要接受这个代价。
GDM 与现有登录架构#
- GDM 默认 Wayland,GNOME 50 起不可禁用 Wayland(选项被移除)
- GDM 与 kmscon 不硬冲突:当前 nixpkgs 里 GDM 启用时 kmscon 自动不占 tty1(模块
mkIf (!displayManager.enable)) - GDM 读取已注册的
wayland-sessions/*.desktop;Hyprland、niri 等模块提供 sessionPackages 时,才会出现在登录屏。安装单个二进制不保证注册会话。 - 可用 specialisation 划分系统变体(见 NixOS Specialisation 系统变体),kmscon 主流程不动
主题统一管理#
主题包、dconf 设置和深色模式调度需要明确的配置所有权,避免桌面模块、Home Manager 与外部调度程序反复写同一个键。例如:
home/theme.nix统一管理 GTK 主题、图标和光标包,并声明需要在 activation 写入的 dconf 键。- 若使用 Noctalia 等调度器在运行时切换深色模式,应明确由它负责
color-scheme,或接受后续 Home Manager activation 会重新写回声明值。 - GNOME specialisation 若继承同一 Home Manager profile,可以共享主题;用户 HOME 和 dconf 状态也仍然共享。
这样多桌面配置能复用主题声明,同时知道每次设置改变由哪一层触发。
输入法(fcitx5)#
- GNOME Wayland 走 text-input-v3,不要设
GTK_IM_MODULE(官方建议,GTK 用原生协议);旧版 Qt 或不能用原生协议的应用使用QT_IM_MODULE=fcitx;新版 Qt 的协议支持要按实际版本核对,XWayland 使用XMODIFIERS=@im=fcitx - 部分工具包/输入法模块路径的候选窗定位受 GNOME Shell 限制,可使用 kimpanel 扩展(
pkgs.gnomeExtensions.kimpanel,装完在 Extensions 应用手动启用) - GNOME 模块默认
i18n.inputMethod.type = mkDefault "ibus",你显式写"fcitx5"会胜出
分组设计的实际价值#
GNOME 的桌面入口、服务模块和应用列表分开声明,可以按需求安装默认应用、开发工具或扩展。模块化方便追踪配置所有权和依赖,但不证明某个桌面一定比其他桌面更稳定。比较 GNOME、COSMIC 或其他桌面时,应记录具体版本、登录路径、功能需求和运行证据,而不是从仓库组织方式直接推断稳定性。
关联#
- NixOS GSettings 与 dconf 设置管理 — 设置的持久化
- NixOS Specialisation 系统变体 — GNOME 以变体形式存在
参考与延伸
根据技术笔记重新整理,示例使用通用名称。