# Install haskell-stack with Homebrew, chocolatey, apt, winget, apk, dnf, MacPorts, Nix, pacman, scoop

Cross-platform program for developing Haskell projects. Version 3.11.1 via Homebrew; verified 2026-06-28.

## Install

```sh
sudo av install brew:haskell-stack
```

Additional install commands:

### macOS

- Homebrew (100%):

```sh
brew install haskell-stack
```

  Evidence: local Homebrew formula metadata

- MacPorts (94%):

```sh
sudo port install stack
```

  Evidence: MacPorts ports tree: lang/stack/Portfile from https://api.github.com/repos/macports/macports-ports/git/trees/master?recursive=1

### Linux

- Debian apt (92%):

```sh
sudo apt install haskell-stack
```

  Evidence: Debian stable package indexes: haskell-stack from https://deb.debian.org/debian/dists/stable/main/binary-amd64/Packages.xz

- apk (92%):

```sh
sudo apk add stack
```

  Evidence: Alpine Linux edge package indexes: stack from https://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz

- dnf (92%):

```sh
sudo dnf install ghc-aeson-warning-parser
```

  Evidence: Fedora Rawhide package metadata: ghc-aeson-warning-parser from https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/repodata/e5ca8ce900cd68f5419e1c39ae517343100b306336cbaeb70a3c153121d95094-primary.xml.zst

- Nix (92%):

```sh
nix profile install nixpkgs#stack
```

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

- pacman (92%):

```sh
sudo pacman -S stack
```

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

### Windows

- Chocolatey (92%):

```sh
choco install haskell-stack
```

  Evidence: Chocolatey community package catalog: haskell-stack from http://community.chocolatey.org/api/v2/Packages?$filter=IsLatestVersion&$select=Id&$top=1000&$skiptoken='11','gpg4win-vanilla'

- winget (92%):

```sh
winget install --id commercialhaskell.stack -e
```

  Evidence: Windows Package Manager source index: commercialhaskell.stack from https://cdn.winget.microsoft.com/cache/source.msix

- Scoop (92%):

```sh
scoop install main/stack
```

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

## Package facts

- **Package key:** brew:haskell-stack
- **Package manager:** Homebrew
- **Package manager page:** <https://formulae.brew.sh/formula/haskell-stack>
- **Version:** 3.11.1
- **Source summary:** Cross-platform program for developing Haskell projects
- **Homepage:** <https://haskellstack.org/>
- **Repository:** <https://github.com/commercialhaskell/stack>
- **Upstream docs:** <https://docs.haskellstack.org/>
- **License:** BSD-3-Clause
- **Source archive:** <https://github.com/commercialhaskell/stack/archive/refs/tags/v3.11.1.tar.gz>
- **Last updated:** 2026-06-28T12:56:20-04:00
- **Generated:** 2026-07-08T07:18:31+00:00

## Executables

- stack (cli)
- stack (alias)

## Dependencies

- gmp

## Build dependencies

- cabal-install
- ghc

## Uses from macOS

- libffi

## Install behavior

- Post-install hook: not defined
- Bottle: available on arm64_linux, arm64_sequoia, arm64_sonoma, arm64_tahoe, sonoma, x86_64_linux

## Freshness

- Page generated: 2026-07-08
- Package-manager version: 3.11.1
- Package-manager updated: 2026-06-28
- Local data: ok
- Upstream repository: https://github.com/commercialhaskell/stack
- Upstream latest detected: v3.11.1 (current)
## Project history and usage

Stack is a cross-platform command-line build tool for Haskell projects. It became important by making GHC installation, package snapshots, project templates, builds, tests, scripts, uploads, and reproducible project configuration accessible through one executable.

Its package history is tied to Stackage: Stack made snapshot-based Haskell development a normal workflow, complementing Cabal and Hackage by giving users a resolver-centered way to pin a coherent package set.

### Project history

