The structure of this repo is:
./solutions
|- day-1.hs
|- day-2.hs
|- ...
stack-configuration-files
the package.yaml contains one executable per day. To run a solution just run stack run day-X -- path-to-input. The advantage of doing this way is that we have good integration with haskell language server and we have one simple haskell file per solution. Another approach would be to use stack script, the problem is that hls does not integrate well with that stack feature, hence is better to create a project with a resolver so the language server can pick up the ghc version correctly. Of course, having a global ghc instalation is an option too, but I'd prefer to not go that way.