Most libraries and even frameworks like ihp that try to be favor ease of use rely on these language extensions. You can ofcourse place these directives once in the cabal file, but there's no getting around to learning what they do.
https://www.reddit.com/r/haskell/comments/je1t82/does_the_id...
[1] https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/deri...
[2] https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/line...
[3] https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/lamb...
[4] https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/bloc...
[5] https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/mult...
The extensions are very well vetted, and new versions of the language standard can be summed up as "enable extensions a, b, c by default." Plus library changes, of course.