The Stack changelog records the first public release on 2015-06-09 as the Haskell Tool Stack, beta quality. Within weeks it added index updates, package removal from HTTPS and Git, install support, test-running improvements, stack init, resolver support, Hackage upload support, stack new, stack solver, stack path, stack dot, stack upgrade, and the --stack-yaml flag.

The documentation describes Stack as a program for developing Haskell projects, aimed at new and experienced users, with support across Linux, macOS, and Windows. Its core promise is orchestration: select a GHC, read stack.yaml, build dependencies and project packages, and keep the toolchain reproducible enough for local development and CI.

Over time Stack grew beyond the early snapshot-and-build loop. The changelog shows Docker and Nix integration, script interpreter support, Hackage authentication and upload behavior, Hpack integration, lock files, snapshot listing, Windows/MSYS handling, and later support for newer GHC and Cabal versions.

### Adoption history

Stack adoption spread through Haskell projects that wanted a consistent command line across operating systems and CI machines. Its docs and Hackage package page both emphasize Linux, macOS, and Windows support, while package managers distribute it as a single stack executable.

The tool became part of the Commercial Haskell and Stackage workflow, but it also stayed in the broader Haskell package ecosystem through Hackage releases, GitHub releases, and distribution by Homebrew, MacPorts, Nix, Arch, Debian, Ubuntu, Chocolatey, Scoop, and winget as reflected in package metadata.

Stack's adoption history also includes coexistence with Cabal. The docs present Cabal, Hackage, and Stackage as related pieces: Cabal defines and builds packages, Hackage hosts packages, Stackage supplies curated snapshots, and Stack coordinates project workflows around those components.

### How it is used

Typical package-manager usage begins with installing stack, then running commands such as stack new, stack init, stack setup, stack build, stack test, stack exec, stack ghci, stack run, stack script, stack upload, and stack path inside or around a Haskell project.

A project-level stack.yaml selects a snapshot or compiler and project packages; global and user configuration live under Stack's root/config locations. This split is why the package has both project configuration and user credentials paths: builds are project-specific, but Hackage upload credentials are user-specific.

Stack is also used as a bootstrapper. It can install or select GHC, build a project with the versions implied by its snapshot, and run tools in the resulting environment. That makes it attractive for tutorials and CI scripts because one command can reproduce a build plan that would otherwise require several separate tools.

### Why package nerds care

Stack is package-nerd material because it changed the default conversation about Haskell dependency management from only solving constraints to selecting known-good snapshots. That made build reproducibility, resolver names, and curated package sets visible in everyday project files.

It also sits at the intersection of package managers. Homebrew installs Stack as an OS package; Stack then installs or selects GHC and builds Haskell packages from Hackage or snapshots. This layering is both powerful and occasionally surprising, so packagers care about exactly which Stack version is distributed and how it handles GHC, MSYS2, Docker, Nix, Hackage Security, and credentials.

The changelog is a compact history of Haskell ecosystem pressure points: Windows path handling, Hackage authentication changes, Docker behavior, Nix mode, Cabal library compatibility, Stackage server API changes, and evolving GHC support.

### Timeline

- 2015-06-09: First public release as the Haskell Tool Stack.
- 2015-06-23: 0.1.0.0 added stack new, stack solver, stack path, and expanded Haddock support.
- 2015-06-26: 0.1.1.0 added stack dot, stack upgrade, STACK_EXE, and --stack-yaml.
- 2017: The 1.x line included Docker-related changes, script interpreter work, Hackage credentials fixes, and Nix integration improvements.
- 2023: The changelog records Hackage-only releases and Stack 2.x maintenance around snapshots, Docker, and GHC support.
- 2026: Stack 3.x changelog entries show ongoing work for newer GHC/Cabal, Stackage API changes, Windows MSYS2 defaults, Backpack planning, and Hackage authentication behavior.

### Related projects

