This is mostly for my sake in case I need it again but may help others avoid the pitfalls I faced, so sharing here.
Do NOT install stack, cabal, ghc, ghci, ghcid and what have you separately.
yay -S ghcup-hs-bin, check this link haskell.org/ghcup for other platforms.
Install ghc, stack and cabal using
ghcup tui. DO NOT INSTALL HLS YET!
[I]nstall recommended versions. Make sure hls supports that version here.
[S]et them as default.
cabal should be available on path.
Note: one tick = installed, another tick = default
I'm using built-in LSP along with nvim-lsp-installer plugin for convenience. Check this file full setup.
:LspInstallInfo should show a green
[I]nstall, drink your coffee, close and reopen file.
nvim-lspconfig nvim-lsp-installer nvim-cmp
Yes these simple steps took me almost a day of stumbling around. Hopefully, next time it'll be done in minutes.