phpfpm service: restructured pool configuration

From @fpletz: Keep poolConfigs option for backwards-compatibility.

The original commit 6b3f5b5a421fe3422e9ef63a3fd690178c36163e was previously
reverted by c7860cae1a4b54f4b54339142472f00f861fa055 but the issues were
resolved.

Changed files
+56 -3
nixos
modules
services
web-servers
+1 -1
nixos/modules/module-list.nix
···
./services/web-servers/lighttpd/gitweb.nix
./services/web-servers/lighttpd/inginious.nix
./services/web-servers/nginx/default.nix
-
./services/web-servers/phpfpm.nix
+
./services/web-servers/phpfpm/default.nix
./services/web-servers/shellinabox.nix
./services/web-servers/tomcat.nix
./services/web-servers/uwsgi.nix
+20 -2
nixos/modules/services/web-servers/phpfpm.nix nixos/modules/services/web-servers/phpfpm/default.nix
···
pidFile = "${stateDir}/phpfpm.pid";
+
mkPool = n: p: ''
+
[${n}]
+
listen = ${p.listen}
+
${p.extraConfig}
+
'';
+
cfgFile = pkgs.writeText "phpfpm.conf" ''
[global]
pid = ${pidFile}
error_log = syslog
daemonize = yes
${cfg.extraConfig}
+
+
${concatStringsSep "\n" (mapAttrsToList mkPool cfg.pools)}
${concatStringsSep "\n" (mapAttrsToList (n: v: "[${n}]\n${v}") cfg.poolConfigs)}
'';
···
};
poolConfigs = mkOption {
-
type = types.attrsOf types.lines;
default = {};
+
type = types.attrsOf types.lines;
example = literalExample ''
{ mypool = '''
listen = /run/phpfpm/mypool
···
the phpfpm service is disabled.
'';
};
+
+
pools = mkOption {
+
type = types.attrsOf (types.submodule (import ./pool-options.nix {
+
inherit lib;
+
}));
+
default = {};
+
description = ''
+
If no pools are defined, the phpfpm service is disabled.
+
'';
+
};
};
};
-
config = mkIf (cfg.poolConfigs != {}) {
+
config = mkIf (cfg.pools != {}) {
systemd.services.phpfpm = {
wantedBy = [ "multi-user.target" ];
+35
nixos/modules/services/web-servers/phpfpm/pool-options.nix
···
+
{ lib }:
+
+
with lib; {
+
+
options = {
+
+
listen = mkOption {
+
type = types.str;
+
example = "/path/to/unix/socket";
+
description = ''
+
The address on which to accept FastCGI requests.
+
'';
+
};
+
+
extraConfig = mkOption {
+
type = types.lines;
+
example = ''
+
user = nobody
+
pm = dynamic
+
pm.max_children = 75
+
pm.start_servers = 10
+
pm.min_spare_servers = 5
+
pm.max_spare_servers = 20
+
pm.max_requests = 500
+
'';
+
+
description = ''
+
Extra lines that go into the pool configuration.
+
See the documentation on <literal>php-fpm.conf</literal> for
+
details on configuration directives.
+
'';
+
};
+
};
+
}
+