Merge pull request #247314 from Ma27/nextcloud-php-settings
nixos/nextcloud: make php settings additive
This commit is contained in:
commit
404abaa27a
|
@ -72,6 +72,22 @@
|
||||||
|
|
||||||
- The [services.caddy.acmeCA](#opt-services.caddy.acmeCA) option now defaults to `null` instead of `"https://acme-v02.api.letsencrypt.org/directory"`, to use all of Caddy's default ACME CAs and enable Caddy's automatic issuer fallback feature by default, as recommended by upstream.
|
- The [services.caddy.acmeCA](#opt-services.caddy.acmeCA) option now defaults to `null` instead of `"https://acme-v02.api.letsencrypt.org/directory"`, to use all of Caddy's default ACME CAs and enable Caddy's automatic issuer fallback feature by default, as recommended by upstream.
|
||||||
|
|
||||||
|
- The default priorities of [`services.nextcloud.phpOptions`](#opt-services.nextcloud.phpOptions) have changed. This means that e.g.
|
||||||
|
`services.nextcloud.phpOptions."opcache.interned_strings_buffer" = "23";` doesn't discard all of the other defaults from this option
|
||||||
|
anymore. The attribute values of `phpOptions` are still defaults, these can be overridden as shown here.
|
||||||
|
|
||||||
|
To override all of the options (including including `upload_max_filesize`, `post_max_size`
|
||||||
|
and `memory_limit` which all point to [`services.nextcloud.maxUploadSize`](#opt-services.nextcloud.maxUploadSize)
|
||||||
|
by default) can be done like this:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
{
|
||||||
|
services.nextcloud.phpOptions = lib.mkForce {
|
||||||
|
/* ... */
|
||||||
|
};
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
- `php80` is no longer supported due to upstream not supporting this version anymore.
|
- `php80` is no longer supported due to upstream not supporting this version anymore.
|
||||||
|
|
||||||
- PHP now defaults to PHP 8.2, updated from 8.1.
|
- PHP now defaults to PHP 8.2, updated from 8.1.
|
||||||
|
|
|
@ -8,6 +8,21 @@ let
|
||||||
|
|
||||||
jsonFormat = pkgs.formats.json {};
|
jsonFormat = pkgs.formats.json {};
|
||||||
|
|
||||||
|
defaultPHPSettings = {
|
||||||
|
short_open_tag = "Off";
|
||||||
|
expose_php = "Off";
|
||||||
|
error_reporting = "E_ALL & ~E_DEPRECATED & ~E_STRICT";
|
||||||
|
display_errors = "stderr";
|
||||||
|
"opcache.enable_cli" = "1";
|
||||||
|
"opcache.interned_strings_buffer" = "8";
|
||||||
|
"opcache.max_accelerated_files" = "10000";
|
||||||
|
"opcache.memory_consumption" = "128";
|
||||||
|
"opcache.revalidate_freq" = "1";
|
||||||
|
"opcache.fast_shutdown" = "1";
|
||||||
|
"openssl.cafile" = "/etc/ssl/certs/ca-certificates.crt";
|
||||||
|
catch_workers_output = "yes";
|
||||||
|
};
|
||||||
|
|
||||||
inherit (cfg) datadir;
|
inherit (cfg) datadir;
|
||||||
|
|
||||||
phpPackage = cfg.phpPackage.buildEnv {
|
phpPackage = cfg.phpPackage.buildEnv {
|
||||||
|
@ -26,22 +41,13 @@ let
|
||||||
++ optional cfg.caching.memcached memcached
|
++ optional cfg.caching.memcached memcached
|
||||||
)
|
)
|
||||||
++ cfg.phpExtraExtensions all; # Enabled by user
|
++ cfg.phpExtraExtensions all; # Enabled by user
|
||||||
extraConfig = toKeyValue phpOptions;
|
extraConfig = toKeyValue cfg.phpOptions;
|
||||||
};
|
};
|
||||||
|
|
||||||
toKeyValue = generators.toKeyValue {
|
toKeyValue = generators.toKeyValue {
|
||||||
mkKeyValue = generators.mkKeyValueDefault {} " = ";
|
mkKeyValue = generators.mkKeyValueDefault {} " = ";
|
||||||
};
|
};
|
||||||
|
|
||||||
phpOptions = {
|
|
||||||
upload_max_filesize = cfg.maxUploadSize;
|
|
||||||
post_max_size = cfg.maxUploadSize;
|
|
||||||
memory_limit = cfg.maxUploadSize;
|
|
||||||
} // cfg.phpOptions
|
|
||||||
// optionalAttrs cfg.caching.apcu {
|
|
||||||
"apc.enable_cli" = "1";
|
|
||||||
};
|
|
||||||
|
|
||||||
occ = pkgs.writeScriptBin "nextcloud-occ" ''
|
occ = pkgs.writeScriptBin "nextcloud-occ" ''
|
||||||
#! ${pkgs.runtimeShell}
|
#! ${pkgs.runtimeShell}
|
||||||
cd ${cfg.package}
|
cd ${cfg.package}
|
||||||
|
@ -263,22 +269,33 @@ in {
|
||||||
|
|
||||||
phpOptions = mkOption {
|
phpOptions = mkOption {
|
||||||
type = types.attrsOf types.str;
|
type = types.attrsOf types.str;
|
||||||
default = {
|
defaultText = literalExpression (generators.toPretty { } defaultPHPSettings);
|
||||||
short_open_tag = "Off";
|
|
||||||
expose_php = "Off";
|
|
||||||
error_reporting = "E_ALL & ~E_DEPRECATED & ~E_STRICT";
|
|
||||||
display_errors = "stderr";
|
|
||||||
"opcache.enable_cli" = "1";
|
|
||||||
"opcache.interned_strings_buffer" = "8";
|
|
||||||
"opcache.max_accelerated_files" = "10000";
|
|
||||||
"opcache.memory_consumption" = "128";
|
|
||||||
"opcache.revalidate_freq" = "1";
|
|
||||||
"opcache.fast_shutdown" = "1";
|
|
||||||
"openssl.cafile" = "/etc/ssl/certs/ca-certificates.crt";
|
|
||||||
catch_workers_output = "yes";
|
|
||||||
};
|
|
||||||
description = lib.mdDoc ''
|
description = lib.mdDoc ''
|
||||||
Options for PHP's php.ini file for nextcloud.
|
Options for PHP's php.ini file for nextcloud.
|
||||||
|
|
||||||
|
Please note that this option is _additive_ on purpose while the
|
||||||
|
attribute values inside the default are option defaults: that means that
|
||||||
|
|
||||||
|
```nix
|
||||||
|
{
|
||||||
|
services.nextcloud.phpOptions."opcache.interned_strings_buffer" = "23";
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
will override the `php.ini` option `opcache.interned_strings_buffer` without
|
||||||
|
discarding the rest of the defaults.
|
||||||
|
|
||||||
|
Overriding all of `phpOptions` (including `upload_max_filesize`, `post_max_size`
|
||||||
|
and `memory_limit` which all point to [](#opt-services.nextcloud.maxUploadSize)
|
||||||
|
by default) can be done like this:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
{
|
||||||
|
services.nextcloud.phpOptions = lib.mkForce {
|
||||||
|
/* ... */
|
||||||
|
};
|
||||||
|
}
|
||||||
|
```
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -750,6 +767,18 @@ in {
|
||||||
services.nextcloud.phpPackage =
|
services.nextcloud.phpPackage =
|
||||||
if versionOlder cfg.package.version "26" then pkgs.php81
|
if versionOlder cfg.package.version "26" then pkgs.php81
|
||||||
else pkgs.php82;
|
else pkgs.php82;
|
||||||
|
|
||||||
|
services.nextcloud.phpOptions = mkMerge [
|
||||||
|
(mapAttrs (const mkOptionDefault) defaultPHPSettings)
|
||||||
|
{
|
||||||
|
upload_max_filesize = cfg.maxUploadSize;
|
||||||
|
post_max_size = cfg.maxUploadSize;
|
||||||
|
memory_limit = cfg.maxUploadSize;
|
||||||
|
}
|
||||||
|
(mkIf cfg.caching.apcu {
|
||||||
|
"apc.enable_cli" = "1";
|
||||||
|
})
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
{ assertions = [
|
{ assertions = [
|
||||||
|
|
Loading…
Reference in a new issue