一个用于 NixOS 的家庭实验室仪表板

主要观点:作者运行一个小型家庭实验室,为家庭网络提供基本服务,想找一个简单的仪表盘解决方案,最终选择了 homepage,且在 NixOS 上运行,文章介绍了 homepage 的配置、模块设计的演进、向后兼容性、解决日志重复问题、加强测试套件以及迁移现有配置等方面。
关键信息

  • 家庭实验室包括raidz2ZFS 池冗余存储、Syncthing 接收端和 Borg 备份等服务,通过 Tailscale 对外提供。
  • 配置 homepage 用 YAML 文件,最初硬编码位置为/config,后来通过环境变量HOMEPAGE_CONFIG_DIR改为/var/lib/homepage-dashboard
  • 设计 NixOS 模块时利用 RFC42 方法,提供environmentFile选项让用户提供包含变量的环境文件。
  • 处理向后兼容性时,若新配置选项未设置,模块按以前方式运行并显示弃用警告。
  • 写补丁使 Homepage 遵循LOG_TARGETS环境变量,默认值为both,已应用于 Nix 包。
  • 加强测试套件时,在 NixOS 测试套件中指定多台机器进行测试,确保不同配置模式下的功能正确。
  • 迁移现有配置用yaml2nix将 YAML 转为 Nix 表达式,再用nixpkgs-fmt格式化。
    重要细节
  • 仪表盘初始状态及示例图片。
  • PR [#243094]添加了 homepage-dashboard 包、NixOS 模块和基本测试。
  • 介绍了 Homepage 的各种配置部分及支持的 widgets。
  • 提到 feature request 被合并,后续可删除 Nix 包中的补丁。
  • 给出了测试脚本的具体实现及注释。
  • 展示了 PR 进度的截图及相关链接。
阅读 22
0 条评论