diff --git a/src/nf_modules/bwa/main.nf b/src/nf_modules/bwa/main.nf
new file mode 100644
index 0000000000000000000000000000000000000000..166be133cfaf7591b97358903bbac0dfd3dcdb2a
--- /dev/null
+++ b/src/nf_modules/bwa/main.nf
@@ -0,0 +1,45 @@
+version = "0.7.17"
+container_url = "lbmc/bwa:${version}"
+
+process index_fasta {
+  container = "${container_url}"
+  label "big_mem_mono_cpus"
+  tag "$file_id"
+
+  input:
+    tuple val(file_id), path(fasta)
+
+  output:
+    tuple val(fasta.simpleName), path("${fasta.simpleName}.*"), emit: index
+    file "*_bwa_report.txt", emit: report
+
+  script:
+"""
+bwa index -p ${fasta.simpleName} ${fasta} \
+&> ${fasta.simpleName}_bwa_report.txt
+"""
+}
+
+
+process mapping_fastq {
+  container = "${container_url}"
+  label "big_mem_multi_cpus"
+  tag "$file_id"
+
+  input:
+  tuple val(file_id), path(reads)
+  tuple val(index_id), path(index)
+
+  output:
+  tuple val(file_id), path("*.bam"), emit: bam
+  tuple val(file_id), path("${pair_id}_bwa_report.txt"), emit: report
+
+  script:
+"""
+bwa mem -t ${task.cpus} \
+${index_id} ${reads[0]} ${reads[1]} 2> \
+  ${file_id}_bwa_report.txt | \
+  sambamba view -S -t ${task/cpus} -f bam - > ${file_id}.bam
+"""
+}
+
diff --git a/src/nf_modules/picard/main.nf b/src/nf_modules/picard/main.nf
index a7326f3dacc341bc1dfe7ffb2cb81cea380791d0..51725afa0c89fb87cec05bb2338e5ab9484ac328 100644
--- a/src/nf_modules/picard/main.nf
+++ b/src/nf_modules/picard/main.nf
@@ -24,3 +24,21 @@ PicardCommandLine MarkDuplicates \
   picard_${bam.baseName}.log
 """
 }
+
+process index_fasta {
+  container = "${container_url}"
+  label "big_mem_mono_cpus"
+  tag "$file_id"
+
+  input:
+    tuple val(file_id), file(fasta)
+  output:
+    tuple val(file_id), file("*.dict"), emit: index 
+
+  script:
+"""
+PicardCommandLine CreateSequenceDictionary \
+REFERENCE=${fasta} \
+OUTPUT=${fasta.simpleName}.dict
+"""
+}
diff --git a/src/nf_modules/samtools/main.nf b/src/nf_modules/samtools/main.nf
index 265f6c10798b740f5eab2235b29be78f10e0ce1f..e3413fff1143931a2393cbc5072f7a0adeecc166 100644
--- a/src/nf_modules/samtools/main.nf
+++ b/src/nf_modules/samtools/main.nf
@@ -1,6 +1,23 @@
 version = "1.11"
 container_url = "lbmc/samtools:${version}"
 
+process index_fasta {
+  container = "${container_url}"
+  label "big_mem_mono_cpus"
+  tag "$file_id"
+
+  input:
+    tuple val(file_id), path(fasta)
+  output:
+    tuple val(file_id), path("*.fai"), emit: index
+
+  script:
+"""
+samtools faidx ${fasta}
+"""
+}
+
+
 process filter_bam {
   container = "${container_url}"
   label "big_mem_multi_cpus"