diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 247e1d0..9b9c5c9 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -155,30 +155,71 @@ set(BUILD_TESTING OFF CACHE BOOL "" FORCE)
 set(BUILD_STATIC_LIBS ON)
 set(BUILD_SHARED_LIBS OFF)
 
-include(FetchContent)
-include(dependencies/fetch-vendor.cmake)
+# Bundled yescrypt
+include(dependencies/yescrypt.cmake)
 
-# Bundled liblzma
-include(dependencies/xz.cmake)
+option(IMAGER_USE_SYSTEM_DEPS "Use system libraries instead of bundled FetchContent dependencies" OFF)
 
-# Bundled zstd
-include(dependencies/zstd.cmake)
+if(IMAGER_USE_SYSTEM_DEPS)
+    # The project normally ignores MacPorts to avoid accidental dependency
+    # discovery. pkg-config is deliberate in system-dependency mode.
+    if(APPLE)
+        list(REMOVE_ITEM CMAKE_IGNORE_PATH /opt/local/bin)
+        list(REMOVE_ITEM CMAKE_IGNORE_PATH /opt/local/lib)
+        list(REMOVE_ITEM CMAKE_SYSTEM_IGNORE_PATH /opt/local/bin)
+        list(REMOVE_ITEM CMAKE_SYSTEM_IGNORE_PATH /opt/local/lib)
+    endif()
 
-# Remote nghttp2
-include(dependencies/nghttp2.cmake)
+    find_package(PkgConfig REQUIRED)
+    pkg_check_modules(LIBARCHIVE REQUIRED IMPORTED_TARGET libarchive)
+    pkg_check_modules(LIBUSB REQUIRED IMPORTED_TARGET libusb-1.0)
+    pkg_check_modules(LIBLZMA REQUIRED IMPORTED_TARGET liblzma)
+    pkg_check_modules(ZLIB REQUIRED IMPORTED_TARGET zlib)
+    pkg_check_modules(ZSTD REQUIRED IMPORTED_TARGET libzstd)
 
-# Bundled yescrypt
-include(dependencies/yescrypt.cmake)
+    if(APPLE)
+        list(APPEND CMAKE_IGNORE_PATH /opt/local/bin /opt/local/lib)
+        list(APPEND CMAKE_SYSTEM_IGNORE_PATH /opt/local/bin /opt/local/lib)
+    endif()
+
+    set(LibArchive_LIBRARIES PkgConfig::LIBARCHIVE)
+    set(LibArchive_INCLUDE_DIR "${LIBARCHIVE_INCLUDE_DIRS}")
+    set(LIBUSB_LIBRARIES PkgConfig::LIBUSB)
+    set(LIBUSB_INCLUDE_DIR "${LIBUSB_INCLUDE_DIRS}")
+    set(LIBLZMA_LIBRARIES PkgConfig::LIBLZMA)
+    set(LIBLZMA_INCLUDE_DIRS "${LIBLZMA_INCLUDE_DIRS}")
+    set(ZLIB_LIBRARIES PkgConfig::ZLIB)
+    set(ZLIB_INCLUDE_DIRS "${ZLIB_INCLUDE_DIRS}")
+    set(ZSTD_LIBRARIES PkgConfig::ZSTD)
+    set(ZSTD_INCLUDE_DIR "${ZSTD_INCLUDE_DIRS}")
+else()
+    include(FetchContent)
+    include(dependencies/fetch-vendor.cmake)
 
+    # Bundled liblzma
+    include(dependencies/xz.cmake)
 
-# Bundled zlib
-include(dependencies/zlib.cmake)
+    # Bundled zstd
+    include(dependencies/zstd.cmake)
 
-# Bundled libarchive
-include(dependencies/libarchive.cmake)
+    # Remote nghttp2; only required by the bundled curl build.
+    include(dependencies/nghttp2.cmake)
+
+    # Bundled zlib
+    include(dependencies/zlib.cmake)
+
+    # Bundled libarchive
+    include(dependencies/libarchive.cmake)
+
+    # Bundled libusb (for rpiboot Compute Module support)
+    include(dependencies/libusb.cmake)
+endif()
 
 # libcurl
-if(APPLE)
+if(IMAGER_USE_SYSTEM_DEPS)
+    find_package(CURL REQUIRED)
+    set(CURL_INCLUDE_DIR ${CURL_INCLUDE_DIRS})
+elseif(APPLE)
     # 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.
@@ -192,10 +233,6 @@ else()
     include(dependencies/curl.cmake)
 endif()
 
-
-# Bundled libusb (for rpiboot Compute Module support)
-include(dependencies/libusb.cmake)
-
 # Add dependencies
 if (APPLE)
     include(mac/Platform.cmake)
@@ -540,7 +577,10 @@ else()
     include(linux/PlatformPackaging.cmake)
 endif()
 
-add_dependencies(${PROJECT_NAME} zlibstatic yescrypt usb-1.0-static)
+add_dependencies(${PROJECT_NAME} yescrypt)
+if(NOT IMAGER_USE_SYSTEM_DEPS)
+    add_dependencies(${PROJECT_NAME} zlibstatic usb-1.0-static)
+endif()
 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
