diff --git a/roles/borgbackup-client/tasks/main.yml b/roles/borgbackup-client/tasks/main.yml
index cbec020964d520c07acc8d469e29951139224705..f71fce3391fb8e1ddaaedbdeb58cfc0f61a37db3 100644
--- a/roles/borgbackup-client/tasks/main.yml
+++ b/roles/borgbackup-client/tasks/main.yml
@@ -41,6 +41,12 @@
     owner: root
     group: root
 
+- name: Init borg repository
+  command:
+    cmd: /usr/bin/borgmatic init -e repokey
+  register: borg_init
+  changed_when: '"does not exist" in borg_init.stderr'
+
 - name: Deploy borg cron
   template:
     src: "cron.d/borg.j2"
diff --git a/roles/borgbackup-client/templates/borgmatic/config.yaml.j2 b/roles/borgbackup-client/templates/borgmatic/config.yaml.j2
index 123a57acc0a6cf72d75f1dd72b72082a3cdbb96e..dcd1b36ba4cb617e15a0b1cfe15144ba5058965a 100644
--- a/roles/borgbackup-client/templates/borgmatic/config.yaml.j2
+++ b/roles/borgbackup-client/templates/borgmatic/config.yaml.j2
@@ -38,12 +38,17 @@ storage:
     umask: 0077
     lock_wait: 5
     archive_name_format: '{hostname}-{now}'
+{% set extra_init = borg.extra_prune | default([]) %}
 {% set extra_prune = borg.extra_prune | default([]) %}
 {% set extra_create = borg.extra_create | default([]) %}
 {% set extra_check = borg.extra_check | default([]) %}
+{% if extra_init or extra_prune or extra_create or extra_check %}
     extra_borg_options:
+{% endif %}
+{% if extra_init %}
         # Extra command-line options to pass to "borg init".
-        init: --make-parent-dirs {% for cmd in borg.extra_init | default([]) %}--{{ cmd }} {% endfor %}
+        init: {% for cmd in extra_init %}--{{ cmd }} {% endfor %}
+{% endif %}
 {% if extra_prune  %}
         # Extra command-line options to pass to "borg prune".
         prune: {% for cmd in extra_prune  %}--{{ cmd }} {% endfor %}