# Install haskell-language-server with Homebrew, apk, MacPorts, Nix, pacman, scoop

Integration point for ghcide and haskell-ide-engine. One IDE to rule them all. Version 2.14.0.0 via Homebrew; verified 2026-04-27.

## Install

```sh
sudo av install brew:haskell-language-server
```

Additional install commands:

### macOS

- Homebrew (100%):

```sh
brew install haskell-language-server
```

  Evidence: local Homebrew formula metadata

- MacPorts (94%):

```sh
sudo port install haskell-language-server
```

  Evidence: MacPorts ports tree: devel/haskell-language-server/Portfile from https://api.github.com/repos/macports/macports-ports/git/trees/master?recursive=1

### Linux

- apk (92%):

```sh
sudo apk add haskell-language-server
```

  Evidence: Alpine Linux edge package indexes: haskell-language-server from https://dl-cdn.alpinelinux.org/alpine/edge/testing/x86_64/APKINDEX.tar.gz

- Nix (92%):

```sh
nix profile install nixpkgs#haskell-language-server
```

  Evidence: nixpkgs package indexes: haskell-language-server from https://raw.githubusercontent.com/NixOS/nixpkgs/master/pkgs/top-level/all-packages.nix

- pacman (92%):

```sh
sudo pacman -S haskell-language-server
```

  Evidence: Arch Linux sync databases: haskell-language-server from https://geo.mirror.pkgbuild.com/extra/os/x86_64/extra.db.tar.gz

### Windows

- Scoop (92%):

```sh
scoop install main/haskell-language-server
```

  Evidence: Scoop official bucket manifest trees: bucket/haskell-language-server.json from https://api.github.com/repos/ScoopInstaller/Main/git/trees/master?recursive=1

## Package facts

- **Package key:** brew:haskell-language-server
- **Package manager:** Homebrew
- **Package manager page:** <https://formulae.brew.sh/formula/haskell-language-server>
- **Version:** 2.14.0.0
- **Source summary:** Integration point for ghcide and haskell-ide-engine. One IDE to rule them all
- **Homepage:** <https://github.com/haskell/haskell-language-server>
- **Repository:** <https://github.com/haskell/haskell-language-server>
- **Upstream docs:** <https://haskell-language-server.readthedocs.io/>
- **License:** Apache-2.0
- **Source archive:** <https://github.com/haskell/haskell-language-server/releases/download/2.14.0.0/haskell-language-server-2.14.0.0-src.tar.gz>
- **Last updated:** 2026-04-27T10:45:09Z
- **Generated:** 2026-07-09T07:20:21+00:00

## Executables

- ghcide-bench-9.12 (cli)
- ghcide-bench-9.12.3 (cli)
- ghcide-bench-9.14 (cli)
- ghcide-bench-9.14.1 (cli)
- haskell-language-server-9.12 (cli)
- haskell-language-server-9.12.3 (cli)
- haskell-language-server-9.14 (cli)
- haskell-language-server-9.14.1 (cli)
- haskell-language-server-wrapper (cli)
- ghcide-bench-9.12 (alias)
- ghcide-bench-9.12.3 (alias)
- ghcide-bench-9.14 (alias)
- ghcide-bench-9.14.1 (alias)
- haskell-language-server-9.12 (alias)
- haskell-language-server-9.12.3 (alias)
- haskell-language-server-9.14 (alias)
- haskell-language-server-9.14.1 (alias)
- haskell-language-server-wrapper (alias)

## Dependencies

- gmp

## Build dependencies

- cabal-install
- ghc
- ghc@9.12

## Uses from macOS

- libffi
- ncurses

## Install behavior

- Post-install hook: not defined
- Caveats: haskell-language-server is built for GHC versions 9.12.3, 9.14.1. You need to provide your own GHC or install one with brew install ghc
- Bottle: available on arm64_linux, arm64_sequoia, arm64_sonoma, arm64_tahoe, sonoma, x86_64_linux

## Freshness

- Page generated: 2026-07-09
- Package-manager version: 2.14.0.0
- Package-manager updated: 2026-04-27
- Local data: ok
- Upstream repository: https://github.com/haskell/haskell-language-server
- info: No cached GitHub release or tag data was available.
## Project history and usage

Haskell Language Server is the official Language Server Protocol implementation for Haskell. Its package-manager identity matters because it turns a historically difficult editor-integration story into a single installable tool that editors can discover through the standard LSP model.

The project grew out of the Haskell IDE ecosystem around ghcide, hie-bios, plugins, and the earlier haskell-ide-engine effort. The Homebrew formula description preserves that consolidation story directly: HLS became the integration point for ghcide and haskell-ide-engine rather than another standalone editor-specific tool.

