      (require 'finder-inf nil t)
      (require 'package)
      (require 'straight)
-     (let ((packages (delete-dups
-                      (append (mapcar #'car package-alist)
-                              (mapcar #'car package--builtins)
-                              (mapcar #'intern (hash-table-keys straight--build-cache))
-                              (mapcar #'car (doom-package-list 'all))
-                              nil))))
+     (let ((packages
+            (if (and doom--help-packages-list (null current-prefix-arg))
+                doom--help-packages-list
+              (message "Generating packages list for the first time...")
+              (sit-for 0.1)
+              (setq doom--help-packages-list
+                    (delete-dups
+                     (append (mapcar #'car package-alist)
+                             (mapcar #'car package--builtins)
+                             (mapcar #'intern (hash-table-keys straight--build-cache))
+                             (mapcar #'car (doom-package-list 'all))
+                             nil))))))
        (unless (memq guess packages)
          (setq guess nil))
        (list

         (completing-read (if guess
                              (format "Select Doom package to search for (default %s): "
                                      guess)
                            "Describe Doom package: ")
                          packages nil t nil nil
                          (if guess (symbol-name guess))))))))
  (require 'core-packages)
  (doom-initialize-packages)
  (if (or (package-desc-p package)

           ":(exclude)*.org"))
     "\n" t)))

(defvar doom--help-packages-list nil)
;;;###autoload
(defun doom/help-packages (package)
  "Like `describe-package', but for packages installed by Doom modules.
