Great tutorial, thanks; I remember it taking me me a lot of trial and error to figure those out, so I wish we had it sooner!
I found that one disadvantage for this pattern is that it makes starting the new project a lot more time consuming. So I wanted to mention the cookiecutter template I was using which results on a project pretty similar to your example: GitHub - utdemir/hs-nix-template: A Haskell project template that uses Nix and comes with cabal-install, ghcid, ormolu, haskell-language-server and more. , it saves quite a bit of time setting all these up.