It would be better if liftReadPrec is used instead of liftReadsPrec.

instance Read1 NonEmpty where
     liftReadPrec rp rl = paren $ prec 5 $ do
          x <- rp
          Symbol ":|" <- lexP
          xs <- rl
          pure (x :| xs)