Компилял всю ночь и пол дня haskell-language-server и зависимости через stack. Оказалось, что хаскель не очень-то дружит с системным ghc (несмотря на опцию в конфиге stack) и динамической линковкой с системными хаскель либами - lsp не цепляет системные либы из-за чего всё окно покрывается ошибками. То есть вообще всё хаскелевское желательно собирать локально и линковать статически, лол.
Но по крайней мере hls не падает сразу после старта как hie и собирается в отличии от ghc-mod.
На третий день я таки смог завести haskell language server и заставить его работать с emacs. Оно даже все импорты находит (по крайней мере в stack проджектах).
Рабочим вариантом оказалось:
- бинарник hls, установленный через ghcup-hs, через него же поставил cabal и ghc;
- hoogle, установленный через cabal-install;
- статически слинкованый системный stack (поставил из aur).
Собирать hls вручную это вообще не вариант без какого-нибудь i9, потому что собирается он по времени примерно как firefox с pgo флагом.