diff --git a/src/add.c b/src/add.c
index 9583ff265c54d02efcd707e03d42ead078719b52..2df4dc8431698d6f1a5b55c63ae39a2c76d5710f 100644
--- a/src/add.c
+++ b/src/add.c
@@ -88,9 +88,6 @@ static int add_main(void *ctx, struct apk_database *db, struct apk_string_array
 	if (actx->virtpkg) {
 		apk_blob_t b = APK_BLOB_STR(actx->virtpkg);
 
-		if (non_repository_check(db))
-			return -1;
-
 		apk_blob_pull_dep(&b, db, &virtdep);
 		if (APK_BLOB_IS_NULL(b) || virtdep.conflict ||
 		    virtdep.result_mask != APK_DEPMASK_ANY ||
@@ -99,6 +96,9 @@ static int add_main(void *ctx, struct apk_database *db, struct apk_string_array
 			return -1;
 		}
 
+		if (virtdep.name->name[0] != '.' && non_repository_check(db))
+			return -1;
+
 		virtpkg = apk_pkg_new();
 		if (virtpkg == NULL) {
 			apk_error("Failed to allocate virtual meta package");