Due to how lsp integrates with flycheck, it needs to take over all linting responsibilities. Hence we need to use efm-langserver to execute shellcheck for us. It's a bit messy, but end result works pretty well.