params {
// ------------------- Directories -------------------
    cache_dir            = '/p/vast1/mlbiomon/analysis/securebio/test/other/wawa_wkflw/images'
    tmp_dir              = '/p/vast1/mlbiomon/analysis/securebio/test/other/wawa_wkflw/tmp'  
//    ref_data_dir         = '/p/vast1/mlbiomon/ref_data'
    ref_data_dir         = '/p/vast1/mlbiomon/ref_data/test'
    output_dir           = '/p/vast1/mlbiomon/analysis/securebio/test/other/wawa_wkflw/output'
    work_dir             = '/p/vast1/mlbiomon/analysis/securebio/test/other/wawa_wkflw/scripts/work'
//    dorado_model_cache   = "${params.ref_data_dir}/dorado_models"
//    dorado_model         = 'dna_r10.4.1_e8.2_400bps_hac@v5.2.0'

// ------------------- Settings -------------------
    metadata             = 'nf_metadata.csv'
    time                 = '12h'
    threads              = 64

// ------------------- Database paths ---------------
//    rrna_db              = "${params.ref_data_dir}/bbtools/riboKmers20fused.fa"
    rrna_db              = "${projectDir}/bin/riboKmers20fused.fa.gz"
    human_db             = "${params.ref_data_dir}/bbtools/GRCh38.primary_assembly.genome.fa.gz"
    chimeracutter_db     = "${params.ref_data_dir}/chimeracutter_db/virus_blast"
    gunc_db              = "${params.ref_data_dir}/gunc/gunc_db_progenomes2.1.dmnd"
    checkv_db            = "${params.ref_data_dir}/checkv-db-v1.5"
    genomad_db           = "${params.ref_data_dir}/genomad_db_1.9/genomad_db"
    checkm2_db           = "${params.ref_data_dir}/checkM2_DB/CheckM2_database/uniref100.KO.1.dmnd"
    gtdb_tk_db           = "${params.ref_data_dir}/gtdbtk_release226/release226"
    gottcha2_db          = "${params.ref_data_dir}/GOTTCHA2_DB/GTDB_r220_BAVFPtPnPnPz_mainTax_repHQ_addG_condense/gottcha_db.species.fna"
}

// Global environment variables
env {
    APPTAINER_CACHEDIR = '/p/vast1/mlbiomon/analysis/securebio/test/other/wawa_wkflw/images'
    APPTAINER_TMPDIR = '/p/vast1/mlbiomon/analysis/securebio/test/other/wawa_wkflw/tmp'
    SINGULARITY_CACHEDIR = '/p/vast1/mlbiomon/analysis/securebio/test/other/wawa_wkflw/images'
    SINGULARITY_TMPDIR = '/p/vast1/mlbiomon/analysis/securebio/test/other/wawa_wkflw/tmp'
    TMPDIR = '/p/vast1/mlbiomon/analysis/securebio/test/other/wawa_wkflw/tmp'
}

// Process defaults 
process {
    stageInMode = 'symlink'  // Changed from 'copy' - much faster for large files
    scratch = "${params.tmp_dir}"
    
    // Force container pulls to happen on compute nodes, not head node
    beforeScript = """
        export APPTAINER_CACHEDIR=${params.cache_dir}
        export APPTAINER_TMPDIR=${params.tmp_dir}
        
        # Only pull if container is specified and not already cached
        if [ ! -z "\${APPTAINER_CONTAINER}" ]; then
            apptainer pull --disable-cache --dir ${params.cache_dir} \${APPTAINER_CONTAINER} 2>/dev/null || true
        fi
    """
 
    containerOptions = "-B ${params.ref_data_dir}:${params.ref_data_dir}:rw " +
                       "-B /p/vast1/mlbiomon/analysis/securebio/test/other/wawa_wkflw/input:/input:ro " +
                       "-B ${params.work_dir}:${params.work_dir} " +
//                       "-B ${params.dorado_model_cache}:${params.dorado_model_cache}:rw " +
                       "-B ${params.tmp_dir}:${params.tmp_dir}"
}

// Executors
process.executor = 'flux'
executor.queueSize = 10
conda.enabled = true
docker.enabled = false

// Apptainer configuration
apptainer {
    enabled     = true
    autoMounts  = true
    cacheDir    = "${params.cache_dir}"
    pullTimeout = '30 min'
    envWhitelist = 'APPTAINER_CACHEDIR,APPTAINER_TMPDIR,SINGULARITY_CACHEDIR,SINGULARITY_TMPDIR,TMPDIR'
}


// Process reporting (commented out - uncomment when needed)
//def trace_timestamp = new java.util.Date().format( 'yyyy-MM-dd_HH-mm-ss')
//timeline {
//    enabled = true
//    file    = "${params.output_dir}/pipeline_info/execution_timeline_${trace_timestamp}.html"
//}
//report {
//    enabled = true
//    file    = "${params.output_dir}/pipeline_info/execution_report_${trace_timestamp}.html"
//}
//trace {
//    enabled = true
//    file    = "${params.output_dir}/pipeline_info/execution_trace_${trace_timestamp}.txt"
//}
//dag {
//    enabled = true
//    file    = "${params.output_dir}/pipeline_info/pipeline_dag_${trace_timestamp}.html"
//}

