Seqera configuration incompatibilites with NXF_SYNTAX_PARSER=v2
## Bug report
### Expected behavior and actual behavior
I have been trying to run a pipeline that uses strict syntax (`NXF_SYNTAX_PARSER=v2`) in seqera cloud but get the following error:
```
nextflow is provided as is with no guarantees!
Please direct any issues to:
https://github.com/nextflow-io/nextflow/issues
NXF_WORK set to /<my-dir>/ring/nextflow/work.
Files will be automatically deleted in accordance with VAST scratch policies.
Loading nextflow/25.10.0
Loading requirement: apptainer/1.4.1 miniconda3/latest micromamba/latest
Nextflow 25.10.4 is available - Please consider updating your version to it
N E X T F L O W ~ version 25.10.0
Pulling aringeri/seqera-with-strict-syntax ...
downloaded from https://github.com/aringeri/seqera-with-strict-syntax.git
Error nf-5UjStx99jR3aO7.config:2:18: `NXF_TML_FILE` is not defined
│ 2 | timeline.file = "$NXF_TML_FILE"
╰ | ^^^^^^^^^^^^^
ERROR ~ Config parsing failed
-- Check 'nf-5UjStx99jR3aO7.log' file for details
```
### Steps to reproduce the problem
I have access to a self-hosted seqera cloud: Version 25.3.1_ad8c46a
I am running Tower Agent version 0.5.0 (build d758993).
I am running Nextflow version 25.10.0 build 10289
I am using a SLURM compute environment with minimal customization.
This is a minimal nextflow pipeline that reproduces the error: https://github.com/aringeri/seqera-with-strict-syntax
I create the pipeline in seqera pointing to that github repository and set the pre-run script to the following:
<img width="359" height="466" alt="Image" src="https://github.com/user-attachments/assets/edb088b9-24ff-4831-8323-a36c28b2f8a1" />
I launch the pipeline and it fails in the config parsing step.
### Program output
```
Apr-01 09:52:06.681 [main] ERROR nextflow.cli.Launcher - Config parsing failed
nextflow.exception.ConfigParseException: Config parsing failed
at nextflow.config.parser.v2.ConfigParserV2.parse(ConfigParserV2.groovy:143)
at nextflow.config.parser.v2.ConfigParserV2.parse(ConfigParserV2.groovy:172)
at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321)
at nextflow.config.ConfigBuilder.parse0(ConfigBuilder.groovy:454)
at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321)
at nextflow.config.ConfigBuilder.merge0(ConfigBuilder.groovy:438)
at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321)
at nextflow.config.ConfigBuilder.buildConfig0(ConfigBuilder.groovy:395)
at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321)
at nextflow.config.ConfigBuilder.buildGivenFiles(ConfigBuilder.groovy:336)
at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321)
at nextflow.config.ConfigBuilder.buildConfigObject(ConfigBuilder.groovy:833)
at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321)
at nextflow.config.ConfigBuilder.build(ConfigBuilder.groovy:846)
at nextflow.cli.CmdRun.run(CmdRun.groovy:358)
at nextflow.cli.Launcher.run(Launcher.groovy:515)
at nextflow.cli.Launcher.main(Launcher.groovy:675)
Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
_nf_config_b2a57dfd6f23f311: 2: `NXF_TML_FILE` is not defined @ line 2, column 18.
timeline.file = "$NXF_TML_FILE"
^
1 error
at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:292)
at org.codehaus.groovy.control.CompilationUnit$ISourceUnitOperation.doPhaseOperation(CompilationUnit.java:878)
at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:660)
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:634)
at nextflow.config.parser.v2.ConfigCompiler.compile0(ConfigCompiler.java:112)
at nextflow.config.parser.v2.ConfigCompiler.compile(ConfigCompiler.java:97)
at nextflow.config.parser.v2.ConfigParserV2.parse(ConfigParserV2.groovy:125)
... 16 common frames omitted
```
See also: [nf-5UjStx99jR3aO7.log](https://github.com/user-attachments/files/26391631/nf-5UjStx99jR3aO7.log)
### Environment
* Nextflow version: 25.10.0 build 10289
* Java version: openjdk 17.0.14
* Operating system: Linux
* Bash version: GNU bash, version 5.1.8(1)-release
### Additional context
It seems that seqera is generating a `.config` file for the run that is not compatible with the strict syntax.
My understanding is that the below config file generated be Seqera should be using `"${env('NXF_TML_FILE')}"` instead of `"$NXF_TML_FILE"`: https://www.nextflow.io/docs/latest/strict-syntax.html#implicit-environment-variables
```
timeline.enabled = true
timeline.file = "$NXF_TML_FILE"
process.executor = 'slurm'
process.queue = 'regular'
executor.queueSize = 1000
workDir = '<my-work-dir>/nextflow/work'
```
This also occurs when I try to pass additional nextflow configuration settings (`nextflow.config`) via the Seqera UI:
```
Error nf-5h5yxmJLivbKvy.config:9:1: Invalid include source: '/home/users/ring/nextflow/work/https:/seqera.services.biocommons.org.au/api/ephemeral/I1GSHgUHSa86ZFNjrunEeQ'
│ 9 | includeConfig 'https://seqera.services.biocommons.org.au/api/ephemeral
╰ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
```
0 条评论