 (autoload 'use-package "use-package" nil nil 'macro)
 
 (defmacro doom! (&rest modules)
-  "Bootstrap DOOM Emacs.
+  "Bootstraps DOOM Emacs and its modules.
 
 MODULES is an malformed plist of modules to load."
   (let (init-forms config-forms mode)

      (setq doom-init-p t))))

(defun doom-initialize-load-path (&optional force-p)
  (when (or force-p (not doom--package-load-path))
    ;; We could let `package-initialize' fill `load-path', but it does more than
    ;; that alone (like load autoload files). If you want something prematurely

           if (file-exists-p path)
           collect path))

(defun doom-module-flags (module submodule)
  "Returns a list of flags provided for MODULE SUBMODULE."
  (gethash (cons module submodule) doom-modules))

(defun doom-module-enabled-p (module submodule)
  "Returns t if MODULE SUBMODULE is enabled (ie. present in `doom-modules')."
  (and (hash-table-p doom-modules)
       (doom-module-flags module submodule)
       t))

(defun doom-module-enable (module submodule &optional flags)
  "Adds MODULE and SUBMODULE to `doom-modules', overwriting it if it exists.

MODULE is a keyword, SUBMODULE is a symbol, FLAGS is a list of arbitrary
symbols:

  (doom-module-enable :lang 'haskell '(+intero))

Used by `require!' and `depends-on!'."
  (let ((key (cons module submodule)))