- Stackage provides curated snapshot sets that Stack uses as resolvers.
- Hackage is the package repository Stack reads from and can upload to.
- Cabal provides package descriptions and build infrastructure beneath many Stack operations.
- GHC is the compiler Stack installs, selects, and invokes.
- Hpack, Docker, Nix, MSYS2, and Hackage Security are recurring integration points in Stack's release history.

### Sources

- <https://docs.haskellstack.org/>
- <https://docs.haskellstack.org/en/stable/ChangeLog/>
- <https://docs.haskellstack.org/en/stable/tutorial/>
- <https://formulae.brew.sh/formula/haskell-stack>
- <https://github.com/commercialhaskell/stack>
- <https://hackage.haskell.org/package/stack>
- <https://raw.githubusercontent.com/commercialhaskell/stack/master/ChangeLog.md>


## Security Notes

narrow executable package without higher-risk signals.

- **Geiger risk:** green / low
- narrow executable package without higher-risk signals


## 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: ./stack.yaml, $STACK_ROOT/config.yaml, /etc/stack/config.yaml, $XDG_CONFIG_HOME/stack/config.yaml

## Credential files

- Unix: $STACK_ROOT/upload/credentials.json
## Source Database Details

- **Source Database:** Homebrew formula API
- **Tap:** homebrew/core
- **Full Name:** haskell-stack
- **Aliases:** stack
- **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

- Debian apt - haskell-stack - 2.15.7-1: normalized package name match | Debian stable package indexes: haskell-stack from https://deb.debian.org/debian/dists/stable/main/binary-amd64/Packages.xz | The Haskell Tool Stack | https://haskellstack.org
- Ubuntu apt - haskell-stack - 2.9.3.1-1: normalized package name match | Ubuntu 24.04 LTS package indexes: haskell-stack from https://archive.ubuntu.com/ubuntu/dists/noble/universe/binary-amd64/Packages.gz | The Haskell Tool Stack | https://haskellstack.org
- Chocolatey - haskell-stack: normalized package name match | Chocolatey community package catalog: haskell-stack from http://community.chocolatey.org/api/v2/Packages?$filter=IsLatestVersion&$select=Id&$top=1000&$skiptoken='11','gpg4win-vanilla'
- winget - commercialhaskell.stack: normalized package name match | Windows Package Manager source index: commercialhaskell.stack from https://cdn.winget.microsoft.com/cache/source.msix
- MacPorts - stack: installed executable or alias match | MacPorts ports tree: lang/stack/Portfile from https://api.github.com/repos/macports/macports-ports/git/trees/master?recursive=1
- Nix - stack: installed executable or alias match | nixpkgs package indexes: stack from https://raw.githubusercontent.com/NixOS/nixpkgs/master/pkgs/top-level/all-packages.nix
- apk - stack - 3.9.3-r0: installed executable or alias match | Alpine Linux edge package indexes: stack from https://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz | The Haskell Tool Stack | https://haskellstack.org/
- apk - stack-bash-completion - 3.9.3-r0: installed executable or alias match | Alpine Linux edge package indexes: stack-bash-completion from https://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz | Bash completions for stack | https://haskellstack.org/
- apk - stack-fish-completion - 3.9.3-r0: installed executable or alias match | Alpine Linux edge package indexes: stack-fish-completion from https://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz | Fish completions for stack | https://haskellstack.org/
- apk - stack-zsh-completion - 3.9.3-r0: installed executable or alias match | Alpine Linux edge package indexes: stack-zsh-completion from https://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz | Zsh completions for stack | https://haskellstack.org/
- dnf - ghc-aeson-warning-parser - 0.1.1-41.fc44: installed executable or alias match | Fedora Rawhide package metadata: ghc-aeson-warning-parser from https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/repodata/e5ca8ce900cd68f5419e1c39ae517343100b306336cbaeb70a3c153121d95094-primary.xml.zst | Haskell aeson-warning-parser library | https://hackage.haskell.org/package/aeson-warning-parser
- dnf - ghc-aeson-warning-parser-devel - 0.1.1-41.fc44: installed executable or alias match | Fedora Rawhide package metadata: ghc-aeson-warning-parser-devel from https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/repodata/e5ca8ce900cd68f5419e1c39ae517343100b306336cbaeb70a3c153121d95094-primary.xml.zst | Haskell aeson-warning-parser library development files | https://haskellstack.org
- dnf - ghc-aeson-warning-parser-doc - 0.1.1-41.fc44: installed executable or alias match | Fedora Rawhide package metadata: ghc-aeson-warning-parser-doc from https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/repodata/e5ca8ce900cd68f5419e1c39ae517343100b306336cbaeb70a3c153121d95094-primary.xml.zst | Haskell aeson-warning-parser library documentation | https://haskellstack.org
- dnf - ghc-aeson-warning-parser-prof - 0.1.1-41.fc44: installed executable or alias match | Fedora Rawhide package metadata: ghc-aeson-warning-parser-prof from https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/repodata/e5ca8ce900cd68f5419e1c39ae517343100b306336cbaeb70a3c153121d95094-primary.xml.zst | Haskell aeson-warning-parser profiling library | https://haskellstack.org
- dnf - ghc-casa-client - 0.0.3-41.fc44: installed executable or alias match | Fedora Rawhide package metadata: ghc-casa-client from https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/repodata/e5ca8ce900cd68f5419e1c39ae517343100b306336cbaeb70a3c153121d95094-primary.xml.zst | Haskell casa-client library | https://hackage.haskell.org/package/casa-client
- dnf - ghc-casa-client-devel - 0.0.3-41.fc44: installed executable or alias match | Fedora Rawhide package metadata: ghc-casa-client-devel from https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/repodata/e5ca8ce900cd68f5419e1c39ae517343100b306336cbaeb70a3c153121d95094-primary.xml.zst | Haskell casa-client library development files | https://haskellstack.org


