Perhaps something simpler could be a solution such as just providing this in Predef (taking what @Ichoran suggested a step further):
extension [A](a: A) def tup = a match case _ : Unit => EmptyTuple case _ => Tuple1(a)