### Project history

The documentation describes HLS as a language server that speaks LSP to editor clients, which lets editors reuse a common protocol for diagnostics, completions, hover information, definition lookup, references, formatting, and related IDE functions. That positioned HLS as infrastructure rather than a single editor extension.

A central technical lineage is ghcide. The HLS component documentation describes ghcide as a library for Haskell IDE tooling, paired with hie-bios for discovering project structure, dependencies, extensions, and build information. HLS packages that foundation with plugins and release engineering so users do not have to assemble the stack manually.

The 1.0.0 changelog framed the release as a celebratory stabilization point, with internal changes, bug fixes, performance work, GHC 8.10.4 support, HIE DB integration for references and symbols, and plugins for import disambiguation, shadowed imports, evaluation, formatting, and tactics. Later changelog entries show the project repeatedly tracking new GHC families and pruning old compiler support.

### Adoption history

HLS adoption follows the spread of LSP-capable Haskell editing in VS Code, Emacs, Vim/Neovim, and other clients. Its docs emphasize that editor configuration is client-specific while the server side remains the same executable family, which is exactly the distribution shape package managers like Homebrew, Nix, Arch, MacPorts, and Scoop are good at providing.

The package appears on Hackage with a long version series and a broad dependency set around ghcide, hls-plugin-api, hie-bios, hiedb, LSP libraries, formatters, and refactoring tools. That public package record is evidence that HLS became a normal Haskell package ecosystem artifact, not only a GitHub binary release.

Binary distribution is unusually important for HLS because GHC version compatibility is central to user experience. The installation docs instruct users to install the wrapper and the server executables for the GHC versions they work with; Homebrew exposes that shape through versioned executables such as haskell-language-server-wrapper and per-GHC server names.

### How it is used

Typical use is indirect: an editor or LSP client launches haskell-language-server-wrapper in a Haskell project, and the wrapper selects an HLS binary compatible with the project compiler. Users then get type diagnostics, completions, hover, code actions, references, formatting integration, Cabal-file assistance, and other plugin-provided features.

Project discovery often depends on hie.yaml, Cabal, Stack, or implicit hie-bios rules. That makes HLS especially sensitive to how a project is built, which is why package users care about the wrapper, the supported-GHC matrix, and the documentation around troubleshooting build cradles.

### Why package nerds care

For package nerds, HLS is a stress test of language-tool distribution. It must line up GHC ABIs, plugin versions, Hackage dependencies, native binaries, editor expectations, and project build tools. A package-manager upgrade can materially change editor behavior because it changes the compiler matrix and plugin set.

It also represents a broader packaging pattern: move editor intelligence into a protocol-speaking server, then let editors and operating-system package managers share that server. In Haskell, where compiler versions and build plans are especially specific, that pattern is more demanding than simply shipping one static CLI.

### Timeline

- 2020: Public Hackage candidate versions for haskell-language-server appeared, including 0.1.0.0.
- 2021: The 1.0.0 changelog marked a stabilization point with HIE DB integration, plugin work, and GHC 8.10.4 support.
- 2023: The 2.x line continued the ghcide/plugin architecture while tracking newer GHC releases.
- 2026: The 2.14.0.0 package record and changelog show bindists for multiple GHC versions, including GHC 9.14.1 and 9.12.x.

### Related projects

- ghcide supplies core IDE services and is documented by HLS as a library for Haskell IDE tooling.
- hie-bios discovers project layout and build settings for Haskell tools.
- haskell-ide-engine is part of the predecessor ecosystem that HLS consolidated.
- GHC, Cabal, Stack, Hackage, HIE DB, HLint, Ormolu, Fourmolu, and editor LSP clients form the surrounding toolchain.

### Sources

- <https://formulae.brew.sh/formula/haskell-language-server>
- <https://github.com/haskell/haskell-language-server>
- <https://hackage.haskell.org/package/haskell-language-server>
- <https://haskell-language-server.readthedocs.io/en/stable/components/ghcide.html>
- <https://haskell-language-server.readthedocs.io/en/stable/installation.html>
- <https://haskell-language-server.readthedocs.io/en/stable/what-is-hls.html>
- <https://raw.githubusercontent.com/haskell/haskell-language-server/master/ChangeLog.md>


## Security Notes

broad file, network, media, or database tool signal.

- **Geiger risk:** blue / medium
- broad file, network, media, or database tool signal


## Configuration and credential file locations

These source-backed paths show where this package keeps local settings or durable credentials. Automic Vault can use them as review targets for secret scanning, migration, and command approval.


## Configuration files

- Unix: <project-root>/hie.yaml
## Source Database Details

