diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index c1a96564db28163d10f7bc9e435d799cbcc56f98..89531864e312a289c6bdc7d3956021cc45ab3bf3 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -76,6 +76,16 @@ reuse:
     # GitLab cache system, and will be reused between pipelines of the same
     # project. Note that the .cache directory name is special.
     CI_ONIRO_MANIFEST_MIRROR_REPO_DIR: $CI_PROJECT_DIR/.cache/repo-mirror
+    # XML snippet to inject as a "local manifest" for repo. Those allow arbitrary
+    # modifications to the project structure to happen before "repo sync" is used
+    # to construct the workspace.
+    #
+    # The default interpreter for the local manifest is plain "echo". For some
+    # more complex cases, where inline shell is required, use "eval" instead
+    # and put "cat" echo into the local manifest, coupled with a here-doc
+    # value.
+    CI_ONIRO_REPO_WORKSPACE_LOCAL_MANIFEST: ""
+    CI_ONIRO_REPO_WORKSPACE_LOCAL_MANIFEST_INTERPRETER: echo
     # Directory where repo workspace is constructed.
     CI_ONIRO_REPO_WORKSPACE_DIR: $CI_PROJECT_DIR/.tmp/repo-workspace
     # Use fastest cache compression algorithm, as bulk of the cache is
@@ -169,7 +179,7 @@ reuse:
     - echo "Initializing repository workspace from $CI_ONIRO_MANIFEST_REPO_URL and $CI_ONIRO_MANIFEST_REPO_REV"
     - repo init --reference "$CI_ONIRO_MANIFEST_MIRROR_REPO_DIR" --manifest-url "$CI_ONIRO_MANIFEST_REPO_URL" --manifest-branch "$CI_ONIRO_MANIFEST_REPO_REV" --no-clone-bundle
     - mkdir -p "${CI_ONIRO_REPO_WORKSPACE_DIR}/.repo/local_manifests"
-    - test -n "${CI_ONIRO_REPO_WORKSPACE_LOCAL_MANIFEST:-}" && echo "$CI_ONIRO_REPO_WORKSPACE_LOCAL_MANIFEST" | tee "${CI_ONIRO_REPO_WORKSPACE_DIR}/.repo/local_manifests/local.xml"
+    - test -n "${CI_ONIRO_REPO_WORKSPACE_LOCAL_MANIFEST:-}" && "$CI_ONIRO_REPO_WORKSPACE_LOCAL_MANIFEST_INTERPRETER" "$CI_ONIRO_REPO_WORKSPACE_LOCAL_MANIFEST" | tee "${CI_ONIRO_REPO_WORKSPACE_DIR}/.repo/local_manifests/local.xml"
     - echo "Synchronizing repository workspace"
     - repo sync --force-sync
     - gl_section_close repo_workspace_setup