-{ lib, config, ... }:
+{ lib, config, pkgs, ... }:
with lib;
let
cfg = config.services.phpApplication;
Mode to apply to the vardir
'';
};
- phpSession = mkOption {
- type = bool;
- default = true;
- description = "Handle phpsession files separately in vardir";
- };
phpListen = mkOption {
type = nullOr str;
default = null;
default = {};
description = "Pool environment to append";
};
+ phpPackage = mkOption {
+ type = attrsOf str;
+ default = pkgs.php;
+ description = "Php package to use";
+ };
phpOptions = mkOption {
type = lines;
default = "";
Path to application root
'';
};
- webappName = mkOption {
- type = nullOr str;
- default = null;
- description = ''
- Alias name for the app, to be used in services.websites.webappDirs
- '';
- };
- webRoot = mkOption {
- type = nullOr path;
- description = ''
- Path to the web root path of the application. May differ from the application itself (usually a subdirectory)
- '';
- };
preStartActions = mkOption {
type = listOf str;
default = [];
Full paths to listen for php
'';
};
- services.phpApplication.webappDirs = mkOption {
- type = attrsOf path;
- default = attrsets.filterAttrs (n: v: builtins.hasAttr n cfg.apps) config.services.websites.webappDirsPaths;
- readOnly = true;
- description = ''
- Stable name webapp dirs for httpd
- '';
- };
};
config = {
}
) cfgByEnv;
+ services.phpfpm.phpPackage = pkgs.php74;
services.phpfpm.pools = attrsets.mapAttrs' (name: icfg: attrsets.nameValuePair
name {
user = 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;
+ inherit (icfg) phpEnv phpPackage;
}
) cfg.apps;
- services.websites.webappDirs = attrsets.mapAttrs' (name: icfg: attrsets.nameValuePair
- (if icfg.webappName == null then name else icfg.webappName) icfg.webRoot
- ) (attrsets.filterAttrs (n: v: !isNull v.webRoot) cfg.apps);
-
services.filesWatcher = attrsets.mapAttrs' (name: icfg: attrsets.nameValuePair
"phpfpm-${name}" {
restart = true;
deps = [];
text = optionalString (!isNull icfg.varDir) ''
install -m ${icfg.mode} -o ${icfg.httpdUser} -g ${icfg.httpdGroup} -d ${icfg.varDir}
- '' + optionalString (icfg.phpSession) ''
- install -m 0700 -o ${icfg.httpdUser} -g ${icfg.httpdGroup} -d ${icfg.varDir}/phpSessions
'' + builtins.concatStringsSep "\n" (attrsets.mapAttrsToList (n: v: ''
install -m ${v} -o ${icfg.httpdUser} -g ${icfg.httpdGroup} -d ${icfg.varDir}/${n}
'') icfg.varDirPaths);