diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+# 0.6.3.0
+
+* Add support for `deriving ... via GenericBuildable T`
+
 # 0.6.2.0
 
 * Cleared `hspec` upper bound
diff --git a/fmt.cabal b/fmt.cabal
--- a/fmt.cabal
+++ b/fmt.cabal
@@ -1,5 +1,5 @@
 name:                fmt
-version:             0.6.2.0
+version:             0.6.3.0
 synopsis:            A new formatting library
 description:
   A new formatting library that tries to be simple to understand while still
diff --git a/lib/Fmt.hs b/lib/Fmt.hs
--- a/lib/Fmt.hs
+++ b/lib/Fmt.hs
@@ -120,6 +120,7 @@
 
   -- ** Generic formatting
   genericF,
+  GenericBuildable(..),
 )
 where
 
diff --git a/lib/Fmt/Internal/Generic.hs b/lib/Fmt/Internal/Generic.hs
--- a/lib/Fmt/Internal/Generic.hs
+++ b/lib/Fmt/Internal/Generic.hs
@@ -65,6 +65,27 @@
 genericF :: (Generic a, GBuildable (Rep a)) => a -> Builder
 genericF = gbuild . from
 
+{- | A newtype for deriving a generic 'Buildable' instance for any type
+using @DerivingVia@.
+
+>>> :set -XDerivingVia
+>>> :{
+data Bar = Bar { x :: Bool, y :: [Int] }
+  deriving stock Generic
+  deriving Buildable via GenericBuildable Bar
+:}
+
+>>> pretty (Bar True [1,2,3])
+Bar:
+  x: True
+  y: [1, 2, 3]
+
+-}
+newtype GenericBuildable a = GenericBuildable a
+
+instance (GBuildable (Rep a), Generic a) => Buildable (GenericBuildable a) where
+  build (GenericBuildable a) = genericF a
+
 ----------------------------------------------------------------------------
 -- GBuildable
 ----------------------------------------------------------------------------
