diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d455de5f11babf488fd02293dca8d9eb595a75fa..7854dfc83d37cdde4e35338d406360394e46a87b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -133,7 +133,7 @@ ivette:
   artifacts:
     name: coverage-$CI_JOB_NAME
     paths:
-      - coverage/coverage.tar.xz
+      - coverage/*.tar.xz
     expire_in: 24h
 
 .build_template: &coverage
diff --git a/nix/mk_tests.nix b/nix/mk_tests.nix
index 94b36bd5ab0e48d234f69c9c72e26673e11dc7d5..36623cfc4332ff4d737978d5a6781ab82d3b93f0 100644
--- a/nix/mk_tests.nix
+++ b/nix/mk_tests.nix
@@ -89,8 +89,8 @@ stdenvNoCC.mkDerivation {
   postBuild =
     if cover
     then ''
-      bisect-ppx-report cobertura --coverage-path=coverage coverage.xml
-      tar cfJ coverage.tar.xz coverage.xml
+      bisect-ppx-report cobertura --coverage-path=coverage coverage-$pname.xml
+      tar cfJ coverage.tar.xz coverage-$pname.xml
     ''
     else "" ;
 
@@ -102,8 +102,13 @@ stdenvNoCC.mkDerivation {
   '';
 
   # No installation required
-  installPhase = ''
-    mkdir $out
-    cp -r coverage.tar.xz $out
-  '';
+  installPhase =
+    if cover
+    then ''
+      mkdir -p $out
+      cp -r coverage.tar.xz $out/$pname.tar.xz
+    ''
+    else ''
+      touch $out
+    '';
 }
diff --git a/nix/ts-api.nix b/nix/ts-api.nix
index 7662fdbcb2a394c82218cd8bfc939e58d07d6ad2..5d181a1a77828c79abb308442b8edd916786354d 100644
--- a/nix/ts-api.nix
+++ b/nix/ts-api.nix
@@ -31,13 +31,13 @@ stdenv.mkDerivation rec {
     mkdir coverage
     export BISECT_FILE="$(pwd)/coverage/bisect-"
     make -C ivette check-api
-    bisect-ppx-report cobertura --coverage-path=coverage coverage.xml
-    tar cfJ coverage.tar.xz coverage.xml
+    bisect-ppx-report cobertura --coverage-path=coverage coverage-$pname.xml
+    tar cfJ coverage.tar.xz coverage-$pname.xml
   '';
 
   # No installation required
   installPhase = ''
-    mkdir $out
-    cp -r coverage.tar.xz $out
+    mkdir -p $out
+    cp -r coverage.tar.xz $out/$pname.tar.xz
   '';
 }