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"; };
405 description = "NS slave groups of this zone";
409 description = "groups names that should have their NS entries listed here";
413 description = "Extra zone configuration for bind";
419 entries = mkOption { type = lines; description = "Regular entries of the NS zone"; };
420 withEmail = mkOption {
421 description = "List of domains that should have mail entries (MX, dkim, SPF, ...)";
423 type = listOf (submodule {
425 domain = mkOption { type = str; description = "Which subdomain is concerned"; };
426 send = mkOption { type = bool; description = "Whether there can be e-mails originating from the subdomain"; };
427 receive = mkOption { type = bool; description = "Whether there can be e-mails arriving to the subdomain"; };
439 Remote backup with duplicity
443 password = mkOption { type = str; description = "Password for encrypting files"; };
445 type = attrsOf (submodule {
449 example = literalExample ''
450 bucket: "s3://some_host/${bucket}";
454 Takes a bucket name as argument and returns a url
457 accessKeyId = mkOption { type = str; description = "Remote access-key"; };
458 secretAccessKey = mkOption { type = str; description = "Remote access secret"; };
465 zrepl_backup = mkOption {
469 description = "SSH key information";
472 public = mkOption { type = str; description = "Public part of the key"; };
473 private = mkOption { type = lines; description = "Private part of the key"; };
477 mysql = mkMysqlOptions "Zrepl" {};
481 rsync_backup = mkOption {
483 Rsync backup configuration from controlled host
488 description = "SSH key information";
491 public = mkOption { type = str; description = "Public part of the key"; };
492 private = mkOption { type = lines; description = "Private part of the key"; };
496 profiles = mkOption {
497 description = "Attrs of profiles to backup";
498 type = attrsOf (submodule {
500 keep = mkOption { type = int; description = "Number of backups to keep"; };
501 check_command = mkOption { type = str; description = "command to check if backup needs to be done"; default = "backup"; };
502 login = mkOption { type = str; description = "Login to connect to host"; };
503 port = mkOption { type = str; default = "22"; description = "Port to connect to host"; };
504 host = mkOption { type = str; description = "Host to connect to"; };
505 host_key = mkOption { type = str; description = "Host key"; };
506 host_key_type = mkOption { type = str; description = "Host key type"; };
508 description = "Parts to backup for this host";
509 type = attrsOf (submodule {
511 remote_folder = mkOption { type = path; description = "Remote folder to backup";};
512 exclude_from = mkOption {
515 description = "List of folders/files to exclude from the backup";
517 files_from = mkOption {
520 description = "List of folders/files to backup in the base folder";
525 description = "Extra arguments to pass to rsync";
536 monitoring = mkOption {
537 description = "Monitoring configuration";
540 status_url = mkOption { type = str; description = "URL to push status to"; };
541 status_token = mkOption { type = str; description = "Token for the status url"; };
542 http_user_password = mkOption { type = str; description = "HTTP credentials to check services behind wall"; };
543 email = mkOption { type = str; description = "Admin E-mail"; };
544 ssh_public_key = mkOption { type = str; description = "SSH public key"; };
545 ssh_secret_key = mkOption { type = str; description = "SSH secret key"; };
546 imap_login = mkOption { type = str; description = "IMAP login"; };
547 imap_password = mkOption { type = str; description = "IMAP password"; };
548 eriomem_keys = mkOption { type = listOf (listOf str); description = "Eriomem keys"; default = []; };
550 description = "OVH credentials for sms script";
553 endpoint = mkOption { type = str; default = "ovh-eu"; description = "OVH endpoint"; };
554 application_key = mkOption { type = str; description = "Application key"; };
555 application_secret = mkOption { type = str; description = "Application secret"; };
556 consumer_key = mkOption { type = str; description = "Consumer key"; };
557 account = mkOption { type = str; description = "Account"; };
562 description = "Eban credentials for webhook";
565 password = mkOption { type = str; description = "Password"; };
569 nrdp_tokens = mkOption { type = listOf str; description = "Tokens allowed to push status update"; };
570 slack_url = mkOption { type = str; description = "Slack webhook url to push status update"; };
571 slack_channel = mkOption { type = str; description = "Slack channel to push status update"; };
572 netdata_aggregator = mkOption { type = str; description = "Url where netdata information should be sent"; };
573 netdata_keys = mkOption { type = attrsOf str; description = "netdata host keys"; };
574 contacts = mkOption { type = attrsOf unspecified; description = "Contact dicts to fill naemon objects"; };
575 email_check = mkOption {
576 description = "Emails services to check";
577 type = attrsOf (submodule {
579 local = mkOption { type = bool; default = false; description = "Use local configuration"; };
580 port = mkOption { type = nullOr str; default = null; description = "Port to connect to ssh"; };
581 login = mkOption { type = nullOr str; default = null; description = "Login to connect to ssh"; };
582 targets = mkOption { type = listOf str; description = "Hosts to send E-mails to"; };
583 mail_address = mkOption { type = nullOr str; default = null; description = "E-mail recipient part to send e-mail to"; };
584 mail_domain = mkOption { type = nullOr str; default = null; description = "E-mail domain part to send e-mail to"; };
592 description = "MPD configuration";
595 folder = mkOption { type = str; description = "Folder to serve from the MPD instance"; };
596 password = mkOption { type = str; description = "Password to connect to the MPD instance"; };
597 host = mkOption { type = str; description = "Host to connect to the MPD instance"; };
598 port = mkOption { type = str; description = "Port to connect to the MPD instance"; };
603 description = "FTP configuration";
606 ldap = mkLdapOptions "FTP" {};
611 description = "VPN configuration";
612 type = attrsOf (submodule {
614 prefix = mkOption { type = str; description = "ipv6 prefix for the vpn subnet"; };
615 privateKey = mkOption { type = str; description = "Private key for the host"; };
616 publicKey = mkOption { type = str; description = "Public key for the host"; };
621 description = "Mail configuration";
625 description = "DMARC configuration";
628 ignore_hosts = mkOption {
631 Hosts to ignore when checking for dmarc
638 description = "DKIM configuration";
639 type = attrsOf (submodule {
645 "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3w1a2aMxWw9+hdcmbqX4UevcVqr204y0K73Wdc7MPZiOOlUJQYsMNSYR1Y/SC7jmPKeitpcJCpQgn/cveJZbuikjjPLsDReHyFEYmC278ZLRTELHx6f1IXM8WE08JIRT69CfZiMi1rVcOh9qRT4F93PyjCauU8Y5hJjtg9ThsWwIDAQAB" )
647 description = "Public entry to put in DNS TXT field";
649 private = mkOption { type = str; description = "Private key"; };
654 description = "Postfix configuration";
657 additional_mailbox_domains = mkOption {
659 List of domains that are used as mailbox final destination, in addition to those defined in the DNS records
663 mysql = mkMysqlOptions "Postfix" {
664 password_encrypt = mkOption { type = str; description = "Key to encrypt relay password in database"; };
666 backup_domains = mkOption {
668 Domains that are accepted for relay as backup domain
670 type = attrsOf (submodule {
672 domains = mkOption { type = listOf str; description = "Domains list"; };
673 relay_restrictions = mkOption {
676 Restrictions for relaying the e-mails from the domains
679 recipient_maps = mkOption {
681 Recipient map to accept relay for.
682 Must be specified for domain, the rules apply to everyone!
684 type = listOf (submodule {
687 type = enum [ "hash" ];
688 description = "Map type";
692 description = "Map content";
704 description = "Dovecot configuration";
707 ldap = mkLdapOptions "Dovecot" {
708 pass_attrs = mkOption { type = str; description = "Password attribute in LDAP"; };
709 user_attrs = mkOption { type = str; description = "User attribute mapping in LDAP"; };
710 iterate_attrs = mkOption { type = str; description = "User attribute mapping for listing in LDAP"; };
711 iterate_filter = mkOption { type = str; description = "User attribute filter for listing in LDAP"; };
712 postfix_mailbox_filter = mkOption { type = str; description = "Postfix filter to get mailboxes"; };
718 description = "rspamd configuration";
721 redis = mkRedisOptions "Redis";
722 read_password_hashed = mkOption { type = str; description = "Hashed read password for rspamd"; };
723 write_password_hashed = mkOption { type = str; description = "Hashed write password for rspamd"; };
724 read_password = mkOption {
726 description = "Read password for rspamd. Unused";
729 write_password = mkOption {
731 description = "Write password for rspamd. Unused";
738 description = "Mail script recipients";
739 type = attrsOf (submodule {
741 external = mkEnableOption "Create a script_<name>@mail.immae.eu external address";
744 git source to fetch the script from.
745 It must have a default.nix file as its root accepting a scriptEnv parameter
749 url = mkOption { type = str; description = "git url to fetch"; };
750 rev = mkOption { type = str; description = "git reference to fetch"; };
755 description = "Variables to pass to the script";
762 description = "Sympa configuration";
765 listmasters = mkOption {
767 description = "Listmasters";
769 postgresql = mkPsqlOptions "Sympa";
770 data_sources = mkOption {
773 description = "Data sources to make available to sympa";
778 description = "Scenari to make available to sympa";
786 buildbot = mkOption {
787 description = "Buildbot configuration";
791 description = "Buildbot user";
795 description = "user uid";
799 description = "user gid";
806 description = "Ldap configuration for buildbot";
809 password = mkOption { type = str; description = "Buildbot password"; };
813 projects = mkOption {
814 description = "Projects to make a buildbot for";
815 type = attrsOf (submodule {
817 name = mkOption { type = str; description = "Project name"; };
818 packages = mkOption {
820 example = literalExample ''
821 pkgs: [ pkgs.bash pkgs.git pkgs.gzip pkgs.openssh ];
825 Builds packages list to make available to buildbot project.
826 Takes pkgs as argument.
829 pythonPackages = mkOption {
831 example = literalExample ''
832 p: pkgs: [ pkgs.python3Packages.pip ];
836 Builds python packages list to make available to buildbot project.
837 Takes buildbot python module as first argument and pkgs as second argument in order to augment the python modules list.
840 pythonPathHome = mkOption { type = bool; description = "Whether to add project’s python home to python path"; };
843 description = "Secrets for the project to dump as files";
845 environment = mkOption {
848 Environment variables for the project.
849 BUILDBOT_ is prefixed to the variable names
852 activationScript = mkOption {
855 Activation script to run during deployment
858 builderPaths = mkOption {
859 type = attrsOf unspecified;
862 Attrs of functions to make accessible specifically per builder.
863 Takes pkgs as argument and should return a single path containing binaries.
864 This path will be accessible as BUILDBOT_PATH_<attrskey>
867 webhookTokens = mkOption {
868 type = nullOr (listOf str);
871 List of tokens allowed to push to project’s change_hook/base endpoint
881 description = "Tools configurations";
884 contact = mkOption { type = str; description = "Contact e-mail address"; };
887 type = attrsOf (submodule {
889 url = mkOption { type = str; description = "URL to fetch"; };
890 sha256 = mkOption { type = str; description = "Hash of the url"; };
893 description = "Assets to provide on assets.immae.eu";
896 description = "Davical configuration";
899 postgresql = mkPsqlOptions "Davical";
900 ldap = mkLdapOptions "Davical" {};
904 diaspora = mkOption {
905 description = "Diaspora configuration";
908 postgresql = mkPsqlOptions "Diaspora";
909 redis = mkRedisOptions "Diaspora";
910 ldap = mkLdapOptions "Diaspora" {};
911 secret_token = mkOption { type = str; description = "Secret token"; };
915 dmarc_reports = mkOption {
916 description = "DMARC reports configuration";
919 mysql = mkMysqlOptions "DMARC" {};
920 anonymous_key = mkOption { type = str; description = "Anonymous hashing key"; };
924 etherpad-lite = mkOption {
925 description = "Etherpad configuration";
928 postgresql = mkPsqlOptions "Etherpad";
929 ldap = mkLdapOptions "Etherpad" {
930 group_filter = mkOption { type = str; description = "Filter for groups"; };
932 adminPassword = mkOption { type = str; description = "Admin password for mypads / admin"; };
933 session_key = mkOption { type = str; description = "Session key"; };
934 api_key = mkOption { type = str; description = "API key"; };
935 redirects = mkOption { type = str; description = "Redirects for apache"; };
939 gitolite = mkOption {
940 description = "Gitolite configuration";
943 ldap = mkLdapOptions "Gitolite" {};
947 kanboard = mkOption {
948 description = "Kanboard configuration";
951 postgresql = mkPsqlOptions "Kanboard";
952 ldap = mkLdapOptions "Kanboard" {
953 admin_dn = mkOption { type = str; description = "Admin DN"; };
958 mantisbt = mkOption {
959 description = "Mantisbt configuration";
962 postgresql = mkPsqlOptions "Mantisbt";
963 ldap = mkLdapOptions "Mantisbt" {};
964 master_salt = mkOption { type = str; description = "Master salt for password hash"; };
968 mastodon = mkOption {
969 description = "Mastodon configuration";
972 postgresql = mkPsqlOptions "Mastodon";
973 redis = mkRedisOptions "Mastodon";
974 ldap = mkLdapOptions "Mastodon" {};
975 paperclip_secret = mkOption { type = str; description = "Paperclip secret"; };
976 otp_secret = mkOption { type = str; description = "OTP secret"; };
977 secret_key_base = mkOption { type = str; description = "Secret key base"; };
979 description = "vapid key";
982 private = mkOption { type = str; description = "Private key"; };
983 public = mkOption { type = str; description = "Public key"; };
990 mediagoblin = mkOption {
991 description = "Mediagoblin configuration";
994 postgresql = mkPsqlOptions "Mediagoblin";
995 redis = mkRedisOptions "Mediagoblin";
996 ldap = mkLdapOptions "Mediagoblin" {};
1000 nextcloud = mkOption {
1001 description = "Nextcloud configuration";
1004 postgresql = mkPsqlOptions "Peertube";
1005 redis = mkRedisOptions "Peertube";
1006 password_salt = mkOption { type = str; description = "Password salt"; };
1007 instance_id = mkOption { type = str; description = "Instance ID"; };
1008 secret = mkOption { type = str; description = "App secret"; };
1012 peertube = mkOption {
1013 description = "Peertube configuration";
1016 listenPort = mkOption { type = port; description = "Port to listen to"; };
1017 postgresql = mkPsqlOptions "Peertube";
1018 redis = mkRedisOptions "Peertube";
1019 ldap = mkLdapOptions "Peertube" {};
1023 syden_peertube = mkOption {
1024 description = "Peertube Syden configuration";
1027 listenPort = mkOption { type = port; description = "Port to listen to"; };
1028 postgresql = mkPsqlOptions "Peertube";
1029 redis = mkRedisOptions "Peertube";
1033 phpldapadmin = mkOption {
1034 description = "phpLdapAdmin configuration";
1037 ldap = mkLdapOptions "phpldapadmin" {};
1042 description = "Rompr configuration";
1046 description = "MPD configuration";
1049 host = mkOption { type = str; description = "Host for MPD"; };
1050 port = mkOption { type = port; description = "Port to access MPD host"; };
1057 roundcubemail = mkOption {
1058 description = "Roundcubemail configuration";
1061 postgresql = mkPsqlOptions "TT-RSS";
1062 secret = mkOption { type = str; description = "Secret"; };
1066 shaarli = mkOption {
1067 description = "Shaarli configuration";
1070 ldap = mkLdapOptions "Shaarli" {};
1074 status_engine = mkOption {
1075 description = "Status Engine configuration";
1078 mysql = mkMysqlOptions "StatusEngine" {};
1079 ldap = mkLdapOptions "StatusEngine" {};
1084 description = "Taskwarrior configuration";
1087 ldap = mkLdapOptions "Taskwarrior" {};
1088 taskwarrior-web = mkOption {
1089 description = "taskwarrior-web profiles";
1090 type = attrsOf (submodule {
1094 description = "List of ldap uids having access to this profile";
1096 org = mkOption { type = str; description = "Taskd organisation"; };
1097 key = mkOption { type = str; description = "Taskd key"; };
1098 date = mkOption { type = str; description = "Preferred date format"; };
1106 description = "TT-RSS configuration";
1109 postgresql = mkPsqlOptions "TT-RSS";
1110 ldap = mkLdapOptions "TT-RSS" {};
1114 wallabag = mkOption {
1115 description = "Wallabag configuration";
1118 postgresql = mkPsqlOptions "Wallabag";
1119 ldap = mkLdapOptions "Wallabag" {
1120 admin_filter = mkOption { type = str; description = "Admin users filter"; };
1122 redis = mkRedisOptions "Wallabag";
1123 secret = mkOption { type = str; description = "App secret"; };
1127 webhooks = mkOption {
1129 description = "Mapping 'name'.php => script for webhooks";
1131 csp_reports = mkOption {
1132 description = "CSP report configuration";
1135 report_uri = mkOption { type = str; description = "URI to report CSP violations to"; };
1136 policies = mkOption { type = attrsOf str; description = "CSP policies to apply"; };
1137 postgresql = mkPsqlOptions "CSP reports";
1141 commento = mkOption {
1142 description = "Commento configuration";
1145 listenPort = mkOption { type = port; description = "Port to listen to"; };
1146 postgresql = mkPsqlOptions "Commento";
1147 smtp = mkSmtpOptions "Commento";
1152 description = "Ympd configuration";
1155 listenPort = mkOption { type = port; description = "Port to listen to"; };
1157 description = "MPD configuration";
1160 password = mkOption { type = str; description = "Password to access MPD host"; };
1161 host = mkOption { type = str; description = "Host for MPD"; };
1162 port = mkOption { type = port; description = "Port to access MPD host"; };
1170 description = "Yourls configuration";
1173 mysql = mkMysqlOptions "Yourls" {};
1174 ldap = mkLdapOptions "Yourls" {};
1175 cookieKey = mkOption { type = str; description = "Cookie key"; };
1182 serverSpecific = mkOption { type = attrsOf unspecified; description = "Server specific configuration"; };
1183 websites = mkOption {
1184 description = "Websites configurations";
1188 description = "Immae configuration by environment";
1192 description = "Temp configuration";
1195 ldap = mkLdapOptions "Immae temp" {
1196 filter = mkOption { type = str; description = "Filter for user access"; };
1204 isabelle = mkOption {
1205 description = "Isabelle configurations by environment";
1208 atenSubmodule = mkOption {
1209 description = "environment configuration";
1212 environment = mkOption { type = str; description = "Symfony environment"; };
1213 secret = mkOption { type = str; description = "Symfony App secret"; };
1214 postgresql = mkPsqlOptions "Aten";
1221 aten_production = atenSubmodule;
1222 aten_integration = atenSubmodule;
1223 iridologie = mkOption {
1224 description = "environment configuration";
1227 environment = mkOption { type = str; description = "SPIP environment"; };
1228 mysql = mkMysqlOptions "Iridologie" {};
1229 ldap = mkLdapOptions "Iridologie" {};
1237 description = "Chloe configurations by environment";
1240 chloeSubmodule = mkOption {
1241 description = "environment configuration";
1244 environment = mkOption { type = str; description = "SPIP environment"; };
1245 mysql = mkMysqlOptions "Chloe" {};
1246 ldap = mkLdapOptions "Chloe" {};
1253 production = chloeSubmodule;
1254 integration = chloeSubmodule;
1258 connexionswing = mkOption {
1259 description = "Connexionswing configurations by environment";
1262 csSubmodule = mkOption {
1263 description = "environment configuration";
1266 environment = mkOption { type = str; description = "Symfony environment"; };
1267 mysql = mkMysqlOptions "Connexionswing" {};
1268 secret = mkOption { type = str; description = "Symfony App secret"; };
1269 email = mkOption { type = str; description = "Symfony email notification"; };
1276 production = csSubmodule;
1277 integration = csSubmodule;
1282 description = "Naturaloutil configuration";
1285 mysql = mkMysqlOptions "Naturaloutil" {};
1286 server_admin = mkOption { type = str; description = "Server admin e-mail"; };
1290 telio_tortay = mkOption {
1291 description = "Telio Tortay configuration";
1294 server_admin = mkOption { type = str; description = "Server admin e-mail"; };
1298 ludivine = mkOption {
1299 description = "Ludivinecassal configurations by environment";
1302 lcSubmodule = mkOption {
1303 description = "environment configuration";
1306 environment = mkOption { type = str; description = "Symfony environment"; };
1307 mysql = mkMysqlOptions "LudivineCassal" {};
1308 ldap = mkLdapOptions "LudivineCassal" {};
1309 secret = mkOption { type = str; description = "Symfony App secret"; };
1316 production = lcSubmodule;
1317 integration = lcSubmodule;
1322 description = "Emilia configuration";
1325 postgresql = mkPsqlOptions "Emilia";
1329 florian = mkOption {
1330 description = "Florian configuration";
1333 server_admin = mkOption { type = str; description = "Server admin e-mail"; };
1337 nassime = mkOption {
1338 description = "Nassime configuration";
1341 server_admin = mkOption { type = str; description = "Server admin e-mail"; };
1345 piedsjaloux = mkOption {
1346 description = "Piedsjaloux configurations by environment";
1349 pjSubmodule = mkOption {
1350 description = "environment configuration";
1353 environment = mkOption { type = str; description = "Symfony environment"; };
1354 mysql = mkMysqlOptions "Piedsjaloux" {};
1355 secret = mkOption { type = str; description = "Symfony App secret"; };
1362 production = pjSubmodule;
1363 integration = pjSubmodule;
1368 description = "Europe Richie configurations by environment";
1371 mysql = mkMysqlOptions "Richie" {};
1372 smtp_mailer = mkOption {
1373 description = "SMTP mailer configuration";
1376 user = mkOption { type = str; description = "Username"; };
1377 password = mkOption { type = str; description = "Password"; };
1384 caldance = mkOption {
1385 description = "Caldance configurations by environment";
1388 integration = mkOption {
1389 description = "environment configuration";
1392 password = mkOption { type = str; description = "Password file content for basic auth"; };
1399 tellesflorian = mkOption {
1400 description = "Tellesflorian configurations by environment";
1403 tfSubmodule = mkOption {
1404 description = "environment configuration";
1407 environment = mkOption { type = str; description = "Symfony environment"; };
1408 mysql = mkMysqlOptions "Tellesflorian" {};
1409 secret = mkOption { type = str; description = "Symfony App secret"; };
1410 invite_passwords = mkOption { type = str; description = "Password basic auth"; };
1417 integration = tfSubmodule;
1425 privateFiles = mkOption {
1428 Path to secret files to make available during build
1432 options.hostEnv = mkOption {
1435 default = config.myEnv.servers."${name}";
1436 description = "Host environment";