             (puthash package t straight--success-cache)
             t))))))
 
+;;;;; Recipe overrides
+
+;;;###autoload
+(defun straight-override-recipe (melpa-style-recipe)
+  "Register MELPA-STYLE-RECIPE as a recipe override.
+This puts it in `straight-recipe-overrides', depending on the
+value of `straight-current-profile'."
+  (setf (alist-get
+         (car melpa-style-recipe)
+         (alist-get straight-current-profile straight-recipe-overrides))
+        (cdr melpa-style-recipe)))
+
 ;;;;; Rebuilding packages
 
 ;;;###autoload

precedence. Functions named like `straight--recipes-NAME-list',
etc. should be defined, where NAME is any element of this list."
  :type '(list symbol)
  :group 'straight)

;;;; Utility functions

              ;; Return the newly normalized recipe.
              plist))))))

(defun straight--get-overridden-recipe (package)
  "Given a PACKAGE symbol, check if it has an overridden recipe.
This means an entry in `straight-recipe-overrides'. If one is
found, return it as a MELPA-style recipe. Otherwise, return
nil."
  (cl-dolist (profile (mapcar #'car straight-profiles))
    (when-let ((recipes (alist-get profile straight-recipe-overrides)))
      (when-let ((recipe (assoc package recipes)))
        (cl-return recipe)))))

;;;;; Recipe registration

(defvar straight--build-keywords
