-{ lib, config, ... }:
+{ lib, config, pkgs, ... }:
with lib;
let
cfg = config.services.phpApplication;
description = "Name of the socket to listen to. Defaults to app name if null";
};
phpPool = mkOption {
- type = lines;
- default = "";
+ type = attrsOf str;
+ default = {};
description = "Pool configuration to append";
};
+ phpEnv = mkOption {
+ type = attrsOf str;
+ default = {};
+ description = "Pool environment to append";
+ };
+ phpPackage = mkOption {
+ type = attrsOf str;
+ default = pkgs.php;
+ description = "Php package to use";
+ };
phpOptions = mkOption {
type = lines;
default = "";
services.phpApplication.phpListenPaths = mkOption {
type = attrsOf path;
default = attrsets.mapAttrs' (name: icfg: attrsets.nameValuePair
- name "/run/phpfpm/${if icfg.phpListen == null then name else icfg.phpListen}.sock"
+ name config.services.phpfpm.pools."${name}".socket
) cfg.apps;
readOnly = true;
description = ''
services.phpfpm.pools = attrsets.mapAttrs' (name: icfg: attrsets.nameValuePair
name {
- listen = cfg.phpListenPaths."${name}";
- extraConfig = ''
- user = ${icfg.httpdUser}
- group = ${icfg.httpdGroup}
- listen.owner = ${icfg.httpdUser}
- listen.group = ${icfg.httpdGroup}
- ${optionalString (icfg.phpSession) ''
- php_admin_value[session.save_path] = "${icfg.varDir}/phpSessions"''}
- php_admin_value[open_basedir] = "${builtins.concatStringsSep ":" ([icfg.app icfg.varDir] ++ icfg.phpWatchFiles ++ icfg.phpOpenbasedir)}"
- '' + icfg.phpPool;
+ user = icfg.httpdUser;
+ group = icfg.httpdUser;
+ settings = {
+ "listen.owner" = icfg.httpdUser;
+ "listen.group" = icfg.httpdGroup;
+ "php_admin_value[open_basedir]" = builtins.concatStringsSep ":" ([icfg.app icfg.varDir] ++ icfg.phpWatchFiles ++ icfg.phpOpenbasedir);
+ }
+ // optionalAttrs (icfg.phpSession) { "php_admin_value[session.save_path]" = "${icfg.varDir}/phpSessions"; }
+ // icfg.phpPool;
phpOptions = config.services.phpfpm.phpOptions + icfg.phpOptions;
+ inherit (icfg) phpEnv phpPackage;
}
) cfg.apps;