 (defun doom-install-package (name &optional plist)
   "Installs package NAME with optional quelpa RECIPE (see `quelpa-recipe' for an
 example; the package name can be omitted)."
+  (cl-check-type name symbol)
   (doom-initialize-packages)
   (when (and (package-installed-p name)
              (not (package-built-in-p name)))

(defun doom-package-different-recipe-p (name)
  "Return t if a package named NAME (a symbol) has a different recipe than it
was installed with."
  (cl-assert (symbolp name) t)
  (when (package-installed-p name)
    (let ((quelpa-recipe (assq name quelpa-cache))
          (doom-recipe (assq name doom-packages)))

;;;###autoload
(defun doom-get-depending-on (name)
  "Return a list of packages that depend on the package named NAME."
  (cl-check-type name symbol)
  (when (package-built-in-p name)
    (error "Can't get the dependency tree for built-in packages"))
  (if-let* ((desc (cadr (assq name package-alist))))
      (mapcar #'package-desc-name (package--used-elsewhere-p desc nil t))
    (error "Couldn't find %s, is it installed?" name)))

;;;###autoload
(defun doom-get-dependencies-for (name &optional only)
  "Return a list of dependencies for a package."
  (cl-check-type name symbol)
  (when (package-built-in-p name)
    (error "Can't get the dependency tree for built-in packages"))
  (package--get-deps name only))
