These Dev Containers provide the following tools:
- The Haskell Toolchain (GHC, Cabal (the tool), Stack, and HLS)
- Git
- HLint
- yamllint
- ShellCheck
- hadolint
The tools in the Haskell Toolchain are installed at /usr/local/bin
1,2.
ℹ️ Executables installed with Cabal (at $HOME/.cabal/bin or $HOME/.local/bin ) or Stack or Pip (at $HOME/.local/bin )take precedence over the same executable installed at /usr/local/sbin , /usr/local/bin , etc. |
---|
VS Code is used as IDE, with the following extensions pre‑installed:
- .gitignore Generator
- EditorConfig
- GitHub Pull Requests and Issues
- GitLab Workflow
- GitLens — Git supercharged
- Pinned to v11.7.0 due to unsolicited AI content in recent versions.
- Git Graph
- hadolint
- Haskell
- markdownlint
- Path Intellisense
- Project Manager
- Resource Monitor
- ShellCheck
- YAML
The parent images are multi‑arch (linux/amd64
, linux/arm64/v8
)
GHC musl images. They are based on Alpine Linux (that is
musl libc and BusyBox).
They contain unofficial binary distributions of GHC (that is, ones not released by the GHC developers). That is because:
- the official GHC binary distributions for Alpine Linux/x86_64 have known
bugs
; and there are no official binary distributions for Alpine Linux/AArch64.
Stack's global configuration (/etc/stack/config.yaml
) sets
system-ghc: true
and install-ghc: false
. That
ensures that only the GHC available in the Dev Containers is used.
For local/remote usage with VS Code, please follow the instructions at Developing inside a Container.
For use with Github Codespaces, please follow the instruction at Creating a codespace for a repository.
See the Version Matrix for detailed information.
What makes these Dev Containers unique:
- Default mount:
- source: empty directory
- target:
/home/vscode
- type: volume
- Codespace only mount:
- source: root of this repository
- target:
/workspaces
- type: misc
- Default path:
/home/vscode
- Default user:
vscode
- uid: 1000 (auto-assigned)
- gid: 1000 (auto-assigned)
- Lifecycle scripts:
onCreateCommand
: home directory setuppostAttachCommand
: Codespace only: Check for Dev Container updates
Data in the following locations is persisted:
- The user's home directory (
/home/vscode
3) - The Dev Container's workspace (
/workspaces
)
This is accomplished either via a volume or bind mount (or loop device on Codespaces) and is preconfigured.
ℹ️ Codespaces: A 'Full Rebuild Container' resets the home directory! This is never necessary unless you want exactly that. |
---|
Choose Manually via PATH
when asked the following question:
The code in this directory is not part of ghc-musl (the software) and, with the exceptions noted in LICENSE, is distributed under the terms of the MIT License.