93 lines
2.7 KiB
Nix
93 lines
2.7 KiB
Nix
{lib, ...}: {
|
|
options.mailsystem = {
|
|
enable = lib.mkEnableOption "nixos-mailsystem";
|
|
|
|
openFirewall = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = true;
|
|
description = "Automatically open ports in the firewall.";
|
|
};
|
|
|
|
fqdn = lib.mkOption {
|
|
type = lib.types.str;
|
|
example = "mail.example.com";
|
|
description = "Fully qualified domain name of the mail server.";
|
|
};
|
|
|
|
vmailUID = lib.mkOption {
|
|
type = lib.types.int;
|
|
default = 5000;
|
|
description = "The unix UID of the virtual mail user.";
|
|
};
|
|
|
|
vmailUserName = lib.mkOption {
|
|
type = lib.types.str;
|
|
default = "vmail";
|
|
description = "The user name of the user that owns the directory all the mail is stored.";
|
|
};
|
|
|
|
vmailGroupName = lib.mkOption {
|
|
type = lib.types.str;
|
|
default = "vmail";
|
|
description = "The group name of the user that owns the directory all the mail is stored.";
|
|
};
|
|
|
|
mailDirectory = lib.mkOption {
|
|
type = lib.types.str;
|
|
default = "/var/vmail";
|
|
description = "Storage location for all mail.";
|
|
};
|
|
|
|
accounts = lib.mkOption {
|
|
type = lib.types.attrsOf (lib.types.submodule ({name, ...}: {
|
|
options = {
|
|
name = lib.mkOption {
|
|
type = lib.types.str;
|
|
example = "user1@example.com";
|
|
description = "Username";
|
|
};
|
|
|
|
hashedPasswordFile = lib.mkOption {
|
|
type = with lib.types; nullOr str;
|
|
default = null;
|
|
example = "/run/secrets/user1-passwordhash";
|
|
description = ''
|
|
A file containing the user's hashed password. Use `mkpasswd` as follows
|
|
|
|
```
|
|
nix-shell -p mkpasswd --run 'mkpasswd -sm bcrypt'
|
|
```
|
|
'';
|
|
};
|
|
|
|
isSystemUser = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = false;
|
|
description = ''
|
|
System users are not allowed to change their password and are
|
|
cannot receive any mails (-> send-only). Mails sent to such an
|
|
account will be rejected.
|
|
'';
|
|
};
|
|
};
|
|
config.name = lib.mkDefault name;
|
|
}));
|
|
example = {
|
|
user1 = {
|
|
hashedPassword = "$6$evQJs5CFQyPAW09S$Cn99Y8.QjZ2IBnSu4qf1vBxDRWkaIZWOtmu1Ddsm3.H3CFpeVc0JU4llIq8HQXgeatvYhh5O33eWG3TSpjzu6/";
|
|
};
|
|
user2 = {
|
|
hashedPassword = "$6$oE0ZNv2n7Vk9gOf$9xcZWCCLGdMflIfuA0vR1Q1Xblw6RZqPrP94mEit2/81/7AKj2bqUai5yPyWE.QYPyv6wLMHZvjw3Rlg7yTCD/";
|
|
};
|
|
};
|
|
description = "All available accounts for the mailsystem.";
|
|
default = {};
|
|
};
|
|
};
|
|
|
|
imports = [
|
|
./dovecot.nix
|
|
./nginx.nix
|
|
./user.nix
|
|
];
|
|
}
|