diff --git a/src/nf_modules/sambamba/index_bams.config b/src/nf_modules/sambamba/index_bams.config
new file mode 100644
index 0000000000000000000000000000000000000000..0830a67ad8b1f6dd8eb993ec1c64b8ba94777f3e
--- /dev/null
+++ b/src/nf_modules/sambamba/index_bams.config
@@ -0,0 +1,18 @@
+profiles {
+  docker {
+    docker.temp = 'auto'
+    docker.enabled = true
+    process {
+      $index_bam {
+        container = "sambamba:0.6.7"
+      }
+    }
+  }
+  sge {
+    process{
+      $index_bam {
+        beforeScript = "module purge; module load sambamba/0.6.7"
+      }
+    }
+  }
+}
diff --git a/src/nf_modules/sambamba/index_bams.nf b/src/nf_modules/sambamba/index_bams.nf
new file mode 100644
index 0000000000000000000000000000000000000000..0dc2dac682b103c043018bb9e7522eb2bfcf932a
--- /dev/null
+++ b/src/nf_modules/sambamba/index_bams.nf
@@ -0,0 +1,26 @@
+params.bam = "$baseDir/data/bam/*.bam"
+
+log.info "bams files : ${params.bam}"
+
+Channel
+  .fromPath( params.bam )
+  .ifEmpty { error "Cannot find any bam files matching: ${params.bam}" }
+  .map { it -> [(it.baseName =~ /([^\.]*)/)[0][1], it]}
+  .set { bam_files }
+
+process index_bam {
+  tag "$file_id"
+  cpus 4
+
+  input:
+    set file_id, file(bam) from bam_files
+
+  output:
+    set file_id, "*.bam*" into indexed_bam_file
+
+  script:
+"""
+sambamba index -t ${task.cpus} ${bam}
+"""
+}
+
diff --git a/src/nf_modules/sambamba/sort_bams.config b/src/nf_modules/sambamba/sort_bams.config
new file mode 100644
index 0000000000000000000000000000000000000000..2e335ad319401bfa1a7e1422989a234e4faedecc
--- /dev/null
+++ b/src/nf_modules/sambamba/sort_bams.config
@@ -0,0 +1,18 @@
+profiles {
+  docker {
+    docker.temp = 'auto'
+    docker.enabled = true
+    process {
+      $sort_bam {
+        container = "sambamba:0.6.7"
+      }
+    }
+  }
+  sge {
+    process{
+      $sort_bam {
+        beforeScript = "module purge; module load sambamba/0.6.7"
+      }
+    }
+  }
+}
diff --git a/src/nf_modules/sambamba/sort_bams.nf b/src/nf_modules/sambamba/sort_bams.nf
new file mode 100644
index 0000000000000000000000000000000000000000..ac610cdca146693df69d8b765928d406b36652b6
--- /dev/null
+++ b/src/nf_modules/sambamba/sort_bams.nf
@@ -0,0 +1,26 @@
+params.bam = "$baseDir/data/bam/*.bam"
+
+log.info "bams files : ${params.bam}"
+
+Channel
+  .fromPath( params.bam )
+  .ifEmpty { error "Cannot find any bam files matching: ${params.bam}" }
+  .map { it -> [(it.baseName =~ /([^\.]*)/)[0][1], it]}
+  .set { bam_files }
+
+process sort_bam {
+  tag "$file_id"
+  cpus 4
+
+  input:
+    set file_id, file(bam) from bam_files
+
+  output:
+    set file_id, "*_sorted.bam" into sorted_bam_files
+
+  script:
+"""
+sambamba sort -t ${task.cpus} -o ${file_id}_sorted.bam ${bam}
+"""
+}
+
diff --git a/src/nf_modules/sambamba/split_bams.config b/src/nf_modules/sambamba/split_bams.config
new file mode 100644
index 0000000000000000000000000000000000000000..d2182ba92d4c6f7c40d8490ceca973e06becaad3
--- /dev/null
+++ b/src/nf_modules/sambamba/split_bams.config
@@ -0,0 +1,18 @@
+profiles {
+  docker {
+    docker.temp = 'auto'
+    docker.enabled = true
+    process {
+      $split_bam {
+        container = "sambamba:0.6.7"
+      }
+    }
+  }
+  sge {
+    process{
+      $split_bam {
+        beforeScript = "module purge; module load sambamba/0.6.7"
+      }
+    }
+  }
+}
diff --git a/src/nf_modules/sambamba/split_bams.nf b/src/nf_modules/sambamba/split_bams.nf
new file mode 100644
index 0000000000000000000000000000000000000000..ba64d2e2b77eb3a9b24ec1355c2b3a68b95c7a4d
--- /dev/null
+++ b/src/nf_modules/sambamba/split_bams.nf
@@ -0,0 +1,27 @@
+params.bam = "$baseDir/data/bam/*.bam"
+
+log.info "bams files : ${params.bam}"
+
+Channel
+  .fromPath( params.bam )
+  .ifEmpty { error "Cannot find any bam files matching: ${params.bam}" }
+  .map { it -> [(it.baseName =~ /([^\.]*)/)[0][1], it]}
+  .set { bam_files }
+
+process split_bam {
+  tag "$file_id"
+  cpus 4
+
+  input:
+    set file_id, file(bam) from bam_files
+
+  output:
+    set file_id, "*_forward.bam*" into forward_bam_files
+    set file_id, "*_reverse.bam*" into reverse_bam_files
+  script:
+"""
+sambamba view -t ${task.cpus} -h -F "strand == '+'" ${bam} > ${file_id}_forward.bam
+sambamba view -t ${task.cpus} -h -F "strand == '-'" ${bam} > ${file_id}_reverse.bam
+"""
+}
+
diff --git a/src/nf_modules/sambamba/tests.sh b/src/nf_modules/sambamba/tests.sh
new file mode 100755
index 0000000000000000000000000000000000000000..d76db22cd3f3675675dbe660704ec114f1ba7b02
--- /dev/null
+++ b/src/nf_modules/sambamba/tests.sh
@@ -0,0 +1,14 @@
+./nextflow src/nf_modules/sambamba/sort_bams.nf \
+  -c src/nf_modules/sambamba/sort_bams.config \
+  -profile docker \
+  --bam "data/tiny_dataset/map/tiny_v2.bam"
+
+./nextflow src/nf_modules/sambamba/index_bams.nf \
+  -c src/nf_modules/sambamba/index_bams.config \
+  -profile docker \
+  --bam "data/tiny_dataset/map/tiny_v2.sort.bam"
+
+./nextflow src/nf_modules/sambamba/split_bams.nf \
+  -c src/nf_modules/sambamba/split_bams.config \
+  -profile docker \
+  --bam "data/tiny_dataset/map/tiny_v2.bam"