## Related links

- [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.
- [Developer build packages](https://www.automicvault.com/pkg/developer-build-tools/) - Matched build, compiler, generator, or developer workflow metadata.
- [Networking and protocol packages](https://www.automicvault.com/pkg/networking-protocol-tools/) - Matched network, protocol, or remote-service 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.
- [add-determinism](https://www.automicvault.com/pkg/brew/add-determinism/) - Shares av.db curated category or tags: build-tools, cli, developer-tools, reproducible-builds.
- [ant](https://www.automicvault.com/pkg/brew/ant/) - Shares av.db curated category or tags: build-tool, build-tools, cli, developer-tools.
- [dub](https://www.automicvault.com/pkg/brew/dub/) - Shares av.db curated category or tags: build-tool, build-tools, cli, developer-tools, package-management.
- [fobis](https://www.automicvault.com/pkg/brew/fobis/) - Shares av.db curated category or tags: build-tool, build-tools, cli, developer-tools.
- [fypp](https://www.automicvault.com/pkg/brew/fypp/) - Shares av.db curated category or tags: build-tool, build-tools, cli, developer-tools.
- [grunt-cli](https://www.automicvault.com/pkg/brew/grunt-cli/) - Shares av.db curated category or tags: build-tool, build-tools, cli, developer-tools.
- [hotbuild](https://www.automicvault.com/pkg/brew/hotbuild/) - Shares av.db curated category or tags: build-tool, build-tools, cli, developer-tools.
- [leiningen](https://www.automicvault.com/pkg/brew/leiningen/) - Shares av.db curated category or tags: build-tool, build-tools, cli, developer-tools.
- [haskell-language-server](https://www.automicvault.com/pkg/brew/haskell-language-server/) - Both packages touch the same language runtime or ecosystem. Shared terms: cli, developer, developer-tools, gmp, haskell.

## Combined YAML source

View the package source record on GitHub. [combined/haskell-stack.yml](https://github.com/automic-vault/db/blob/main/combined/haskell-stack.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
