{ config, lib, pkgs, ... }: let poolName = "roundcube_pool"; roundcube = (pkgs.callPackage ./pkg-roundcube.nix { conf = pkgs.writeText "roundcube-config.inc.php" '' /dev/null | ${pkgs.coreutils}/bin/base64 > "${config.variables.roundcubeDataDir}/des_key" chown -c "${config.variables.roundcubeUser}":root "${config.variables.roundcubeDataDir}/des_key" chmod -c 400 "${config.variables.roundcubeDataDir}/des_key" fi if [ -s "${config.variables.roundcubeDataDir}/roundcube.sqlite" ]; then # Just go ahead and remove the sessions on a boot ${pkgs.sqlite}/bin/sqlite3 "${config.variables.roundcubeDataDir}/roundcube.sqlite" "DELETE FROM session;" fi ''; }; services.phpfpm.pools."${poolName}" = { listen = config.variables.roundcubePhpfpmHostPort; extraConfig = '' user = ${config.variables.roundcubeUser} pm = dynamic pm.max_children = 75 pm.min_spare_servers = 5 pm.max_spare_servers = 20 pm.max_requests = 10 catch_workers_output = 1 ''; }; users.extraUsers."${config.variables.roundcubeUser}" = { }; }