diff --git a/modules/plugins/languages/haskell.nix b/modules/plugins/languages/haskell.nix index 38f2f014..835d1b39 100644 --- a/modules/plugins/languages/haskell.nix +++ b/modules/plugins/languages/haskell.nix @@ -116,11 +116,22 @@ in { cmd = mkOption { type = nullOr (listOf str); default = [ - "${pkgs.haskellPackages.haskell-language-server}/bin/haskell-language-server-wrapper" + (getExe (pkgs.symlinkJoin { + name = "haskell-language-server-wrapper"; + paths = [pkgs.haskellPackages.haskell-language-server]; + meta.mainProgram = "haskell-language-server-wrapper"; + buildInputs = [pkgs.makeBinaryWrapper]; + # wrap HLS-wrapper so it can find the actual binary + postBuild = '' + wrapProgram $out/bin/haskell-language-server-wrapper \ + --prefix PATH : ${haskellPackages.haskell-language-server}/bin + ''; + })) "--lsp" ]; description = "Command for haskell-language-server."; }; + on_attach = mkOption { type = nullOr luaInline; description = "Function to run when HLS is attached. When null, mappings from the mappings option are used."; diff --git a/modules/plugins/lsp/presets/haskell-language-server.nix b/modules/plugins/lsp/presets/haskell-language-server.nix index f716b718..f360c6e7 100644 --- a/modules/plugins/lsp/presets/haskell-language-server.nix +++ b/modules/plugins/lsp/presets/haskell-language-server.nix @@ -23,6 +23,11 @@ in { paths = [pkgs.haskellPackages.haskell-language-server]; meta.mainProgram = "haskell-language-server-wrapper"; buildInputs = [pkgs.makeBinaryWrapper]; + # wrap HLS-wrapper so it can find the actual binary + postBuild = '' + wrapProgram $out/bin/haskell-language-server-wrapper \ + --prefix PATH : ${pkgs.haskellPackages.haskell-language-server}/bin + ''; }) "haskell-language-server-wrapper") "--lsp" ];