+ services.websites.tools.vhostConfs.outils = {
+ certName = "eldiron";
+ addToCerts = true;
+ hosts = [ "outils.immae.eu" ];
+ root = null;
+ extraConfig = [
+ ''
+ RedirectMatch 301 ^/mediagoblin(.*)$ https://mgoblin.immae.eu$1
+
+ RedirectMatch 301 ^/ether(.*)$ https://ether.immae.eu$1
+
+ RedirectMatch 301 ^/nextcloud(.*)$ https://cloud.immae.eu$1
+ RedirectMatch 301 ^/owncloud(.*)$ https://cloud.immae.eu$1
+
+ RedirectMatch 301 ^/carddavmate(.*)$ https://dav.immae.eu/infcloud$1
+ RedirectMatch 301 ^/caldavzap(.*)$ https://dav.immae.eu/infcloud$1
+ RedirectMatch 301 ^/caldav.php(.*)$ https://dav.immae.eu/caldav.php$1
+ RedirectMatch 301 ^/davical(.*)$ https://dav.immae.eu/davical$1
+
+ RedirectMatch 301 ^/taskweb(.*)$ https://task.immae.eu/taskweb$1
+
+ RedirectMatch 301 ^/(.*)$ https://tools.immae.eu/$1
+ ''
+ ];
+ };
+
+ systemd.services = {
+ phpfpm-dokuwiki = {
+ after = lib.mkAfter dokuwiki.phpFpm.serviceDeps;
+ wants = dokuwiki.phpFpm.serviceDeps;
+ };
+ phpfpm-kanboard = {
+ after = lib.mkAfter kanboard.phpFpm.serviceDeps;
+ wants = kanboard.phpFpm.serviceDeps;
+ };
+ phpfpm-ldap = {
+ after = lib.mkAfter ldap.phpFpm.serviceDeps;
+ wants = ldap.phpFpm.serviceDeps;
+ };
+ phpfpm-rainloop = {
+ after = lib.mkAfter rainloop.phpFpm.serviceDeps;
+ wants = rainloop.phpFpm.serviceDeps;
+ };
+ phpfpm-roundcubemail = {
+ after = lib.mkAfter roundcubemail.phpFpm.serviceDeps;
+ wants = roundcubemail.phpFpm.serviceDeps;
+ };
+ phpfpm-shaarli = {
+ after = lib.mkAfter shaarli.phpFpm.serviceDeps;
+ wants = shaarli.phpFpm.serviceDeps;
+ };
+ phpfpm-ttrss = {
+ after = lib.mkAfter ttrss.phpFpm.serviceDeps;
+ wants = ttrss.phpFpm.serviceDeps;
+ };
+ phpfpm-wallabag = {
+ after = lib.mkAfter wallabag.phpFpm.serviceDeps;
+ wants = wallabag.phpFpm.serviceDeps;
+ preStart = lib.mkAfter wallabag.phpFpm.preStart;
+ };
+ phpfpm-yourls = {
+ after = lib.mkAfter yourls.phpFpm.serviceDeps;
+ wants = yourls.phpFpm.serviceDeps;
+ };
+ ympd = {
+ description = "Standalone MPD Web GUI written in C";
+ wantedBy = [ "multi-user.target" ];
+ script = ''
+ export MPD_PASSWORD=$(cat /var/secrets/mpd)
+ ${pkgs.ympd}/bin/ympd --host ${ympd.config.host} --port ${toString ympd.config.port} --webport ${ympd.config.webPort} --user nobody
+ '';
+ };
+ tt-rss = {
+ description = "Tiny Tiny RSS feeds update daemon";
+ serviceConfig = {
+ User = "wwwrun";
+ ExecStart = "${pkgs.php}/bin/php ${ttrss.webRoot}/update.php --daemon";
+ StandardOutput = "syslog";
+ StandardError = "syslog";
+ PermissionsStartOnly = true;
+ };
+
+ wantedBy = [ "multi-user.target" ];
+ requires = ["postgresql.service"];
+ after = ["network.target" "postgresql.service"];
+ };
+ };
+
+ services.phpfpm.pools.roundcubemail = {
+ listen = roundcubemail.phpFpm.socket;
+ extraConfig = roundcubemail.phpFpm.pool;
+ phpOptions = config.services.phpfpm.phpOptions + roundcubemail.phpFpm.phpConfig;
+ };
+
+ services.phpfpm.pools.devtools = {
+ listen = "/var/run/phpfpm/devtools.sock";
+ extraConfig = ''
+ user = wwwrun
+ group = wwwrun
+ listen.owner = wwwrun
+ listen.group = wwwrun
+ pm = dynamic
+ pm.max_children = 60
+ pm.start_servers = 2
+ pm.min_spare_servers = 1
+ pm.max_spare_servers = 10
+
+ php_admin_value[open_basedir] = "/run/wrappers/bin/sendmail:/var/lib/ftp/devtools.immae.eu:/tmp"
+ '';
+ phpOptions = config.services.phpfpm.phpOptions + ''
+ extension=${pkgs.phpPackages.redis}/lib/php/extensions/redis.so
+ extension=${pkgs.phpPackages.apcu}/lib/php/extensions/apcu.so
+ zend_extension=${pkgs.php}/lib/php/extensions/opcache.so
+ '';
+ };
+
+ services.phpfpm.poolConfigs = {