This package provides a GHC.Generics-based genericLiftWithPkg
function (intended for GHC 7.10 and earlier), as well as a
genericLift function (only available on GHC 8.0 and later),
both of which can be used for providing a
Language.Haskell.TH.Syntax.lift implementation. See the
documentation in the Language.Haskell.TH.Lift.Generics module
to get started.
Credit goes to Matthew Pickering for
suggesting this idea.
Note that due to API limitations, GHC.Generics wasn't powerful
enough to come up with the entirety of a lift implementation prior
to GHC 8.0. For this reason, genericLiftWithPkg requires you to
produce the package name yourself, which proves to be no small feat
(see the documentation for more info).
Luckily, you don't have to jump through as many hoops on GHC 8.0 and
later: simply use the genericLift function, and life is good.