NixOS:在现有属性集之下添加

问题描述 投票:1回答:1

我正在编写一个小的电子邮件NixOS模块,它为提供的帐户设置了muttmbsyncmsmtp等。我希望为特定用户声明它,因为创建的文件应归该用户所有,并在该用户的XDG目录中。也就是说,类似(在configuration.nix中):

users.extraUsers.me = {
  ...
  email = {
    enable = true;
    accounts = [{
      host = "mail.service.com";
      user = "[email protected]";
      ...}
      ...];
  }
}

我知道如何使用特定路径(例如services.email)创建服务。该模块需要知道用户名是什么,并且需要适合any用户。有没有一种方法-向现有attrsof添加选项?如果是这样,怎么办?

nix nixos
1个回答
0
投票

我认为您最好的选择是将mutt,mbsync和其他作为系统用户服务部署。从技术上讲,您可以使用子模块来创建类似于users.users.<name>的模块架构,但是,由于NixOS不能管理用户的主目录,因此您将无法放置配置文件和创建目录。

用户服务模板应该可以解决您的问题,您仍然可以将其封装在模块中

类似这样:

config = {
  systemd.user.services."mutt@" = {
    # template unit declaration
    ...
  };
  ... 
}

这样,您可以使用systemd的模板功能来获取当前用户及其路径。

© www.soinside.com 2019 - 2024. All rights reserved.