- **Source Database:** Homebrew formula API
- **Tap:** homebrew/core
- **Full Name:** haskell-language-server
- **Version Scheme:** 0
- **Revision:** 0
- **Head Version:** HEAD
- **Bottle Stable Root URL:** <https://ghcr.io/v2/homebrew/core>
- **Deprecated:** no
- **Disabled:** no
- **Keg Only:** no
- **URL Keys:** head, stable

## Other Package-Manager Records

- Nix - haskell-language-server: normalized package name match | nixpkgs package indexes: haskell-language-server from https://raw.githubusercontent.com/NixOS/nixpkgs/master/pkgs/top-level/all-packages.nix
- apk - haskell-language-server - 2.9.0.0-r0: normalized package name match | Alpine Linux edge package indexes: haskell-language-server from https://dl-cdn.alpinelinux.org/alpine/edge/testing/x86_64/APKINDEX.tar.gz | Official Haskell Language Server implementation | https://github.com/haskell/haskell-language-server
- pacman - haskell-language-server - 2.3.0.0-47: normalized package name match | Arch Linux sync databases: haskell-language-server from https://geo.mirror.pkgbuild.com/extra/os/x86_64/extra.db.tar.gz | LSP server for GHC | https://github.com/haskell/haskell-language-server#readme
- MacPorts - haskell-language-server: normalized package name match | MacPorts ports tree: devel/haskell-language-server/Portfile from https://api.github.com/repos/macports/macports-ports/git/trees/master?recursive=1
- Scoop - main/haskell-language-server: normalized package name match | Scoop official bucket manifest trees: bucket/haskell-language-server.json from https://api.github.com/repos/ScoopInstaller/Main/git/trees/master?recursive=1


## Related links

- [Source-control packages](https://www.automicvault.com/pkg/source-control-tools/) - Belongs to a source-control command family.
- [Secret-risk packages](https://www.automicvault.com/pkg/secret-risk-packages/) - Has protected-tool coverage, approval-gate, or non-low Geiger security signals.
- [Terminal utility packages](https://www.automicvault.com/pkg/terminal-utilities/) - Matched terminal and command-line workflow metadata.
- [Text processing packages](https://www.automicvault.com/pkg/text-processing-tools/) - Matched text, document, or structured-data processing metadata.
- [cabal-install](https://www.automicvault.com/pkg/brew/cabal-install/) - Build dependency declared by Homebrew.
- [ghc](https://www.automicvault.com/pkg/brew/ghc/) - Build dependency declared by Homebrew.
- [ghc@9.12](https://www.automicvault.com/pkg/brew/ghc-9-12/) - Build dependency declared by Homebrew.
- [ansible-language-server](https://www.automicvault.com/pkg/brew/ansible-language-server/) - Shares av.db curated category or tags: cli, developer-tools, language-server, lsp.
- [dhall-lsp-server](https://www.automicvault.com/pkg/brew/dhall-lsp-server/) - Shares av.db curated category or tags: cli, developer-tools, haskell, language-server, lsp.
- [erlang-language-platform](https://www.automicvault.com/pkg/brew/erlang-language-platform/) - Shares av.db curated category or tags: cli, developer-tools, ide, language-server, lsp.
- [expert](https://www.automicvault.com/pkg/brew/expert/) - Shares av.db curated category or tags: cli, developer-tools, language-server, lsp.
- [fennel-ls](https://www.automicvault.com/pkg/brew/fennel-ls/) - Shares av.db curated category or tags: cli, developer-tools, language-server, lsp.
- [fortls](https://www.automicvault.com/pkg/brew/fortls/) - Shares av.db curated category or tags: cli, developer-tools, language-server, lsp.
- [gopls](https://www.automicvault.com/pkg/brew/gopls/) - Shares av.db curated category or tags: cli, developer-tools, language-server, lsp.
- [helm-ls](https://www.automicvault.com/pkg/brew/helm-ls/) - Shares av.db curated category or tags: cli, developer-tools, language-server, lsp.
- [jq-lsp](https://www.automicvault.com/pkg/brew/jq-lsp/) - Local metadata places this package in an adjacent workflow. Shared terms: cli, developer, developer-tools, integration, language.

## Combined YAML source

View the package source record on GitHub. [combined/haskell-language-server.yml](https://github.com/automic-vault/db/blob/main/combined/haskell-language-server.yml)


## Sources

- Nucleus package database
- Geiger risk classifier
- package-page enrichment
- curated configuration and credential file locations
- curated package history
- package version freshness
- av.db category and tag curation
- package relationship graph
- external package-manager database matches
- cross-ecosystem install command graph
