1 { config, lib, name, ... }:
7 base = mkOption { description = "Base of the LDAP tree"; type = str; };
8 host = mkOption { description = "Host to access LDAP"; type = str; };
9 root_dn = mkOption { description = "DN of the root user"; type = str; };
10 root_pw = mkOption { description = "Hashed password of the root user"; type = str; };
11 replication_dn = mkOption { description = "DN of the user allowed to replicate the LDAP directory"; type = str; };
12 replication_pw = mkOption { description = "Password of the user allowed to replicate the LDAP directory"; type = str; };
14 mkLdapOptions = name: more: mkOption {
15 description = "${name} LDAP configuration";
17 options = ldapOptions // {
18 dn = mkOption { description = "DN of the ${name} user"; type = str; };
19 password = mkOption { description = "password of the ${name} user"; type = str; };
20 filter = mkOption { description = "Filter for ${name} users"; type = str; default = ""; };
25 host = mkOption { description = "Host to access Mysql"; type = str; };
26 remoteHost = mkOption { description = "Host to access Mysql from outside"; type = str; };
27 port = mkOption { description = "Port to access Mysql"; type = str; };
28 socket = mkOption { description = "Socket to access Mysql"; type = path; };
29 systemUsers = mkOption {
30 description = "Attrs of user-passwords allowed to access mysql";
34 description = "PAM configuration for mysql";
37 dn = mkOption { description = "DN to connect as to check users"; type = str; };
38 password = mkOption { description = "DN password to connect as to check users"; type = str; };
39 filter = mkOption { description = "filter to match users"; type = str; };
44 mkMysqlOptions = name: more: mkOption {
45 description = "${name} mysql configuration";
47 options = mysqlOptions // {
48 database = mkOption { description = "${name} database"; type = str; };
49 user = mkOption { description = "${name} user"; type = str; };
50 password = mkOption { description = "mysql password of the ${name} user"; type = str; };
55 host = mkOption { description = "Host to access Postgresql"; type = str; };
56 port = mkOption { description = "Port to access Postgresql"; type = str; };
57 socket = mkOption { description = "Socket to access Postgresql"; type = path; };
59 description = "PAM configuration for psql";
62 dn = mkOption { description = "DN to connect as to check users"; type = str; };
63 password = mkOption { description = "DN password to connect as to check users"; type = str; };
64 filter = mkOption { description = "filter to match users"; type = str; };
69 mkPsqlOptions = name: mkOption {
70 description = "${name} psql configuration";
72 options = psqlOptions // {
73 database = mkOption { description = "${name} database"; type = str; };
74 schema = mkOption { description = "${name} schema"; type = nullOr str; default = null; };
75 user = mkOption { description = "${name} user"; type = str; };
76 password = mkOption { description = "psql password of the ${name} user"; type = str; };
81 host = mkOption { description = "Host to access Redis"; type = str; };
82 port = mkOption { description = "Port to access Redis"; type = str; };
83 socket = mkOption { description = "Socket to access Redis"; type = path; };
85 description = "Attrs of db number. Each number should be unique to avoid collision!";
88 spiped_key = mkOption {
91 Key to use with spiped to make a secure channel to replication
95 description = "Predixy configuration. Unused yet";
98 read = mkOption { type = str; description = "Read password"; };
103 mkRedisOptions = name: mkOption {
104 description = "${name} redis configuration";
106 options = redisOptions // {
107 db = mkOption { description = "${name} database"; type = str; };
112 host = mkOption { description = "Host to access SMTP"; type = str; };
113 port = mkOption { description = "Port to access SMTP"; type = str; };
115 mkSmtpOptions = name: mkOption {
116 description = "${name} smtp configuration";
118 options = smtpOptions // {
119 email = mkOption { description = "${name} email"; type = str; };
120 password = mkOption { description = "SMTP password of the ${name} user"; type = str; };
124 hostEnv = submodule {
127 description = "Host FQDN";
134 Sublist of users from realUsers. Function that takes pkgs as
135 argument and gives an array as a result
140 description = "List of e-mails that the server can be a sender of";
145 LDAP credentials for the host
149 password = mkOption { type = str; description = "Password for the LDAP connection"; };
150 dn = mkOption { type = str; description = "DN for the LDAP connection"; };
155 description = "subdomain and priority for MX server";
156 default = { enable = false; };
159 enable = mkEnableOption "Enable MX";
160 subdomain = mkOption { type = nullOr str; description = "Subdomain name (mx-*)"; };
161 priority = mkOption { type = nullOr str; description = "Priority"; };
167 attrs of ip4/ip6 grouped by section
169 type = attrsOf (submodule {
174 ip4 address of the host
181 ip6 addresses of the host
194 Attrs of servers information in the cluster (not necessarily handled by nixops)
197 type = attrsOf hostEnv;
199 hetznerCloud = mkOption {
201 Hetzner Cloud credential information
205 authToken = mkOption {
216 Hetzner credential information
220 user = mkOption { type = str; description = "User"; };
221 pass = mkOption { type = str; description = "Password"; };
227 sshd service credential information
233 LDAP credentials for cn=ssh,ou=services,dc=immae,dc=eu dn
237 password = mkOption { description = "Password"; type = str; };
246 non-standard reserved ports. Must be unique!
251 noDupl = x: builtins.length (builtins.attrValues x) == builtins.length (unique (builtins.attrValues x));
253 x: if isAttrs x && noDupl x then x else throw "Non unique values for ports";
257 httpd service credential information
263 LDAP credentials for cn=httpd,ou=services,dc=immae,dc=eu dn
267 password = mkOption { description = "Password"; type = str; };
275 type = submodule { options = smtpOptions; };
276 description = "SMTP configuration";
280 LDAP server configuration
283 options = ldapOptions;
286 databases = mkOption {
287 description = "Databases configuration";
291 type = submodule { options = mysqlOptions; };
292 description = "Mysql configuration";
295 type = submodule { options = redisOptions; };
296 description = "Redis configuration";
298 postgresql = mkOption {
299 type = submodule { options = psqlOptions; };
300 description = "Postgresql configuration";
306 description = "Jabber configuration";
309 postfix_user_filter = mkOption { type = str; description = "Postfix filter to get xmpp users"; };
310 ldap = mkLdapOptions "Jabber" {};
311 postgresql = mkPsqlOptions "Jabber";
315 realUsers = mkOption {
317 Attrset of function taking pkgs as argument.
318 Real users settings, should provide a subattr of users.users.<name>
319 with at least: name, (hashed)Password, shell
321 type = attrsOf unspecified;
324 description = "System and regular users uid/gid";
325 type = attrsOf (submodule {
328 description = "user uid";
332 description = "user gid";
339 description = "DNS configuration";
343 description = "SOA information";
347 description = "Serial number. Should be incremented at each change and unique";
351 description = "Refresh time";
355 description = "Retry time";
359 description = "Expire time";
363 description = "Default TTL time";
367 description = "hostmaster e-mail";
371 description = "Primary NS";
378 description = "Attrs of NS servers group";
381 "ns1.foo.com" = [ "198.51.100.10" "2001:db8:abcd::1" ];
382 "ns2.foo.com" = [ "198.51.100.15" "2001:db8:1234::1" ];
385 type = attrsOf (attrsOf (listOf str));
387 slaveZones = mkOption {
388 description = "List of slave zones";
389 type = listOf (submodule {
391 name = mkOption { type = str; description = "zone name"; };
393 description = "NS master groups of this zone";
399 masterZones = mkOption {
400 description = "List of master zones";
401 type = listOf (submodule {
403 name = mkOption { type = str; description = "zone name"; };
404 withCAA = mkOption { type = nullOr str; description = "CAA entry"; default = null; };
406 description = "NS slave groups of this zone";
410 description = "groups names that should have their NS entries listed here";
414 description = "Extra zone configuration for bind";
420 entries = mkOption { type = lines; description = "Regular entries of the NS zone"; };
421 withEmail = mkOption {
422 description = "List of domains that should have mail entries (MX, dkim, SPF, ...)";
424 type = listOf (submodule {
426 domain = mkOption { type = str; description = "Which subdomain is concerned"; };
427 send = mkOption { type = bool; description = "Whether there can be e-mails originating from the subdomain"; };
428 receive = mkOption { type = bool; description = "Whether there can be e-mails arriving to the subdomain"; };
440 Remote backup with duplicity
444 password = mkOption { type = str; description = "Password for encrypting files"; };
446 type = attrsOf (submodule {
450 example = literalExample ''
451 bucket: "s3://some_host/${bucket}";
455 Takes a bucket name as argument and returns a url
458 accessKeyId = mkOption { type = str; description = "Remote access-key"; };
459 secretAccessKey = mkOption { type = str; description = "Remote access secret"; };
466 zrepl_backup = mkOption {
470 description = "SSH key information";
473 public = mkOption { type = str; description = "Public part of the key"; };
474 private = mkOption { type = lines; description = "Private part of the key"; };
478 mysql = mkMysqlOptions "Zrepl" {};
482 rsync_backup = mkOption {
484 Rsync backup configuration from controlled host
489 description = "SSH key information";
492 public = mkOption { type = str; description = "Public part of the key"; };
493 private = mkOption { type = lines; description = "Private part of the key"; };
497 profiles = mkOption {
498 description = "Attrs of profiles to backup";
499 type = attrsOf (submodule {
501 keep = mkOption { type = int; description = "Number of backups to keep"; };
502 check_command = mkOption { type = str; description = "command to check if backup needs to be done"; default = "backup"; };
503 login = mkOption { type = str; description = "Login to connect to host"; };
504 port = mkOption { type = str; default = "22"; description = "Port to connect to host"; };
505 host = mkOption { type = str; description = "Host to connect to"; };
506 host_key = mkOption { type = str; description = "Host key"; };
507 host_key_type = mkOption { type = str; description = "Host key type"; };
509 description = "Parts to backup for this host";
510 type = attrsOf (submodule {
512 remote_folder = mkOption { type = path; description = "Remote folder to backup";};
513 exclude_from = mkOption {
516 description = "List of folders/files to exclude from the backup";
518 files_from = mkOption {
521 description = "List of folders/files to backup in the base folder";
526 description = "Extra arguments to pass to rsync";
537 monitoring = mkOption {
538 description = "Monitoring configuration";
541 status_url = mkOption { type = str; description = "URL to push status to"; };
542 status_token = mkOption { type = str; description = "Token for the status url"; };
543 http_user_password = mkOption { type = str; description = "HTTP credentials to check services behind wall"; };
544 email = mkOption { type = str; description = "Admin E-mail"; };
545 ssh_public_key = mkOption { type = str; description = "SSH public key"; };
546 ssh_secret_key = mkOption { type = str; description = "SSH secret key"; };
547 imap_login = mkOption { type = str; description = "IMAP login"; };
548 imap_password = mkOption { type = str; description = "IMAP password"; };
549 eriomem_keys = mkOption { type = listOf (listOf str); description = "Eriomem keys"; default = []; };
551 description = "OVH credentials for sms script";
554 endpoint = mkOption { type = str; default = "ovh-eu"; description = "OVH endpoint"; };
555 application_key = mkOption { type = str; description = "Application key"; };
556 application_secret = mkOption { type = str; description = "Application secret"; };
557 consumer_key = mkOption { type = str; description = "Consumer key"; };
558 account = mkOption { type = str; description = "Account"; };
563 description = "Eban credentials for webhook";
566 user = mkOption { type = str; description = "User"; };
567 password = mkOption { type = str; description = "Password"; };
571 nrdp_tokens = mkOption { type = listOf str; description = "Tokens allowed to push status update"; };
572 slack_url = mkOption { type = str; description = "Slack webhook url to push status update"; };
573 slack_channel = mkOption { type = str; description = "Slack channel to push status update"; };
574 netdata_aggregator = mkOption { type = str; description = "Url where netdata information should be sent"; };
575 netdata_keys = mkOption { type = attrsOf str; description = "netdata host keys"; };
576 contacts = mkOption { type = attrsOf unspecified; description = "Contact dicts to fill naemon objects"; };
577 email_check = mkOption {
578 description = "Emails services to check";
579 type = attrsOf (submodule {
581 local = mkOption { type = bool; default = false; description = "Use local configuration"; };
582 port = mkOption { type = nullOr str; default = null; description = "Port to connect to ssh"; };
583 login = mkOption { type = nullOr str; default = null; description = "Login to connect to ssh"; };
584 targets = mkOption { type = listOf str; description = "Hosts to send E-mails to"; };
585 mail_address = mkOption { type = nullOr str; default = null; description = "E-mail recipient part to send e-mail to"; };
586 mail_domain = mkOption { type = nullOr str; default = null; description = "E-mail domain part to send e-mail to"; };
594 description = "MPD configuration";
597 folder = mkOption { type = str; description = "Folder to serve from the MPD instance"; };
598 password = mkOption { type = str; description = "Password to connect to the MPD instance"; };
599 host = mkOption { type = str; description = "Host to connect to the MPD instance"; };
600 port = mkOption { type = str; description = "Port to connect to the MPD instance"; };
605 description = "FTP configuration";
608 ldap = mkLdapOptions "FTP" {};
613 description = "VPN configuration";
614 type = attrsOf (submodule {
616 prefix = mkOption { type = str; description = "ipv6 prefix for the vpn subnet"; };
617 privateKey = mkOption { type = str; description = "Private key for the host"; };
618 publicKey = mkOption { type = str; description = "Public key for the host"; };
623 description = "Mail configuration";
627 description = "DMARC configuration";
630 ignore_hosts = mkOption {
633 Hosts to ignore when checking for dmarc
640 description = "DKIM configuration";
641 type = attrsOf (submodule {
647 "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3w1a2aMxWw9+hdcmbqX4UevcVqr204y0K73Wdc7MPZiOOlUJQYsMNSYR1Y/SC7jmPKeitpcJCpQgn/cveJZbuikjjPLsDReHyFEYmC278ZLRTELHx6f1IXM8WE08JIRT69CfZiMi1rVcOh9qRT4F93PyjCauU8Y5hJjtg9ThsWwIDAQAB" )
649 description = "Public entry to put in DNS TXT field";
651 private = mkOption { type = str; description = "Private key"; };
656 description = "Postfix configuration";
659 additional_mailbox_domains = mkOption {
661 List of domains that are used as mailbox final destination, in addition to those defined in the DNS records
665 mysql = mkMysqlOptions "Postfix" {
666 password_encrypt = mkOption { type = str; description = "Key to encrypt relay password in database"; };
668 backup_domains = mkOption {
670 Domains that are accepted for relay as backup domain
672 type = attrsOf (submodule {
674 domains = mkOption { type = listOf str; description = "Domains list"; };
675 relay_restrictions = mkOption {
678 Restrictions for relaying the e-mails from the domains
681 recipient_maps = mkOption {
683 Recipient map to accept relay for.
684 Must be specified for domain, the rules apply to everyone!
686 type = listOf (submodule {
689 type = enum [ "hash" ];
690 description = "Map type";
694 description = "Map content";
706 description = "Dovecot configuration";
709 ldap = mkLdapOptions "Dovecot" {
710 pass_attrs = mkOption { type = str; description = "Password attribute in LDAP"; };
711 user_attrs = mkOption { type = str; description = "User attribute mapping in LDAP"; };
712 iterate_attrs = mkOption { type = str; description = "User attribute mapping for listing in LDAP"; };
713 iterate_filter = mkOption { type = str; description = "User attribute filter for listing in LDAP"; };
714 postfix_mailbox_filter = mkOption { type = str; description = "Postfix filter to get mailboxes"; };
720 description = "rspamd configuration";
723 redis = mkRedisOptions "Redis";
724 read_password_hashed = mkOption { type = str; description = "Hashed read password for rspamd"; };
725 write_password_hashed = mkOption { type = str; description = "Hashed write password for rspamd"; };
726 read_password = mkOption {
728 description = "Read password for rspamd. Unused";
731 write_password = mkOption {
733 description = "Write password for rspamd. Unused";
740 description = "Mail script recipients";
741 type = attrsOf (submodule {
743 external = mkEnableOption "Create a script_<name>@mail.immae.eu external address";
746 git source to fetch the script from.
747 It must have a default.nix file as its root accepting a scriptEnv parameter
751 url = mkOption { type = str; description = "git url to fetch"; };
752 rev = mkOption { type = str; description = "git reference to fetch"; };
757 description = "Variables to pass to the script";
764 description = "Sympa configuration";
767 listmasters = mkOption {
769 description = "Listmasters";
771 postgresql = mkPsqlOptions "Sympa";
772 data_sources = mkOption {
775 description = "Data sources to make available to sympa";
780 description = "Scenari to make available to sympa";
788 buildbot = mkOption {
789 description = "Buildbot configuration";
793 description = "Buildbot user";
797 description = "user uid";
801 description = "user gid";
808 description = "Ldap configuration for buildbot";
811 password = mkOption { type = str; description = "Buildbot password"; };
815 projects = mkOption {
816 description = "Projects to make a buildbot for";
817 type = attrsOf (submodule {
819 name = mkOption { type = str; description = "Project name"; };
820 packages = mkOption {
822 example = literalExample ''
823 pkgs: [ pkgs.bash pkgs.git pkgs.gzip pkgs.openssh ];
827 Builds packages list to make available to buildbot project.
828 Takes pkgs as argument.
831 pythonPackages = mkOption {
833 example = literalExample ''
834 p: pkgs: [ pkgs.python3Packages.pip ];
838 Builds python packages list to make available to buildbot project.
839 Takes buildbot python module as first argument and pkgs as second argument in order to augment the python modules list.
842 pythonPathHome = mkOption { type = bool; description = "Whether to add project’s python home to python path"; };
845 description = "Secrets for the project to dump as files";
847 environment = mkOption {
850 Environment variables for the project.
851 BUILDBOT_ is prefixed to the variable names
854 activationScript = mkOption {
857 Activation script to run during deployment
860 builderPaths = mkOption {
861 type = attrsOf unspecified;
864 Attrs of functions to make accessible specifically per builder.
865 Takes pkgs as argument and should return a single path containing binaries.
866 This path will be accessible as BUILDBOT_PATH_<attrskey>
869 webhookTokens = mkOption {
870 type = nullOr (listOf str);
873 List of tokens allowed to push to project’s change_hook/base endpoint
883 description = "Tools configurations";
886 contact = mkOption { type = str; description = "Contact e-mail address"; };
889 type = attrsOf (submodule {
891 url = mkOption { type = str; description = "URL to fetch"; };
892 sha256 = mkOption { type = str; description = "Hash of the url"; };
895 description = "Assets to provide on assets.immae.eu";
898 description = "Davical configuration";
901 postgresql = mkPsqlOptions "Davical";
902 ldap = mkLdapOptions "Davical" {};
906 diaspora = mkOption {
907 description = "Diaspora configuration";
910 postgresql = mkPsqlOptions "Diaspora";
911 redis = mkRedisOptions "Diaspora";
912 ldap = mkLdapOptions "Diaspora" {};
913 secret_token = mkOption { type = str; description = "Secret token"; };
917 dmarc_reports = mkOption {
918 description = "DMARC reports configuration";
921 mysql = mkMysqlOptions "DMARC" {};
922 anonymous_key = mkOption { type = str; description = "Anonymous hashing key"; };
926 etherpad-lite = mkOption {
927 description = "Etherpad configuration";
930 postgresql = mkPsqlOptions "Etherpad";
931 ldap = mkLdapOptions "Etherpad" {
932 group_filter = mkOption { type = str; description = "Filter for groups"; };
934 adminPassword = mkOption { type = str; description = "Admin password for mypads / admin"; };
935 session_key = mkOption { type = str; description = "Session key"; };
936 api_key = mkOption { type = str; description = "API key"; };
937 redirects = mkOption { type = str; description = "Redirects for apache"; };
941 gitolite = mkOption {
942 description = "Gitolite configuration";
945 ldap = mkLdapOptions "Gitolite" {};
949 kanboard = mkOption {
950 description = "Kanboard configuration";
953 postgresql = mkPsqlOptions "Kanboard";
954 ldap = mkLdapOptions "Kanboard" {
955 admin_dn = mkOption { type = str; description = "Admin DN"; };
960 mantisbt = mkOption {
961 description = "Mantisbt configuration";
964 postgresql = mkPsqlOptions "Mantisbt";
965 ldap = mkLdapOptions "Mantisbt" {};
966 master_salt = mkOption { type = str; description = "Master salt for password hash"; };
970 mastodon = mkOption {
971 description = "Mastodon configuration";
974 postgresql = mkPsqlOptions "Mastodon";
975 redis = mkRedisOptions "Mastodon";
976 ldap = mkLdapOptions "Mastodon" {};
977 paperclip_secret = mkOption { type = str; description = "Paperclip secret"; };
978 otp_secret = mkOption { type = str; description = "OTP secret"; };
979 secret_key_base = mkOption { type = str; description = "Secret key base"; };
981 description = "vapid key";
984 private = mkOption { type = str; description = "Private key"; };
985 public = mkOption { type = str; description = "Public key"; };
992 mediagoblin = mkOption {
993 description = "Mediagoblin configuration";
996 postgresql = mkPsqlOptions "Mediagoblin";
997 redis = mkRedisOptions "Mediagoblin";
998 ldap = mkLdapOptions "Mediagoblin" {};
1002 nextcloud = mkOption {
1003 description = "Nextcloud configuration";
1006 postgresql = mkPsqlOptions "Peertube";
1007 redis = mkRedisOptions "Peertube";
1008 password_salt = mkOption { type = str; description = "Password salt"; };
1009 instance_id = mkOption { type = str; description = "Instance ID"; };
1010 secret = mkOption { type = str; description = "App secret"; };
1014 peertube = mkOption {
1015 description = "Peertube configuration";
1018 listenPort = mkOption { type = port; description = "Port to listen to"; };
1019 postgresql = mkPsqlOptions "Peertube";
1020 redis = mkRedisOptions "Peertube";
1021 ldap = mkLdapOptions "Peertube" {};
1025 syden_peertube = mkOption {
1026 description = "Peertube Syden configuration";
1029 listenPort = mkOption { type = port; description = "Port to listen to"; };
1030 postgresql = mkPsqlOptions "Peertube";
1031 redis = mkRedisOptions "Peertube";
1035 phpldapadmin = mkOption {
1036 description = "phpLdapAdmin configuration";
1039 ldap = mkLdapOptions "phpldapadmin" {};
1044 description = "Rompr configuration";
1048 description = "MPD configuration";
1051 host = mkOption { type = str; description = "Host for MPD"; };
1052 port = mkOption { type = port; description = "Port to access MPD host"; };
1059 roundcubemail = mkOption {
1060 description = "Roundcubemail configuration";
1063 postgresql = mkPsqlOptions "TT-RSS";
1064 secret = mkOption { type = str; description = "Secret"; };
1068 shaarli = mkOption {
1069 description = "Shaarli configuration";
1072 ldap = mkLdapOptions "Shaarli" {};
1076 status_engine = mkOption {
1077 description = "Status Engine configuration";
1080 mysql = mkMysqlOptions "StatusEngine" {};
1081 ldap = mkLdapOptions "StatusEngine" {};
1086 description = "Taskwarrior configuration";
1089 ldap = mkLdapOptions "Taskwarrior" {};
1090 taskwarrior-web = mkOption {
1091 description = "taskwarrior-web profiles";
1092 type = attrsOf (submodule {
1096 description = "List of ldap uids having access to this profile";
1098 org = mkOption { type = str; description = "Taskd organisation"; };
1099 key = mkOption { type = str; description = "Taskd key"; };
1100 date = mkOption { type = str; description = "Preferred date format"; };
1108 description = "TT-RSS configuration";
1111 postgresql = mkPsqlOptions "TT-RSS";
1112 ldap = mkLdapOptions "TT-RSS" {};
1116 wallabag = mkOption {
1117 description = "Wallabag configuration";
1120 postgresql = mkPsqlOptions "Wallabag";
1121 ldap = mkLdapOptions "Wallabag" {
1122 admin_filter = mkOption { type = str; description = "Admin users filter"; };
1124 redis = mkRedisOptions "Wallabag";
1125 secret = mkOption { type = str; description = "App secret"; };
1129 webhooks = mkOption {
1131 description = "Mapping 'name'.php => script for webhooks";
1133 csp_reports = mkOption {
1134 description = "CSP report configuration";
1137 report_uri = mkOption { type = str; description = "URI to report CSP violations to"; };
1138 policies = mkOption { type = attrsOf str; description = "CSP policies to apply"; };
1139 postgresql = mkPsqlOptions "CSP reports";
1143 commento = mkOption {
1144 description = "Commento configuration";
1147 listenPort = mkOption { type = port; description = "Port to listen to"; };
1148 postgresql = mkPsqlOptions "Commento";
1149 smtp = mkSmtpOptions "Commento";
1154 description = "Ympd configuration";
1157 listenPort = mkOption { type = port; description = "Port to listen to"; };
1159 description = "MPD configuration";
1162 password = mkOption { type = str; description = "Password to access MPD host"; };
1163 host = mkOption { type = str; description = "Host for MPD"; };
1164 port = mkOption { type = port; description = "Port to access MPD host"; };
1172 description = "Yourls configuration";
1175 mysql = mkMysqlOptions "Yourls" {};
1176 ldap = mkLdapOptions "Yourls" {};
1177 cookieKey = mkOption { type = str; description = "Cookie key"; };
1184 serverSpecific = mkOption { type = attrsOf unspecified; description = "Server specific configuration"; };
1185 websites = mkOption {
1186 description = "Websites configurations";
1190 description = "Immae configuration by environment";
1194 description = "Temp configuration";
1197 ldap = mkLdapOptions "Immae temp" {
1198 filter = mkOption { type = str; description = "Filter for user access"; };
1206 isabelle = mkOption {
1207 description = "Isabelle configurations by environment";
1210 atenSubmodule = mkOption {
1211 description = "environment configuration";
1214 environment = mkOption { type = str; description = "Symfony environment"; };
1215 secret = mkOption { type = str; description = "Symfony App secret"; };
1216 postgresql = mkPsqlOptions "Aten";
1223 aten_production = atenSubmodule;
1224 aten_integration = atenSubmodule;
1225 iridologie = mkOption {
1226 description = "environment configuration";
1229 environment = mkOption { type = str; description = "SPIP environment"; };
1230 mysql = mkMysqlOptions "Iridologie" {};
1231 ldap = mkLdapOptions "Iridologie" {};
1239 description = "Chloe configurations by environment";
1242 chloeSubmodule = mkOption {
1243 description = "environment configuration";
1246 environment = mkOption { type = str; description = "SPIP environment"; };
1247 mysql = mkMysqlOptions "Chloe" {};
1248 ldap = mkLdapOptions "Chloe" {};
1255 production = chloeSubmodule;
1256 integration = chloeSubmodule;
1260 connexionswing = mkOption {
1261 description = "Connexionswing configurations by environment";
1264 csSubmodule = mkOption {
1265 description = "environment configuration";
1268 environment = mkOption { type = str; description = "Symfony environment"; };
1269 mysql = mkMysqlOptions "Connexionswing" {};
1270 secret = mkOption { type = str; description = "Symfony App secret"; };
1271 email = mkOption { type = str; description = "Symfony email notification"; };
1278 production = csSubmodule;
1279 integration = csSubmodule;
1284 description = "Naturaloutil configuration";
1287 mysql = mkMysqlOptions "Naturaloutil" {};
1288 server_admin = mkOption { type = str; description = "Server admin e-mail"; };
1292 telio_tortay = mkOption {
1293 description = "Telio Tortay configuration";
1296 server_admin = mkOption { type = str; description = "Server admin e-mail"; };
1300 ludivine = mkOption {
1301 description = "Ludivinecassal configurations by environment";
1304 lcSubmodule = mkOption {
1305 description = "environment configuration";
1308 environment = mkOption { type = str; description = "Symfony environment"; };
1309 mysql = mkMysqlOptions "LudivineCassal" {};
1310 ldap = mkLdapOptions "LudivineCassal" {};
1311 secret = mkOption { type = str; description = "Symfony App secret"; };
1318 production = lcSubmodule;
1319 integration = lcSubmodule;
1324 description = "Emilia configuration";
1327 postgresql = mkPsqlOptions "Emilia";
1331 florian = mkOption {
1332 description = "Florian configuration";
1335 server_admin = mkOption { type = str; description = "Server admin e-mail"; };
1339 nassime = mkOption {
1340 description = "Nassime configuration";
1343 server_admin = mkOption { type = str; description = "Server admin e-mail"; };
1347 piedsjaloux = mkOption {
1348 description = "Piedsjaloux configurations by environment";
1351 pjSubmodule = mkOption {
1352 description = "environment configuration";
1355 environment = mkOption { type = str; description = "Symfony environment"; };
1356 mysql = mkMysqlOptions "Piedsjaloux" {};
1357 secret = mkOption { type = str; description = "Symfony App secret"; };
1364 production = pjSubmodule;
1365 integration = pjSubmodule;
1370 description = "Europe Richie configurations by environment";
1373 mysql = mkMysqlOptions "Richie" {};
1374 smtp_mailer = mkOption {
1375 description = "SMTP mailer configuration";
1378 user = mkOption { type = str; description = "Username"; };
1379 password = mkOption { type = str; description = "Password"; };
1386 caldance = mkOption {
1387 description = "Caldance configurations by environment";
1390 integration = mkOption {
1391 description = "environment configuration";
1394 password = mkOption { type = str; description = "Password file content for basic auth"; };
1401 tellesflorian = mkOption {
1402 description = "Tellesflorian configurations by environment";
1405 tfSubmodule = mkOption {
1406 description = "environment configuration";
1409 environment = mkOption { type = str; description = "Symfony environment"; };
1410 mysql = mkMysqlOptions "Tellesflorian" {};
1411 secret = mkOption { type = str; description = "Symfony App secret"; };
1412 invite_passwords = mkOption { type = str; description = "Password basic auth"; };
1419 integration = tfSubmodule;
1427 privateFiles = mkOption {
1430 Path to secret files to make available during build
1434 options.hostEnv = mkOption {
1437 default = config.myEnv.servers."${name}";
1438 description = "Host environment";