"Options appended to the PHP configuration file <filename>php.ini</filename>.";
};
+ serviceDependencies = mkOption {
+ default = {};
+ type = types.attrsOf (types.listOf types.string);
+ example = literalExample ''
+ { mypool = ["postgresql.service"]; }
+ '';
+ description = ''
+ Extra service dependencies specific to pool.
+ '';
+ };
+
+ envFile = mkOption {
+ default = {};
+ type = types.attrsOf types.string;
+ example = literalExample ''
+ { mypool = "path/to/file";
+ }
+ '';
+ description = ''
+ Extra environment file go into the service script.
+ '';
+ };
+
+ preStart = mkOption {
+ default = {};
+ type = types.attrsOf types.lines;
+ example = literalExample ''
+ { mypool = '''
+ touch foo
+ ''';
+ }
+ '';
+ description = ''
+ Extra lines that will go into the preStart systemd service
+ '';
+ };
+
poolPhpConfigs = mkOption {
default = {};
type = types.attrsOf types.lines;
systemd.services = flip mapAttrs' poolConfigs (pool: poolConfig:
nameValuePair "phpfpm-${pool}" {
description = "PHP FastCGI Process Manager service for pool ${pool}";
- after = [ "network.target" ];
+ after = [ "network.target" ] ++ (cfg.serviceDependencies.${pool} or []);
+ wants = cfg.serviceDependencies.${pool} or [];
wantedBy = [ "phpfpm.target" ];
partOf = [ "phpfpm.target" ];
preStart = ''
mkdir -p ${stateDir}
- '';
+ '' + (cfg.preStart.${pool} or "");
serviceConfig = let
cfgFile = fpmCfgFile pool poolConfig;
poolPhpIni = cfg.poolPhpConfigs.${pool} or "";
in {
+ EnvironmentFile = if builtins.hasAttr pool cfg.envFile then [cfg.envFile.${pool}] else [];
Slice = "phpfpm.slice";
PrivateDevices = true;
ProtectSystem = "full";