Skip to content

Topics (advanced)

This part of the guide provides pages dedicated to specific topics.

Stack root

The Stack root is a directory where Stack stores important information

Stack work directories

Stack work directories are directories within a local project or package directory in which Stack stores files created during the build process.

Snapshot location

How to specify the location of snapshots.

Package location

How to specify the location of packages.

Snapshot specification

How to specify the contents of a snapshot.

stack.yaml vs a Cabal file

The difference between Stack's project-level configuration file and a Cabal file describing a Haskell package.

Script interpreter

How to use Stack's script interpreter.

Docker integration

Stack has support for automatically performing builds inside a Docker container.

Nix integration

Stack can be configured to integrate with Nix, a purely functional package manager.

Non-standard project initialization

You may need to configure Stack to work with an existing project that has one or more Cabal files but no Stack project-level configuration file.

Debugging

Advice on debugging using Stack.

Editor integration

Advice on intergrating Stack with code editors.

Stack and Visual Studio Code

Advice on using Stack with Visual Studio Code and its Haskell extension.

Developing on Windows

Advice on using Stack on Windows.

Shell auto-completion

Adding support for the tab completion of standard Stack arguments to the shell programs Bash, Zsh (the Z shell) and fish.

CI

Advice on using Stack with CI.

Travis CI

Advice on using Stack on Travis CI.

Azure CI

Advice on using Stack on Azure CI.

Lock files

The contents of Stack's lock files, how they are used, and how they are created and updated.

Haskell and C code

Advice on using Stack with Haskell packages that include C source code, including those with a C main function.