NixOS 内部隐藏宝石的无序列表—kokada

作者使用 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实时功能,可在nixosWiki文章中查看更多配置。
  • 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 上有人推荐,可在重负载操作时避免桌面环境或视频播放冻结。
阅读 17
0 条评论