]> git.immae.eu Git - perso/Immae/Config/Nix.git/blame - modules/private/websites/tools/tools/default.nix
Upgrade nixos packages
[perso/Immae/Config/Nix.git] / modules / private / websites / tools / tools / default.nix
CommitLineData
8a964143 1{ lib, pkgs, config, myconfig, ... }:
10889174 2let
4288c2f2
IB
3 adminer = pkgs.callPackage ./adminer.nix {
4 inherit (pkgs.webapps) adminer;
5 };
6 ympd = pkgs.callPackage ./ympd.nix {
7 env = myconfig.env.tools.ympd;
8 };
9 ttrss = pkgs.callPackage ./ttrss.nix {
10 inherit (pkgs.webapps) ttrss ttrss-plugins;
11 env = myconfig.env.tools.ttrss;
12 };
13 roundcubemail = pkgs.callPackage ./roundcubemail.nix {
14 inherit (pkgs.webapps) roundcubemail roundcubemail-plugins roundcubemail-skins;
15 env = myconfig.env.tools.roundcubemail;
16 };
17 rainloop = pkgs.callPackage ./rainloop.nix {};
18 kanboard = pkgs.callPackage ./kanboard.nix {
19 env = myconfig.env.tools.kanboard;
20 };
21 wallabag = pkgs.callPackage ./wallabag.nix {
22 inherit (pkgs.webapps) wallabag;
23 env = myconfig.env.tools.wallabag;
24 };
25 yourls = pkgs.callPackage ./yourls.nix {
26 inherit (pkgs.webapps) yourls yourls-plugins;
27 env = myconfig.env.tools.yourls;
28 };
29 rompr = pkgs.callPackage ./rompr.nix {
30 inherit (pkgs.webapps) rompr;
31 env = myconfig.env.tools.rompr;
32 };
33 shaarli = pkgs.callPackage ./shaarli.nix {
34 env = myconfig.env.tools.shaarli;
35 };
36 dokuwiki = pkgs.callPackage ./dokuwiki.nix {
37 inherit (pkgs.webapps) dokuwiki dokuwiki-plugins;
38 };
39 ldap = pkgs.callPackage ./ldap.nix {
40 inherit (pkgs.webapps) phpldapadmin;
41 env = myconfig.env.tools.phpldapadmin;
42 };
10889174 43
4288c2f2 44 cfg = config.myServices.websites.tools.tools;
10889174 45in {
4288c2f2 46 options.myServices.websites.tools.tools = {
10889174
IB
47 enable = lib.mkEnableOption "enable tools website";
48 };
49
50 config = lib.mkIf cfg.enable {
1a718805 51 secrets.keys =
a840a21c 52 kanboard.keys
8db8e666
IB
53 ++ ldap.keys
54 ++ roundcubemail.keys
55 ++ shaarli.keys
56 ++ ttrss.keys
57 ++ wallabag.keys
58 ++ yourls.keys;
98163486 59
daf64e3f 60 services.websites.integration.modules =
46f30ecc 61 rainloop.apache.modules;
10889174 62
daf64e3f 63 services.websites.tools.modules =
1922655a
IB
64 [ "proxy_fcgi" ]
65 ++ adminer.apache.modules
10889174
IB
66 ++ ympd.apache.modules
67 ++ ttrss.apache.modules
aebd817b 68 ++ roundcubemail.apache.modules
133ebaee 69 ++ wallabag.apache.modules
bfe3c9c9 70 ++ yourls.apache.modules
95b20e17 71 ++ rompr.apache.modules
b892dcbe 72 ++ shaarli.apache.modules
f80772dc 73 ++ dokuwiki.apache.modules
d4ed0eff
IB
74 ++ ldap.apache.modules
75 ++ kanboard.apache.modules;
10889174 76
daf64e3f 77 services.websites.integration.vhostConfs.devtools = {
46f30ecc 78 certName = "eldiron";
7df420c2 79 addToCerts = true;
46f30ecc 80 hosts = ["devtools.immae.eu" ];
0aae0181 81 root = "/var/lib/ftp/devtools.immae.eu";
46f30ecc 82 extraConfig = [
0aae0181
IB
83 ''
84 <Directory "/var/lib/ftp/devtools.immae.eu">
85 DirectoryIndex index.php index.htm index.html
86 AllowOverride all
87 Require all granted
88 <FilesMatch "\.php$">
89 SetHandler "proxy:unix:/var/run/phpfpm/devtools.sock|fcgi://localhost"
90 </FilesMatch>
91 </Directory>
92 ''
46f30ecc
IB
93 rainloop.apache.vhostConf
94 ];
95 };
96
daf64e3f 97 services.websites.tools.vhostConfs.tools = {
10889174 98 certName = "eldiron";
7df420c2 99 addToCerts = true;
10889174 100 hosts = ["tools.immae.eu" ];
1922655a 101 root = "/var/lib/ftp/tools.immae.eu";
10889174 102 extraConfig = [
1922655a
IB
103 ''
104 <Directory "/var/lib/ftp/tools.immae.eu">
0eaac6ba 105 DirectoryIndex index.php index.htm index.html
1922655a
IB
106 AllowOverride all
107 Require all granted
108 <FilesMatch "\.php$">
109 SetHandler "proxy:unix:/var/run/phpfpm/tools.sock|fcgi://localhost"
110 </FilesMatch>
111 </Directory>
112 ''
10889174
IB
113 adminer.apache.vhostConf
114 ympd.apache.vhostConf
115 ttrss.apache.vhostConf
116 roundcubemail.apache.vhostConf
aebd817b 117 wallabag.apache.vhostConf
133ebaee 118 yourls.apache.vhostConf
bfe3c9c9 119 rompr.apache.vhostConf
95b20e17 120 shaarli.apache.vhostConf
b892dcbe 121 dokuwiki.apache.vhostConf
f80772dc 122 ldap.apache.vhostConf
d4ed0eff 123 kanboard.apache.vhostConf
10889174
IB
124 ];
125 };
126
daf64e3f 127 services.websites.tools.vhostConfs.outils = {
7df420c2
IB
128 certName = "eldiron";
129 addToCerts = true;
130 hosts = [ "outils.immae.eu" ];
131 root = null;
70606070
IB
132 extraConfig = [
133 ''
134 RedirectMatch 301 ^/mediagoblin(.*)$ https://mgoblin.immae.eu$1
135
136 RedirectMatch 301 ^/ether(.*)$ https://ether.immae.eu$1
137
138 RedirectMatch 301 ^/nextcloud(.*)$ https://cloud.immae.eu$1
139 RedirectMatch 301 ^/owncloud(.*)$ https://cloud.immae.eu$1
140
141 RedirectMatch 301 ^/carddavmate(.*)$ https://dav.immae.eu/infcloud$1
142 RedirectMatch 301 ^/caldavzap(.*)$ https://dav.immae.eu/infcloud$1
143 RedirectMatch 301 ^/caldav.php(.*)$ https://dav.immae.eu/caldav.php$1
144 RedirectMatch 301 ^/davical(.*)$ https://dav.immae.eu/davical$1
145
146 RedirectMatch 301 ^/taskweb(.*)$ https://task.immae.eu/taskweb$1
147
148 RedirectMatch 301 ^/(.*)$ https://tools.immae.eu/$1
149 ''
150 ];
151 };
152
f40f5b23
IB
153 systemd.services = {
154 phpfpm-dokuwiki = {
155 after = lib.mkAfter dokuwiki.phpFpm.serviceDeps;
156 wants = dokuwiki.phpFpm.serviceDeps;
157 };
158 phpfpm-kanboard = {
159 after = lib.mkAfter kanboard.phpFpm.serviceDeps;
160 wants = kanboard.phpFpm.serviceDeps;
161 };
162 phpfpm-ldap = {
163 after = lib.mkAfter ldap.phpFpm.serviceDeps;
164 wants = ldap.phpFpm.serviceDeps;
165 };
166 phpfpm-rainloop = {
167 after = lib.mkAfter rainloop.phpFpm.serviceDeps;
168 wants = rainloop.phpFpm.serviceDeps;
169 };
170 phpfpm-roundcubemail = {
171 after = lib.mkAfter roundcubemail.phpFpm.serviceDeps;
172 wants = roundcubemail.phpFpm.serviceDeps;
173 };
174 phpfpm-shaarli = {
175 after = lib.mkAfter shaarli.phpFpm.serviceDeps;
176 wants = shaarli.phpFpm.serviceDeps;
177 };
178 phpfpm-ttrss = {
179 after = lib.mkAfter ttrss.phpFpm.serviceDeps;
180 wants = ttrss.phpFpm.serviceDeps;
181 };
182 phpfpm-wallabag = {
183 after = lib.mkAfter wallabag.phpFpm.serviceDeps;
184 wants = wallabag.phpFpm.serviceDeps;
185 preStart = lib.mkAfter wallabag.phpFpm.preStart;
186 };
187 phpfpm-yourls = {
188 after = lib.mkAfter yourls.phpFpm.serviceDeps;
189 wants = yourls.phpFpm.serviceDeps;
190 };
191 ympd = {
192 description = "Standalone MPD Web GUI written in C";
193 wantedBy = [ "multi-user.target" ];
194 script = ''
195 export MPD_PASSWORD=$(cat /var/secrets/mpd)
196 ${pkgs.ympd}/bin/ympd --host ${ympd.config.host} --port ${toString ympd.config.port} --webport ${ympd.config.webPort} --user nobody
197 '';
198 };
199 tt-rss = {
200 description = "Tiny Tiny RSS feeds update daemon";
201 serviceConfig = {
202 User = "wwwrun";
203 ExecStart = "${pkgs.php}/bin/php ${ttrss.webRoot}/update.php --daemon";
204 StandardOutput = "syslog";
205 StandardError = "syslog";
206 PermissionsStartOnly = true;
207 };
208
209 wantedBy = [ "multi-user.target" ];
210 requires = ["postgresql.service"];
211 after = ["network.target" "postgresql.service"];
212 };
213 };
214
215 services.phpfpm.pools.roundcubemail = {
216 listen = roundcubemail.phpFpm.socket;
217 extraConfig = roundcubemail.phpFpm.pool;
218 phpOptions = config.services.phpfpm.phpOptions + roundcubemail.phpFpm.phpConfig;
a840a21c
IB
219 };
220
f40f5b23
IB
221 services.phpfpm.pools.devtools = {
222 listen = "/var/run/phpfpm/devtools.sock";
223 extraConfig = ''
224 user = wwwrun
225 group = wwwrun
226 listen.owner = wwwrun
227 listen.group = wwwrun
228 pm = dynamic
229 pm.max_children = 60
230 pm.start_servers = 2
231 pm.min_spare_servers = 1
232 pm.max_spare_servers = 10
233
234 php_admin_value[open_basedir] = "/run/wrappers/bin/sendmail:/var/lib/ftp/devtools.immae.eu:/tmp"
235 '';
236 phpOptions = config.services.phpfpm.phpOptions + ''
0aae0181
IB
237 extension=${pkgs.phpPackages.redis}/lib/php/extensions/redis.so
238 extension=${pkgs.phpPackages.apcu}/lib/php/extensions/apcu.so
239 zend_extension=${pkgs.php}/lib/php/extensions/opcache.so
240 '';
8eded9ec 241 };
f40f5b23
IB
242
243 services.phpfpm.poolConfigs = {
10889174
IB
244 adminer = adminer.phpFpm.pool;
245 ttrss = ttrss.phpFpm.pool;
aebd817b 246 wallabag = wallabag.phpFpm.pool;
133ebaee 247 yourls = yourls.phpFpm.pool;
bfe3c9c9 248 rompr = rompr.phpFpm.pool;
95b20e17 249 shaarli = shaarli.phpFpm.pool;
b892dcbe 250 dokuwiki = dokuwiki.phpFpm.pool;
f80772dc 251 ldap = ldap.phpFpm.pool;
46f30ecc 252 rainloop = rainloop.phpFpm.pool;
d4ed0eff 253 kanboard = kanboard.phpFpm.pool;
1922655a
IB
254 tools = ''
255 listen = /var/run/phpfpm/tools.sock
256 user = wwwrun
257 group = wwwrun
258 listen.owner = wwwrun
259 listen.group = wwwrun
260 pm = dynamic
261 pm.max_children = 60
262 pm.start_servers = 2
263 pm.min_spare_servers = 1
264 pm.max_spare_servers = 10
265
266 ; Needed to avoid clashes in browser cookies (same domain)
267 php_value[session.name] = ToolsPHPSESSID
268 php_admin_value[open_basedir] = "/run/wrappers/bin/sendmail:/var/lib/ftp/tools.immae.eu:/tmp"
269 '';
10889174
IB
270 };
271
272 system.activationScripts = {
4288c2f2 273 adminer = adminer.activationScript;
10889174
IB
274 ttrss = ttrss.activationScript;
275 roundcubemail = roundcubemail.activationScript;
aebd817b 276 wallabag = wallabag.activationScript;
133ebaee 277 yourls = yourls.activationScript;
bfe3c9c9 278 rompr = rompr.activationScript;
95b20e17 279 shaarli = shaarli.activationScript;
b892dcbe 280 dokuwiki = dokuwiki.activationScript;
46f30ecc 281 rainloop = rainloop.activationScript;
d4ed0eff 282 kanboard = kanboard.activationScript;
4288c2f2 283 ldap = ldap.activationScript;
10889174
IB
284 };
285
4288c2f2
IB
286 myServices.websites.webappDirs = {
287 _adminer = adminer.webRoot;
288 "${dokuwiki.apache.webappName}" = dokuwiki.webRoot;
289 "${ldap.apache.webappName}" = "${ldap.webRoot}/htdocs";
290 "${rompr.apache.webappName}" = rompr.webRoot;
291 "${roundcubemail.apache.webappName}" = roundcubemail.webRoot;
292 "${shaarli.apache.webappName}" = shaarli.webRoot;
293 "${ttrss.apache.webappName}" = ttrss.webRoot;
294 "${wallabag.apache.webappName}" = wallabag.webRoot;
295 "${yourls.apache.webappName}" = yourls.webRoot;
296 "${rainloop.apache.webappName}" = rainloop.webRoot;
297 "${kanboard.apache.webappName}" = kanboard.webRoot;
298 };
a95ab089 299
10889174
IB
300 };
301}
302