主要观点:作者热爱使用 NixOS,介绍了在 NixOS 上部署邮件服务相关的项目经历,包括更新代码、添加新功能以及解决升级问题等,还详细阐述了邮件服务模块的组成部分。
关键信息:
- 2025 年 7 月 12 日使用 NixOS,喜欢其易用性和部署软件简单的特点。
- 有一个自定义的 golang 服务工作者用于发送邮件,能保证邮件发送的幂等性。
- 邮件服务的 webapp 运行在每月 5 美元的 Digital Ocean 盒子上,使用自动部署应用管道。
- 服务器在家中是 NixOS 盒子,为部署新软件需写 Nix 模块和 systemd 启动脚本。
- 写邮件服务模块时遇到模块定义在
flake.nix
中而需从configuration.nix
引用的问题,最终解决并部署成功。 - 最近添加了更好的时事通讯功能,更新
mailer
代码并轻松部署,还解决了 nixpkgs 的升级问题。 - 邮件服务模块由
default.nix
提供构建指令(使用gomod2nix
处理 golang 依赖)和module.nix
(包含配置设置和 systemd 服务定义)组成。
重要细节: - 2023 年最后更新邮件中间件代码,很少触及。
- 部署新软件时先写 Nix 模块再写 systemd 启动脚本,过程有一定开销。
- 升级 nixpkgs 时遇到一个 bug,通过中途更新解决。
- Nix 能将软件配置和部署指令都放在同一仓库,便于文档和重复使用。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。