diff options
Diffstat (limited to 'nixos/modules/services/web-servers/phpfpm/default.nix')
-rw-r--r-- | nixos/modules/services/web-servers/phpfpm/default.nix | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/nixos/modules/services/web-servers/phpfpm/default.nix b/nixos/modules/services/web-servers/phpfpm/default.nix index e1f4ff5db7f2..152c89a2caec 100644 --- a/nixos/modules/services/web-servers/phpfpm/default.nix +++ b/nixos/modules/services/web-servers/phpfpm/default.nix @@ -8,21 +8,31 @@ let stateDir = "/run/phpfpm"; - poolConfigs = cfg.poolConfigs // mapAttrs mkPool cfg.pools; + poolConfigs = + (mapAttrs mapPoolConfig cfg.poolConfigs) // + (mapAttrs mapPool cfg.pools); - mkPool = n: p: '' - listen = ${p.listen} - ${p.extraConfig} - ''; + mapPoolConfig = n: p: { + phpPackage = cfg.phpPackage; + config = p; + }; + + mapPool = n: p: { + phpPackage = p.phpPackage; + config = '' + listen = ${p.listen} + ${p.extraConfig} + ''; + }; - fpmCfgFile = pool: poolConfig: pkgs.writeText "phpfpm-${pool}.conf" '' + fpmCfgFile = pool: conf: pkgs.writeText "phpfpm-${pool}.conf" '' [global] error_log = syslog daemonize = no ${cfg.extraConfig} [${pool}] - ${poolConfig} + ${conf} ''; phpIni = pkgs.runCommand "php.ini" { @@ -97,13 +107,14 @@ in { pools = mkOption { type = types.attrsOf (types.submodule (import ./pool-options.nix { - inherit lib; + inherit lib config; })); default = {}; example = literalExample '' { mypool = { listen = "/path/to/unix/socket"; + phpPackage = pkgs.php; extraConfig = ''' user = nobody pm = dynamic @@ -144,7 +155,7 @@ in { mkdir -p ${stateDir} ''; serviceConfig = let - cfgFile = fpmCfgFile pool poolConfig; + cfgFile = fpmCfgFile pool poolConfig.config; in { Slice = "phpfpm.slice"; PrivateDevices = true; @@ -153,7 +164,7 @@ in { # XXX: We need AF_NETLINK to make the sendmail SUID binary from postfix work RestrictAddressFamilies = "AF_UNIX AF_INET AF_INET6 AF_NETLINK"; Type = "notify"; - ExecStart = "${cfg.phpPackage}/bin/php-fpm -y ${cfgFile} -c ${phpIni}"; + ExecStart = "${poolConfig.phpPackage}/bin/php-fpm -y ${cfgFile} -c ${phpIni}"; ExecReload = "${pkgs.coreutils}/bin/kill -USR2 $MAINPID"; }; } |