I'm not thrilled by languages the do "rules for thee, not for me". (Another example: old Java had a two-valued enum type (bool) but you weren't allowed to make your own.)
That said the deriving mechanisms have been mostly exposed to the end used now in at least a few different ways.
Even more importantly, deriving doesn't change the semantics of the language. You could in principle do exactly the same things without deriving as you can with.