language/haskell: wrap HLS with itself to find itself

This commit is contained in:
Ching Pei Yang 2026-05-20 16:49:39 +02:00
commit 39ff04fffa
No known key found for this signature in database
GPG key ID: B3841364253DC4C8
2 changed files with 17 additions and 1 deletions

View file

@ -116,11 +116,22 @@ in {
cmd = mkOption { cmd = mkOption {
type = nullOr (listOf str); type = nullOr (listOf str);
default = [ 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" "--lsp"
]; ];
description = "Command for haskell-language-server."; description = "Command for haskell-language-server.";
}; };
on_attach = mkOption { on_attach = mkOption {
type = nullOr luaInline; type = nullOr luaInline;
description = "Function to run when HLS is attached. When null, mappings from the mappings option are used."; description = "Function to run when HLS is attached. When null, mappings from the mappings option are used.";

View file

@ -23,6 +23,11 @@ in {
paths = [pkgs.haskellPackages.haskell-language-server]; paths = [pkgs.haskellPackages.haskell-language-server];
meta.mainProgram = "haskell-language-server-wrapper"; meta.mainProgram = "haskell-language-server-wrapper";
buildInputs = [pkgs.makeBinaryWrapper]; 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") }) "haskell-language-server-wrapper")
"--lsp" "--lsp"
]; ];