anchor.diff:          nextcloud-setup = let
             c = cfg.config;
             writePhpArrary = a: "[${concatMapStringsSep "," (val: ''"${toString val}"'') a}]";
  -          requiresReadSecretFunction = c.dbpassFile != null
  -            || (c.objectstore != null && c.objectstore.s3.enable);
  -          objectstoreConfig = let
  -            class = if c.objectstore.s3.enable then "S3" else "";
  -            args = if c.objectstore.s3.enable then c.objectstore.s3.arguments else {};
  -            classLine = '''class' => '\\OC\\Files\\ObjectStore\\${class}','';
  -            argumentLines = optionalString c.objectstore.s3.enable ''
  -              'bucket' => '${args.bucket}',
  -              'autocreate' => ${toString args.autocreate},
  -              'key' => '${args.key}',
  -              'secret' => nix_read_secret('${args.secretFile}'),
  -              ${optionalString (args.hostname != null) "'hostname' => '${args.hostname}',"}
  -              ${optionalString (args.port != null) "'port' => ${toString args.port},"}
  -              ${optionalString (args.useSsl != null) "'use_ssl' => ${if args.useSsl then "true" else "false"},"}
  -              ${optionalString (args.region != null) "'region' => '${args.region}',"}
  -              'use_path_style' => ${if args.usePathStyle then "true" else "false"},
  -            '';
  -          in optionalString (c.objectstore != null) '''objectstore' => [
  -            ${classLine}
  +          requiresReadSecretFunction = c.dbpassFile != null || c.objectstore.s3.enable;
  +          objectstoreConfig = let s3 = c.objectstore.s3; in optionalString s3.enable '''objectstore' => [
  +            'class' => '\\OC\\Files\\ObjectStore\\S3',
               'arguments' => [
  -              ${argumentLines}
  +              'bucket' => '${s3.bucket}',
  +              'autocreate' => ${boolToString s3.autocreate},
  +              'key' => '${s3.key}',
  +              'secret' => nix_read_secret('${s3.secretFile}'),
  +              ${optionalString (s3.hostname != null) "'hostname' => '${s3.hostname}',"}
  +              ${optionalString (s3.port != null) "'port' => ${toString s3.port},"}
  +              ${optionalString (s3.useSsl != null) "'use_ssl' => ${boolToString s3.useSsl},"}
  +              ${optionalString (s3.region != null) "'region' => '${s3.region}',"}
  +              'use_path_style' => ${boolToString s3.usePathStyle},
               ],
             ]'';
  +
             overrideConfig = pkgs.writeText "nextcloud-config.php" ''
               <?php
               ${optionalString requiresReadSecretFunction ''
  
positive.code:         '';
        };
  
        objectstore = let
          s3Arguments = {
            bucket = mkOption {
              type = types.str;
              example = "nextcloud";
  
negative.code:             '';
            };
          };
        };
      };
  
  