   (list (expand-file-name "modules/" doom-private-dir)
         doom-modules-dir)
   "A list of module root directories. Order determines priority.")
+
+(defvar doom-inhibit-module-warnings (not noninteractive)
+  "If non-nil, don't emit deprecated or missing module warnings at startup.")
 
 (defconst doom-obsolete-modules
   '((:feature (version-control (:emacs vc) (:ui vc-gutter))

          (make-hash-table :test 'equal
                           :size (if modules (length modules) 150)
                           :rehash-threshold 1.0)))
  (let (category m)
    (while modules
      (setq m (pop modules))
      (cond ((keywordp m) (setq category m))

                             (new (assq module obsolete)))
                   (let ((newkeys (cdr new)))
                     (if (null newkeys)
                         (message "WARNING %s is deprecated" key)
                       (message "WARNING %s is deprecated, enabling %s instead"
                                (list category module) newkeys)
                       (push category modules)
                       (dolist (key newkeys)
                         (push (if flags
                                   (nconc (cdr key) flags)
                                 (cdr key))
                               modules)
                         (push (car key) modules))
                       (throw 'doom-modules t))))
                 (if-let* ((path (doom-module-locate-path category module)))
                     (doom-module-set category module :flags flags :path path)
                   (message "WARNING Couldn't find the %s %s module" category module))))))))
  (when noninteractive
    (setq doom-inhibit-module-warnings t))
  `(setq doom-modules ',doom-modules))

(defvar doom-disabled-packages)
