From 1d0b49f9595755a00f714540c1342718376c6dec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20Fr=C3=B6hlich?= Date: Sun, 8 Jun 2025 08:22:45 +0200 Subject: [PATCH] nextcloud-server externalStorage.userLocalMount config existing check use `--output=json` and jq to check for existence of mount --- modules/services/nextcloud-server.nix | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/modules/services/nextcloud-server.nix b/modules/services/nextcloud-server.nix index a1c8d3a..d951dd6 100644 --- a/modules/services/nextcloud-server.nix +++ b/modules/services/nextcloud-server.nix @@ -963,18 +963,18 @@ in '' + lib.optionalString (cfg.apps.externalStorage.userLocalMount != null) ( let cfg' = cfg.apps.externalStorage.userLocalMount; - - escape = x: builtins.replaceStrings ["/"] [''\\\/''] x; + jq = "${pkgs.jq}/bin/jq"; in + # sh '' - ${occ} files_external:list \ - | grep '${escape cfg'.mountName}' \ - | grep '${escape cfg'.directory}' \ - || ${occ} files_external:create \ - '${cfg'.mountName}' \ - local \ - null::null \ - --config datadir='${cfg'.directory}' + exists=$(${occ} files_external:list --output=json | ${jq} 'any(.[]; .mount_point == "${cfg'.mountName}" and .configuration.datadir == "${cfg'.directory}")') + if [[ "$exists" == "false" ]]; then + ${occ} files_external:create \ + '${cfg'.mountName}' \ + local \ + null::null \ + --config datadir='${cfg'.directory}' + fi ''); })