我正在编写一个小的电子邮件NixOS模块,它为提供的帐户设置了mutt
,mbsync
,msmtp
等。我希望为特定用户声明它,因为创建的文件应归该用户所有,并在该用户的XDG目录中。也就是说,类似(在configuration.nix
中):
users.extraUsers.me = {
...
email = {
enable = true;
accounts = [{
host = "mail.service.com";
user = "[email protected]";
...}
...];
}
}
我知道如何使用特定路径(例如services.email
)创建服务。该模块需要知道用户名是什么,并且需要适合any用户。有没有一种方法-向现有attrsof添加选项?如果是这样,怎么办?
我认为您最好的选择是将mutt,mbsync和其他作为系统用户服务部署。从技术上讲,您可以使用子模块来创建类似于users.users.<name>
的模块架构,但是,由于NixOS不能管理用户的主目录,因此您将无法放置配置文件和创建目录。
用户服务模板应该可以解决您的问题,您仍然可以将其封装在模块中
类似这样:
config = {
systemd.user.services."mutt@" = {
# template unit declaration
...
};
...
}
这样,您可以使用systemd的模板功能来获取当前用户及其路径。