Maybe your original GADT could be sugar for something that doesn't use GADTs like the following (which works):
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
import GHC.TypeLits
data Foo = Foo
data Bar = Bar
data (:::) sy t = (:=) sy t
data RNil = RNil
data (:&) a b = a :& b
type family Rec (xs :: [*]) :: *
type instance Rec (x ': xs) = x :& Rec xs
type instance Rec '[] = RNil
infix 3 :=
infixr 2 :&
baz :: Num ty => Rec [Foo ::: String, Bar ::: ty]
baz = Foo := "foo" :& Bar := 1 :& RNil
bang = case baz of
( Foo := a :& Bar := b :& RNil) -> (a, b)