есть shue.cabal файл, это описание твоего пакета, и его зависимостей, он основной
есть package.yaml файл, его сделали, потому что многим не понравился синтаксис cabal-файла, и просто решили мол давайте в ямле все писать, и генерировать из этого cabal-файл
есть stack.yaml файл, там указываются, откуда пакеты нужно брать, и каких версий. Поле resolver это по сути имя снепшота, в котором перечислены на stackage все версии какого-то большого набора библиотек, которые вместо собираются с каким-то конкретным ghc. И всякие extra-deps для указания конкретных версий или путей до пакетов, если в резолвере неподходящие
обычно stack.yaml трогать не нужно, когда будет нужно, это будет и так ясно
cabal-файл трогать тоже не нужно, если есть package.yaml, но всегда можно удалить package.yaml и просто вручную кабал-файл редактировать
то есть менять нужно только package.yaml или кабал-файл, если yaml не нравится