diff --git a/uiop/os.lisp b/uiop/os.lisp
index fbdfb8cbb934755048cc25d34cc78219caad11bf..71d584822ab336f23c8c86ec66490635cf573dd4 100644
--- a/uiop/os.lisp
+++ b/uiop/os.lisp
@@ -41,7 +41,7 @@ keywords explicitly."
 
   (defun os-unix-p ()
     "Is the underlying operating system some Unix variant?"
-    (or (featurep '(:or :unix :cygwin)) (os-macosx-p)))
+    (or (featurep '(:or :unix :cygwin :haiku)) (os-macosx-p)))
 
   (defun os-windows-p ()
     "Is the underlying operating system Microsoft Windows?"
@@ -69,10 +69,10 @@ except on ABCL where it might change between FASL compilation and runtime."
     (loop* :with o
            :for (feature . detect) :in '((:os-unix . os-unix-p) (:os-macosx . os-macosx-p)
                                          (:os-windows . os-windows-p)
-                                         (:genera . os-genera-p) (:os-oldmac . os-oldmac-p)
-                                         (:haiku . os-haiku-p)
-                                         (:mezzano . os-mezzano-p))
-           :when (and (or (not o) (eq feature :os-macosx)) (funcall detect))
+                                         (:os-genera . os-genera-p) (:os-oldmac . os-oldmac-p)
+                                         (:os-haiku . os-haiku-p)
+                                         (:os-mezzano . os-mezzano-p))
+           :when (and (or (not o) (eq feature :os-macosx) (eq feature :os-haiku)) (funcall detect))
            :do (setf o feature) (pushnew feature *features*)
            :else :do (setf *features* (remove feature *features*))
            :finally