架构分工:系统层 vs 用户层#
- 系统层 (NixOS):负责安装基础包、开启显示管理器 (SDDM/GDM)、加载驱动。
- 用户层 (Home Manager):负责设置壁纸、桌面快捷键、字体大小、任务栏布局。
实战:Hyprland 配置 (声明式)#
在 NixOS,你甚至不需要手动修改 hyprland.conf。
{
wayland.windowManager.hyprland = {
enable = true;
settings = {
# 这里就是原生的 hyprland 配置,只不过写成了 Nix 语法
monitor = ",preferred,auto,auto";
"$mod" = "SUPER";
bind = [
"$mod, RETURN, exec, kitty"
"$mod, Q, killactive"
];
decoration = {
rounding = 10;
blur.enabled = true;
};
};
};
}样式统一:KDE Plasma#
KDE 配置非常繁琐。如果你想把所有设置都纳入 Nix,可以使用 plasma-manager。
# 先在 Flake 输入中引入 plasma-manager,
# 并将 inputs.plasma-manager.homeManagerModules.plasma-manager 加入 HM imports/modules。
# 在 home.nix 中:
{
programs.plasma = {
enable = true;
workspace = {
theme = "breeze-dark";
lookAndFeel = "org.kde.breezedark.desktop";
};
panels = [
{
location = "bottom";
height = 36;
widgets = [
"org.kde.plasma.kickoff"
"org.kde.plasma.icontasks"
"org.kde.plasma.systemtray"
"org.kde.plasma.digitalclock"
];
}
];
};
}字体与主题 (GTK/Qt)#
统一 GTK 和 Qt 的外观是非常重要的。
{ pkgs, ... }: {
gtk = {
enable = true;
theme = {
name = "Adwaita-dark";
package = pkgs.gnome-themes-extra;
};
cursorTheme = {
name = "Adwaita";
package = pkgs.adwaita-icon-theme;
};
};
qt = {
enable = true;
platformTheme.name = "gtk";
style.name = "adwaita-dark";
};
}进阶建议#
不要在这个阶段过于沉迷于配置每一个像素。建议先搭建一个可用的环境,然后在日常使用中逐步把各项设置“Nix 化”。
模块与版本前提#
Home Manager 的 Hyprland 配置不能替代系统的会话、权限和 portal 配置。桌面主题示例需按锁定的 Home Manager、Hyprland 和 plasma-manager 版本核验;GTK/Qt 的显示效果也需在实际会话中检查。
参考与延伸
根据技术笔记重新整理,示例使用通用名称。