diff --git a/externals/nx_tzdb/CMakeLists.txt b/externals/nx_tzdb/CMakeLists.txt
index c15110fd6..67599faf4 100644
--- a/externals/nx_tzdb/CMakeLists.txt
+++ b/externals/nx_tzdb/CMakeLists.txt
@@ -12,27 +12,35 @@ find_program(GNU_DATE date)
 set(CAN_BUILD_NX_TZDB true)
 
 if ("${GIT}" STREQUAL "GIT-NOTFOUND")
-    message("git program not found")
     set(CAN_BUILD_NX_TZDB false)
 endif()
 if ("${GNU_MAKE}" STREQUAL "GNU_MAKE-NOTFOUND")
-    message("GNU make program not found")
     set(CAN_BUILD_NX_TZDB false)
 endif()
 if ("${GNU_DATE}" STREQUAL "GNU_DATE-NOTFOUND")
-    message("GNU date program not found")
+    set(CAN_BUILD_NX_TZDB false)
+endif()
+if ("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows")
+    # tzdb_to_nx currently requires a posix-compliant host
     set(CAN_BUILD_NX_TZDB false)
 endif()
 
 set(NX_TZDB_VERSION "220816")
 set(NX_TZDB_ARCHIVE "${CMAKE_CURRENT_BINARY_DIR}/${NX_TZDB_VERSION}.zip")
 
+set(NX_TZDB_DIR "${CMAKE_CURRENT_BINARY_DIR}/nx_tzdb")
+
 if ((NOT ${CAN_BUILD_NX_TZDB} OR ${YUZU_DOWNLOAD_TIME_ZONE_DATA}) AND NOT EXISTS ${NX_TZDB_ARCHIVE})
     set(NX_TZDB_DOWNLOAD_URL "https://github.com/lat9nq/tzdb_to_nx/releases/download/${NX_TZDB_VERSION}/${NX_TZDB_VERSION}.zip")
 
-    set(NX_TZDB_DIR "${CMAKE_CURRENT_BINARY_DIR}/nx_tzdb" CACHE PATH "Path to Switch-style time zone data")
+    message(STATUS "Downloading time zone data from ${NX_TZDB_DOWNLOAD_URL}...")
+    file(DOWNLOAD ${NX_TZDB_DOWNLOAD_URL} ${NX_TZDB_ARCHIVE}
+        STATUS NX_TZDB_DOWNLOAD_STATUS)
+    list(GET NX_TZDB_DOWNLOAD_STATUS 0 NX_TZDB_DOWNLOAD_STATUS_CODE)
+    if (NOT "${NX_TZDB_DOWNLOAD_STATUS_CODE}" STREQUAL "0")
+        message(FATAL_ERROR "Time zone data download failed (status code ${NX_TZDB_DOWNLOAD_STATUS_CODE})")
+    endif()
 
-    file(DOWNLOAD ${NX_TZDB_DOWNLOAD_URL} ${NX_TZDB_ARCHIVE})
     file(ARCHIVE_EXTRACT
         INPUT
             ${NX_TZDB_ARCHIVE}