mirror of
https://github.com/CHN-beta/nixos.git
synced 2024-10-24 23:17:58 +08:00
71 lines
2.2 KiB
Nix
71 lines
2.2 KiB
Nix
inputs:
|
|
{
|
|
options.nixos.services.phpfpm = let inherit (inputs.lib) mkOption types; in
|
|
{
|
|
instances = mkOption
|
|
{
|
|
type = types.attrsOf (types.submodule (submoduleInputs: { options =
|
|
{
|
|
user = mkOption { type = types.nullOr types.nonEmptyStr; default = null; };
|
|
group = mkOption { type = types.nullOr types.nonEmptyStr; default = null; };
|
|
package = mkOption { type = types.nullOr types.package; default = inputs.pkgs.php; };
|
|
fastcgi = mkOption
|
|
{
|
|
type = types.nonEmptyStr;
|
|
readOnly = true;
|
|
default = "unix:${inputs.config.services.phpfpm.pools.${submoduleInputs.config._module.args.name}.socket}";
|
|
};
|
|
};}));
|
|
default = {};
|
|
};
|
|
};
|
|
config =
|
|
let
|
|
inherit (builtins) map listToAttrs filter;
|
|
inherit (inputs.localLib) attrsToList;
|
|
inherit (inputs.config.nixos.services) phpfpm;
|
|
in
|
|
{
|
|
services.phpfpm.pools = listToAttrs (map
|
|
(pool:
|
|
{
|
|
inherit (pool) name;
|
|
value = rec
|
|
{
|
|
user = if pool.value.user == null then pool.name else pool.value.user;
|
|
group = if pool.value.group == null then inputs.config.users.users.${user}.group else pool.value.group;
|
|
phpPackage = pool.value.package;
|
|
settings =
|
|
{
|
|
"pm" = "ondemand";
|
|
"pm.max_children" = 4;
|
|
"pm.process_idle_timeout" = "60s";
|
|
"pm.max_requests" = 128;
|
|
"listen.owner" = inputs.config.services.nginx.user;
|
|
"listen.group" = inputs.config.services.nginx.group;
|
|
};
|
|
};
|
|
})
|
|
(attrsToList phpfpm.instances));
|
|
users =
|
|
{
|
|
users = listToAttrs (map
|
|
(pool:
|
|
{
|
|
inherit (pool) name;
|
|
value =
|
|
{
|
|
uid = inputs.config.nixos.user.uid.${pool.name};
|
|
group = pool.name;
|
|
extraGroups = [ "nginx" ];
|
|
isSystemUser = true;
|
|
};
|
|
})
|
|
(filter (pool: pool.value.user == null) (attrsToList phpfpm.instances)));
|
|
groups = listToAttrs (map
|
|
(pool: { inherit (pool) name; value.gid = inputs.config.nixos.user.gid.${pool.name}; })
|
|
(filter (pool: pool.value.user == null) (attrsToList phpfpm.instances)));
|
|
};
|
|
};
|
|
}
|