{ helix, symlinkJoin, makeWrapper, pkgs, }: let languageServers = [ # C & C++ pkgs.clang-tools # Dart pkgs.dart # Go pkgs.gopls # Java pkgs.jdt-language-server # Kotlin pkgs.kotlin-language-server # Lua pkgs.lua-language-server # Nix pkgs.nil # Python pkgs.python3Packages.python-lsp-server pkgs.python3Packages.python-lsp-ruff # Rust pkgs.rust-analyzer # Zig pkgs.zls # PHP pkgs.nodePackages_latest.intelephense # TypeScript pkgs.nodePackages_latest.typescript-language-server # Bash pkgs.nodePackages_latest.bash-language-server # HTML & CSS tooling pkgs.emmet-ls # HTML & CSS & JSON & ESLint pkgs.vscode-langservers-extracted # Markdown pkgs.marksman # LaTeX pkgs.texlab # Typst pkgs.tinymist # YAML pkgs.yaml-language-server # TOML pkgs.taplo ]; debugAdapters = [ # C & C++ pkgs.lldb # Go pkgs.delve ]; clipboardProviders = [ pkgs.wl-clipboard ]; in symlinkJoin { name = helix.pname; paths = [helix]; buildInputs = [makeWrapper]; postBuild = '' wrapProgram $out/bin/${helix.meta.mainProgram} \ --suffix PATH : ${pkgs.lib.makeBinPath ( languageServers ++ debugAdapters ++ clipboardProviders )} ''; inherit (helix) meta; }