This is awful:
do t' <- newName "t"; let t = varT t
extendTerm "TypedTerm" [t'] [t|Typed $t|] \_ ->
defaultExtTerm {
typeVar = Just [[t|Type $t|]],
typeAbs = Just [[t|Type $t|]],
typeApp = Just [[t|Type $t|]],
typeConst = Just [[t|Type $t|]]
}
There must be a way to do better.