作者使用 NixOS 作为主操作系统五年多,总结了一些 NixOS 中不错但默认未启用的模块:
networking.nftables
:是 Linux 内核的子系统,可过滤和分类网络数据包,可替代 iptables 作为默认防火墙配置。启用只需在配置中添加networking.nftables.enable = true;
,若使用 Docker 可能会有问题,但提供了iptables-compat
兼容。对用户的实际优势不明确,主要优势是改进的语法,对于需要自定义规则的用户有一些好处,如networking.nftables.checkRuleset
在构建时检查规则集语法错误。system.switch.enableNg
:今天刚发现,可重写switch-to-configuration.pl
脚本,该脚本在每次运行nixos-rebuild switch
时被调用。启用只需设置system.switch = { enable = false; enableNg = true; };
,目前主要用于测试,优势是系统切换稍快,且便于协作。boot.initrd.systemd
:在现代 Linux 发行版的启动过程中,initrd
加载 Linux 内核和一些实用程序,boot.initrd.systemd
可在initrd
中启用systemd
,带来一些细微变化,如全磁盘加密的密码提示、initrd
时间信息、systemd
风格的服务状态等,主要目的是使启动更可靠。services.pipewire
:对于使用 Wayland 的用户很有用,体验无缝,所有应用都能正常工作,还支持 ALSA 和 PulseAudio 仿真以及rtkit
实时功能,可在nixos
的Wiki
文章中查看更多配置。networking.networkmanager.wifi.backend = "iwd"
:将NetworkManager
的 Wi-Fi 后端从默认的wpa_supplicant
更改为iwd
,可优化 Wi-Fi 连接速度,作者切换后感觉 Wi-Fi 比其他操作系统更好,但不排除是硬件或驱动问题。boot.tmp.useTmpfs
:大多数 Linux 发行版将/tmp
挂载在 tmpfs 中,而 NixOS 默认将/tmp
存储在/
中,可通过设置boot.tmp.useTmpfs = true;
和systemd.services.nix-daemon.environment.TMPDIR = "/var/tmp";
来解决,若不想使用 tmpfs 可设置boot.tmp.cleanOnBoot = true;
。zramSwap
:对于内存较小的系统,可通过zram
创建压缩的块设备来提高内存使用效率,启用只需设置zramSwap = { enable = true; algorithm = "zstd"; };
,可根据 CPU 和内存情况选择压缩算法。services.fstrim
:对于有 SSD 的系统,定期进行trim
可保持良好性能,启用只需设置services.fstrim.enable = true;
,若使用 Full Disk Encryption 还需启用boot.initrd.luks.devices.<name>.allowDiscards
。boot.binfmt.emulatedSystems
:可通过设置boot.binfmt.emulatedSystems = [ "aarch64-linux" "riscv64-linux" ];
来运行其他架构的二进制文件,如 ARM 和 RISC-V,Nix 会安装 QEMU 模拟器,但 QEMU 仿真较慢,适合构建小程序,大程序建议使用交叉编译。services.dbus.implementation = "broker"
:dbus-broker
是 D-Bus 的高性能实现,像 Arch 和 Fedora 已将其设为默认,使用它可提高 Inter-Process Communication 效率。services.irqbalance
:作者未使用过,但在 Lobste.rs 上有人推荐,可在重负载操作时避免桌面环境或视频播放冻结。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。