fruitbasket/modules/website.nix
2023-03-31 14:55:55 +02:00

43 lines
1.1 KiB
Nix

{ pkgs, lib, config, ... }:
let
grav-cms = pkgs.callPackage ../pkgs/grav.nix { };
app = "grav";
domain = "grav.${config.fsr.domain}";
in
{
services.phpfpm.pools.${app} = {
user = app;
settings = {
"listen.owner" = config.services.nginx.user;
"pm" = "dynamic";
"pm.max_children" = 32;
"pm.max_requests" = 500;
"pm.start_servers" = 2;
"pm.min_spare_servers" = 2;
"pm.max_spare_servers" = 5;
"php_admin_value[error_log]" = "stderr";
"php_admin_flag[log_errors]" = true;
"catch_workers_output" = true;
};
phpEnv."PATH" = lib.makeBinPath [ pkgs.php ];
};
services.nginx = {
enable = true;
virtualHosts."${domain}".locations."/" = {
root = "${grav-cms}";
extraConfig = ''
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:${config.services.phpfpm.pools.${app}.socket};
include ${pkgs.nginx}/conf/fastcgi_params;
include ${pkgs.nginx}/conf/fastcgi.conf;
'';
};
};
users.users.${app} = {
isSystemUser = true;
createHome = true;
home = grav-cms;
group = app;
};
users.groups.${app} = { };
}