Home

Awesome

Update: there is now an official DevContainer image for HIE, please use it instead! 🙏

DevContainer for HIE (Haskell IDE Engine)

What is this?

This is a DevContainer environment for Visual Studio Code, allowing automatically installing the Haskell compiler (GHC), HIE (Haskell IDE Engine), and the necessary Visual Studio Code extensions to set up a Haskell development environment with zero additional effort.

How to use this?

Follow the Getting Started instructions to configure your Visual Studio Code and Docker to use with DevContainers.

Place the .devcontainer directory in the root of your project, and the next time you load the project, Visual Studio Code will prompt to re-open the project in a container:

image

Note: building the container might take a few minutes until all dependencies have finished downloading.

How does it work?

Visual Studio Code supports Developing inside a Container - using a Docker image as a development environment. It automates the process of creating the container image, as well as installing additional required extensions into the editor.

Pressing Reopen in Container will perform the automated steps to launch the container, and set up the environment.

For more information and setup, read the official documentation: https://code.visualstudio.com/docs/remote/containers

What's in the box?

The Dockerfile contains the following:

  1. An image, based on hmemcpy/hie, an Alpine image that contains the Nix package manager, as well as the following:
    • Configuration for Cachix - a binary cache for Nix
    • Glasgow Haskell Compiler (GHC) version 8.6.5
    • HIE (haskell-ide-engine) for GHC 8.6.5
  2. A script to install some additional tools (such as git), as well as configuring a special user vscode to allow access from VSCode.

The devcontainer.json has some additional configuration for VSCode, in particular, the required extensions that have to be installed, and the name of the remote user (must match the one in the Dockerfile).

This is based on the Alpine devcontainer from Microsoft.