diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 19f931b..ca78f8f 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -158,26 +158,40 @@ set(BUILD_SHARED_LIBS OFF)
 include(FetchContent)
 
 # Bundled liblzma
+find_package(LibLZMA)
+if(NOT LIBLZMA_FOUND)
 include(dependencies/xz.cmake)
+endif()
 
 # Bundled zstd
+find_package(zstd ${ZSTD_VERSION})
+if(NOT zstd_FOUND)
 include(dependencies/zstd.cmake)
+else()
+set(ZSTD_LIBRARIES zstd::libzstd_shared)
+set(ZSTD_INCLUDE_DIR ${zstd_INCLUDE_DIR})
+endif()
 
 # Remote nghttp2
-include(dependencies/nghttp2.cmake)
 
 # Bundled yescrypt
 include(dependencies/yescrypt.cmake)
 
 
 # Bundled zlib
+find_package(ZLIB)
+if(NOT ZLIB_FOUND)
 include(dependencies/zlib.cmake)
+endif()
 
 # Bundled libarchive
+find_package(LibArchive)
+if(NOT LibArchive_FOUND)
 include(dependencies/libarchive.cmake)
+endif()
 
 # libcurl
-if(APPLE)
+if(APPLE OR TRUE)
     # In version 8.15.0, libcurl dropped support for Secure Transport, because it
     # does not implement TLS 1.3. Unfortunately, there was no replacement Network.framework implementation,
     # so on macOS we're forced to use the macOS SDK version of libcurl, including libcurl's own OpenSSL-analogue.
@@ -193,7 +207,13 @@ endif()
 
 
 # Bundled libusb (for rpiboot Compute Module support)
+find_package(PkgConfig REQUIRED)
+pkg_check_modules(LIBUSB libusb-1.0)
+if(NOT LIBUSB_FOUND)
 include(dependencies/libusb.cmake)
+else()
+set(LIBUSB_INCLUDE_DIR ${LIBUSB_INCLUDE_DIRS})
+endif()
 
 # Add dependencies
 if (APPLE)
@@ -553,7 +573,6 @@ else()
     include(linux/PlatformPackaging.cmake)
 endif()
 
-add_dependencies(${PROJECT_NAME} zlibstatic yescrypt usb-1.0-static)
 include_directories(${CURL_INCLUDE_DIR} ${LibArchive_INCLUDE_DIR} ${LIBLZMA_INCLUDE_DIRS} ${LIBDRM_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIRS} ${ZSTD_INCLUDE_DIR} ${YESCRYPT_INCLUDE_DIR} ${LIBUSB_INCLUDE_DIR})
 
 # Link different Qt components based on build type
