diff options
author | Maximilian Bosch <maximilian@mbosch.me> | 2024-06-22 18:39:08 +0200 |
---|---|---|
committer | Maximilian Bosch <maximilian@mbosch.me> | 2024-06-22 18:39:08 +0200 |
commit | 50d5306e7c28085420cde8c533464ea8921e0e37 (patch) | |
tree | d221eefc7e4ea0c1de141a30b6988b17954e2488 /nixos | |
parent | ab9b8f8cf4165e8fdd7d2b50b459832ec0069b4d (diff) |
nixos/nextcloud: use dedicated memory limit for the entire CLI
Originally, I wanted to execute `nextcloud-occ` with a higher memory limit because I needed to trigger an expensive operation by hand, regenerating a bunch of previews. While doing so, I realized how painful it is to put an invocation of nextcloud-occ together for that, especially when you need to put it into another systemd unit in Nix code. That's why I decided to use the memory limit now for every CLI invocation just in case. The stuff you do in those units (e.g. running background jobs) is something you can also do by hand with `nextcloud-occ` and you'll most likely want to have the same memory limit there.
Diffstat (limited to 'nixos')
-rw-r--r-- | nixos/modules/services/web-apps/nextcloud.nix | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/nixos/modules/services/web-apps/nextcloud.nix b/nixos/modules/services/web-apps/nextcloud.nix index a7a3d01f1f450..8d18c8e973915 100644 --- a/nixos/modules/services/web-apps/nextcloud.nix +++ b/nixos/modules/services/web-apps/nextcloud.nix @@ -80,6 +80,12 @@ let mkKeyValue = generators.mkKeyValueDefault {} " = "; }; + phpCli = concatStringsSep " " ([ + "${getExe phpPackage}" + ] ++ optionals (cfg.cli.memoryLimit != null) [ + "-dmemory_limit=${cfg.cli.memoryLimit}" + ]); + occ = pkgs.writeScriptBin "nextcloud-occ" '' #! ${pkgs.runtimeShell} cd ${webroot} @@ -89,7 +95,7 @@ let fi export NEXTCLOUD_CONFIG_DIR="${datadir}/config" $sudo \ - ${phpPackage}/bin/php \ + ${phpCli} \ occ "$@" ''; @@ -196,6 +202,9 @@ let in { imports = [ + (mkRenamedOptionModule + [ "services" "nextcloud" "cron" "memoryLimit" ] + [ "services" "nextcloud" "cli" "memoryLimit" ]) (mkRemovedOptionModule [ "services" "nextcloud" "enableBrokenCiphersForSSE" ] '' This option has no effect since there's no supported Nextcloud version packaged here using OpenSSL for RC4 SSE. @@ -793,7 +802,7 @@ in { }; }; - cron.memoryLimit = mkOption { + cli.memoryLimit = mkOption { type = types.nullOr types.str; default = null; example = "1G"; @@ -1009,14 +1018,8 @@ in { serviceConfig = { Type = "exec"; User = "nextcloud"; - ExecCondition = "${lib.getExe phpPackage} -f ${webroot}/occ status -e"; - ExecStart = lib.concatStringsSep " " ([ - (lib.getExe phpPackage) - ] ++ optional (cfg.cron.memoryLimit != null) "-dmemory_limit=${cfg.cron.memoryLimit}" - ++ [ - "-f" - "${webroot}/cron.php" - ]); + ExecCondition = "${phpCli} -f ${webroot}/occ status -e"; + ExecStart = "${phpCli} -f ${webroot}/cron.php"; KillMode = "process"; }; }; @@ -1040,7 +1043,7 @@ in { serviceConfig = { Type = "exec"; User = "nextcloud"; - ExecCondition = "${lib.getExe phpPackage} -f ${webroot}/occ status -e"; + ExecCondition = "${phpCli} -f ${webroot}/occ status -e"; }; }; }; |