diff options
| author | Alejandro Soto <alejandro@34project.org> | 2024-07-14 17:53:13 -0600 |
|---|---|---|
| committer | Alejandro Soto <alejandro@34project.org> | 2024-07-15 09:34:00 -0600 |
| commit | 02abf4ed0131237c25e0a10db50fa4c41a902a50 (patch) | |
| tree | 20904894fc0952806e341cdaff5941e81b3ce51c /env/users/default.nix | |
| parent | 08e746700341dda3e3bdf704332fc3c07053d3e7 (diff) | |
sys: final merge of dmz, hv into sys
Diffstat (limited to 'env/users/default.nix')
| -rw-r--r-- | env/users/default.nix | 143 |
1 files changed, 0 insertions, 143 deletions
diff --git a/env/users/default.nix b/env/users/default.nix deleted file mode 100644 index 0e77e0d..0000000 --- a/env/users/default.nix +++ /dev/null @@ -1,143 +0,0 @@ -{ config, lib, ... }: -with lib; let - cfg = config.local; - inherit (config.networking) domain; -in -{ - imports = [ - ./mailbox.nix - ]; - - options.local = with types; let - mailOption = mkOption { - default = { }; - - type = submodule { - options.certs = mkOption { - type = listOf str; - default = [ ]; - }; - }; - }; - in - { - sysadmin = mkOption { - type = str; - }; - - users = mkOption { - default = { }; - - type = attrsOf (submodule ({ config, ... }: { - options = { - uid = mkOption { - type = int; - }; - - gid = mkOption { - type = int; - }; - - gecos = mkOption { - type = str; - default = ""; - }; - - sysadmin = mkOption { - type = bool; - default = false; - }; - - groups = mkOption { - type = listOf str; - default = [ ]; - }; - - allowLogin = mkOption { - type = bool; - default = true; - }; - - hardAliases = mkOption { - type = listOf str; - default = [ ]; - }; - - mail = mailOption; - }; - - config.groups = mkBefore (optional config.sysadmin "wheel"); - })); - }; - - virtual = mkOption { - default = { }; - - type = attrsOf (submodule ({ name, ... }: { - options = { - aliases = mkOption { - type = attrsOf (listOf str); - default = { }; - }; - - rules = mkOption { - default = [ ]; - - type = listOf (submodule { - options = { - pattern = mkOption { - type = str; - }; - - targets = mkOption { - type = listOf str; - }; - }; - }); - }; - - users = mkOption { - default = { }; - - type = attrsOf (submodule { - options.mail = mailOption; - }); - }; - }; - - config.aliases = - let - sysadmin = mkDefault [ "sysadmin@${name}" ]; - in - { - abuse = sysadmin; - security = sysadmin; - webmaster = sysadmin; - hostmaster = sysadmin; - postmaster = sysadmin; - - sysadmin = mkDefault [ "sysadmin@${domain}" ]; - }; - })); - }; - }; - - config.local = mkMerge [ - { - users = import ./users.nix; - virtual = import ./virtual.nix; - - sysadmin = - (findSingle - (user: user.value.sysadmin) - (throw "no user is declared as sysadmin") - (throw "more than one user is declared as sysadmin") - (mapAttrsToList nameValuePair cfg.users) - ).name; - } - - { - virtual.${domain}.aliases.sysadmin = [ cfg.sysadmin ]; - } - ]; -} |
