aboutsummaryrefslogtreecommitdiff
path: root/virtual/modules
diff options
context:
space:
mode:
authorIsmaël Bouya <ismael.bouya@normalesup.org>2019-01-10 01:59:32 +0100
committerIsmaël Bouya <ismael.bouya@normalesup.org>2019-01-10 02:09:39 +0100
commit42429ef0756d9ee41cf0ff0b38210edb3b1637e5 (patch)
tree8b3cce158c98fa0aba89b42ff3ec4bb8984389e8 /virtual/modules
parent86f6924f021869c1fd8e4e2a7930d50f04f921df (diff)
downloadNix-42429ef0756d9ee41cf0ff0b38210edb3b1637e5.tar.gz
Nix-42429ef0756d9ee41cf0ff0b38210edb3b1637e5.tar.zst
Nix-42429ef0756d9ee41cf0ff0b38210edb3b1637e5.zip
Continue moving websites: apache configuration and modules
Diffstat (limited to 'virtual/modules')
-rw-r--r--virtual/modules/databases.nix4
-rw-r--r--virtual/modules/websites.nix115
-rw-r--r--virtual/modules/websites/aten.nix2
-rw-r--r--virtual/modules/websites/chloe.nix2
-rw-r--r--virtual/modules/websites/connexionswing.nix2
-rw-r--r--virtual/modules/websites/ludivine.nix2
-rw-r--r--virtual/modules/websites/piedsjaloux.nix2
7 files changed, 129 insertions, 0 deletions
diff --git a/virtual/modules/databases.nix b/virtual/modules/databases.nix
index 25bd645..9f8e70d 100644
--- a/virtual/modules/databases.nix
+++ b/virtual/modules/databases.nix
@@ -129,5 +129,9 @@ in {
129 maxclients 1024 129 maxclients 1024
130 ''; 130 '';
131 }; 131 };
132 system.activationScripts.redis = ''
133 mkdir -p /run/redis
134 chown redis /run/redis
135 '';
132 }; 136 };
133} 137}
diff --git a/virtual/modules/websites.nix b/virtual/modules/websites.nix
new file mode 100644
index 0000000..62f45d9
--- /dev/null
+++ b/virtual/modules/websites.nix
@@ -0,0 +1,115 @@
1{ lib, pkgs, config, mylibs, ... }:
2let
3 cfg = config.services.myWebsites;
4in
5{
6 imports = [
7 ./websites/chloe.nix
8 ./websites/ludivine.nix
9 ./websites/aten.nix
10 ./websites/piedsjaloux.nix
11 ./websites/connexionswing.nix
12 ];
13
14 options.services.myWebsites = {
15 production = {
16 enable = lib.mkEnableOption "enable websites in production";
17 };
18
19 integration = {
20 enable = lib.mkEnableOption "enable websites in integration";
21 };
22
23 apacheConfig = lib.mkOption {
24 type = lib.types.attrsOf (lib.types.submodule {
25 options = {
26 modules = lib.mkOption {
27 type = lib.types.listOf (lib.types.str);
28 default = [];
29 };
30 extraConfig = lib.mkOption {
31 type = lib.types.nullOr lib.types.lines;
32 default = null;
33 };
34 };
35 });
36 default = {};
37 description = "Extra global config";
38 };
39
40 };
41
42 config = {
43 services.myWebsites.Chloe.production.enable = cfg.production.enable;
44 services.myWebsites.Ludivine.production.enable = cfg.production.enable;
45 services.myWebsites.Aten.production.enable = cfg.production.enable;
46 services.myWebsites.PiedsJaloux.production.enable = cfg.production.enable;
47 services.myWebsites.Connexionswing.production.enable = cfg.production.enable;
48
49 services.myWebsites.Chloe.integration.enable = cfg.integration.enable;
50 services.myWebsites.Ludivine.integration.enable = cfg.integration.enable;
51 services.myWebsites.Aten.integration.enable = cfg.integration.enable;
52 services.myWebsites.PiedsJaloux.integration.enable = cfg.integration.enable;
53 services.myWebsites.Connexionswing.integration.enable = cfg.integration.enable;
54
55 services.myWebsites.apacheConfig = {
56 gzip = {
57 modules = [ "deflate" "filter" ];
58 extraConfig = ''
59 AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript
60 '';
61 };
62 macros = {
63 modules = [ "macro" ];
64 };
65 ldap = {
66 modules = [ "ldap" "authnz_ldap" ];
67 # FIXME: starttls
68 extraConfig = assert mylibs.checkEnv "NIXOPS_HTTP_LDAP_PASSWORD"; ''
69 <IfModule ldap_module>
70 LDAPSharedCacheSize 500000
71 LDAPCacheEntries 1024
72 LDAPCacheTTL 600
73 LDAPOpCacheEntries 1024
74 LDAPOpCacheTTL 600
75 </IfModule>
76
77 <Macro LDAPConnect>
78 <IfModule authnz_ldap_module>
79 AuthLDAPURL ldap://ldap.immae.eu:389/dc=immae,dc=eu STARTTLS
80 AuthLDAPBindDN cn=httpd,ou=services,dc=immae,dc=eu
81 AuthLDAPBindPassword "${builtins.getEnv "NIXOPS_HTTP_LDAP_PASSWORD"}"
82 AuthType Basic
83 AuthName "Authentification requise (Acces LDAP)"
84 AuthBasicProvider ldap
85 </IfModule>
86 </Macro>
87
88 <Macro Stats %{domain}>
89 Alias /awstats /var/lib/goaccess/%{domain}
90 <Directory /var/lib/goaccess/%{domain}>
91 DirectoryIndex index.html
92 AllowOverride None
93 Require all granted
94 </Directory>
95 <Location /awstats>
96 Use LDAPConnect
97 Require ldap-group cn=%{domain},ou=stats,cn=httpd,ou=services,dc=immae,dc=eu
98 </Location>
99 </Macro>
100 '';
101 };
102 http2 = {
103 modules = [ "http2" ];
104 extraConfig = ''
105 Protocols h2 http/1.1
106 '';
107 };
108 customLog = {
109 extraConfig = ''
110 LogFormat "%v:%p %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combinedVhost
111 '';
112 };
113 };
114 };
115}
diff --git a/virtual/modules/websites/aten.nix b/virtual/modules/websites/aten.nix
index 88a9857..1a65389 100644
--- a/virtual/modules/websites/aten.nix
+++ b/virtual/modules/websites/aten.nix
@@ -26,11 +26,13 @@ in {
26 26
27 services.phpfpm.poolConfigs.aten_prod = aten_prod.phpFpm.pool; 27 services.phpfpm.poolConfigs.aten_prod = aten_prod.phpFpm.pool;
28 system.activationScripts.aten_prod = aten_prod.activationScript; 28 system.activationScripts.aten_prod = aten_prod.activationScript;
29 services.myWebsites.apacheConfig.aten_prod.modules = aten_prod.apache.modules;
29 }) 30 })
30 (lib.mkIf cfg.integration.enable { 31 (lib.mkIf cfg.integration.enable {
31 security.acme.certs."eldiron".extraDomains."dev.aten.pro" = null; 32 security.acme.certs."eldiron".extraDomains."dev.aten.pro" = null;
32 services.phpfpm.poolConfigs.aten_dev = aten_dev.phpFpm.pool; 33 services.phpfpm.poolConfigs.aten_dev = aten_dev.phpFpm.pool;
33 system.activationScripts.aten_dev = aten_dev.activationScript; 34 system.activationScripts.aten_dev = aten_dev.activationScript;
35 services.myWebsites.apacheConfig.aten_dev.modules = aten_dev.apache.modules;
34 }) 36 })
35 ]; 37 ];
36} 38}
diff --git a/virtual/modules/websites/chloe.nix b/virtual/modules/websites/chloe.nix
index 9b5c5ca..d54c42d 100644
--- a/virtual/modules/websites/chloe.nix
+++ b/virtual/modules/websites/chloe.nix
@@ -26,11 +26,13 @@ in {
26 26
27 services.phpfpm.poolConfigs.chloe_prod = chloe_prod.phpFpm.pool; 27 services.phpfpm.poolConfigs.chloe_prod = chloe_prod.phpFpm.pool;
28 system.activationScripts.chloe_prod = chloe_prod.activationScript; 28 system.activationScripts.chloe_prod = chloe_prod.activationScript;
29 services.myWebsites.apacheConfig.chloe_prod.modules = chloe_prod.apache.modules;
29 }) 30 })
30 (lib.mkIf cfg.integration.enable { 31 (lib.mkIf cfg.integration.enable {
31 security.acme.certs."eldiron".extraDomains."chloe.immae.eu" = null; 32 security.acme.certs."eldiron".extraDomains."chloe.immae.eu" = null;
32 services.phpfpm.poolConfigs.chloe_dev = chloe_dev.phpFpm.pool; 33 services.phpfpm.poolConfigs.chloe_dev = chloe_dev.phpFpm.pool;
33 system.activationScripts.chloe_dev = chloe_dev.activationScript; 34 system.activationScripts.chloe_dev = chloe_dev.activationScript;
35 services.myWebsites.apacheConfig.chloe_dev.modules = chloe_dev.apache.modules;
34 }) 36 })
35 ]; 37 ];
36} 38}
diff --git a/virtual/modules/websites/connexionswing.nix b/virtual/modules/websites/connexionswing.nix
index e4b9c0e..8bf63a8 100644
--- a/virtual/modules/websites/connexionswing.nix
+++ b/virtual/modules/websites/connexionswing.nix
@@ -28,12 +28,14 @@ in {
28 28
29 services.phpfpm.poolConfigs.connexionswing_prod = connexionswing_prod.phpFpm.pool; 29 services.phpfpm.poolConfigs.connexionswing_prod = connexionswing_prod.phpFpm.pool;
30 system.activationScripts.connexionswing_prod = connexionswing_prod.activationScript; 30 system.activationScripts.connexionswing_prod = connexionswing_prod.activationScript;
31 services.myWebsites.apacheConfig.connexionswing_prod.modules = connexionswing_prod.apache.modules;
31 }) 32 })
32 (lib.mkIf cfg.integration.enable { 33 (lib.mkIf cfg.integration.enable {
33 security.acme.certs."eldiron".extraDomains."sandetludo.immae.eu" = null; 34 security.acme.certs."eldiron".extraDomains."sandetludo.immae.eu" = null;
34 security.acme.certs."eldiron".extraDomains."connexionswing.immae.eu" = null; 35 security.acme.certs."eldiron".extraDomains."connexionswing.immae.eu" = null;
35 services.phpfpm.poolConfigs.connexionswing_dev = connexionswing_dev.phpFpm.pool; 36 services.phpfpm.poolConfigs.connexionswing_dev = connexionswing_dev.phpFpm.pool;
36 system.activationScripts.connexionswing_dev = connexionswing_dev.activationScript; 37 system.activationScripts.connexionswing_dev = connexionswing_dev.activationScript;
38 services.myWebsites.apacheConfig.connexionswing_dev.modules = connexionswing_dev.apache.modules;
37 }) 39 })
38 ]; 40 ];
39} 41}
diff --git a/virtual/modules/websites/ludivine.nix b/virtual/modules/websites/ludivine.nix
index 9d6b693..f06e41a 100644
--- a/virtual/modules/websites/ludivine.nix
+++ b/virtual/modules/websites/ludivine.nix
@@ -26,12 +26,14 @@ in {
26 26
27 services.phpfpm.poolConfigs.ludivinecassal_prod = ludivinecassal_prod.phpFpm.pool; 27 services.phpfpm.poolConfigs.ludivinecassal_prod = ludivinecassal_prod.phpFpm.pool;
28 system.activationScripts.ludivinecassal_prod = ludivinecassal_prod.activationScript; 28 system.activationScripts.ludivinecassal_prod = ludivinecassal_prod.activationScript;
29 services.myWebsites.apacheConfig.ludivinecassal_prod.modules = ludivinecassal_prod.apache.modules;
29 }) 30 })
30 (lib.mkIf cfg.integration.enable { 31 (lib.mkIf cfg.integration.enable {
31 security.acme.certs."eldiron".extraDomains."ludivine.immae.eu" = null; 32 security.acme.certs."eldiron".extraDomains."ludivine.immae.eu" = null;
32 33
33 services.phpfpm.poolConfigs.ludivinecassal_dev = ludivinecassal_dev.phpFpm.pool; 34 services.phpfpm.poolConfigs.ludivinecassal_dev = ludivinecassal_dev.phpFpm.pool;
34 system.activationScripts.ludivinecassal_dev = ludivinecassal_dev.activationScript; 35 system.activationScripts.ludivinecassal_dev = ludivinecassal_dev.activationScript;
36 services.myWebsites.apacheConfig.ludivinecassal_dev.modules = ludivinecassal_dev.apache.modules;
35 }) 37 })
36 ]; 38 ];
37} 39}
diff --git a/virtual/modules/websites/piedsjaloux.nix b/virtual/modules/websites/piedsjaloux.nix
index f2b17ad..285fd18 100644
--- a/virtual/modules/websites/piedsjaloux.nix
+++ b/virtual/modules/websites/piedsjaloux.nix
@@ -26,11 +26,13 @@ in {
26 26
27 services.phpfpm.poolConfigs.piedsjaloux_prod = piedsjaloux_prod.phpFpm.pool; 27 services.phpfpm.poolConfigs.piedsjaloux_prod = piedsjaloux_prod.phpFpm.pool;
28 system.activationScripts.piedsjaloux_prod = piedsjaloux_prod.activationScript; 28 system.activationScripts.piedsjaloux_prod = piedsjaloux_prod.activationScript;
29 services.myWebsites.apacheConfig.piedsjaloux_prod.modules = piedsjaloux_prod.apache.modules;
29 }) 30 })
30 (lib.mkIf cfg.integration.enable { 31 (lib.mkIf cfg.integration.enable {
31 security.acme.certs."eldiron".extraDomains."piedsjaloux.immae.eu" = null; 32 security.acme.certs."eldiron".extraDomains."piedsjaloux.immae.eu" = null;
32 services.phpfpm.poolConfigs.piedsjaloux_dev = piedsjaloux_dev.phpFpm.pool; 33 services.phpfpm.poolConfigs.piedsjaloux_dev = piedsjaloux_dev.phpFpm.pool;
33 system.activationScripts.piedsjaloux_dev = piedsjaloux_dev.activationScript; 34 system.activationScripts.piedsjaloux_dev = piedsjaloux_dev.activationScript;
35 services.myWebsites.apacheConfig.piedsjaloux_dev.modules = piedsjaloux_dev.apache.modules;
34 }) 36 })
35 ]; 37 ];
36} 38}