This repository has been archived by the owner on Nov 30, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
haskell - change devcontainer to use GHCup (#1478)
- Loading branch information
1 parent
332298f
commit 5d16fbe
Showing
3 changed files
with
61 additions
and
42 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,25 +1,49 @@ | ||
# Use the [Choice] comment to indicate option arguments that should appear in VS Code UX | ||
# | ||
# [Choice] Haskell version: 9, 8 | ||
ARG VARIANT=8 | ||
FROM haskell:${VARIANT} | ||
FROM debian:bullseye-slim | ||
|
||
ENV LANG C.UTF-8 | ||
|
||
# Use the [Option] comment to specify true/false arguments that should appear in VS Code UX | ||
# | ||
# [Option] Install zsh | ||
ARG INSTALL_ZSH="true" | ||
# [Option] Upgrade OS packages to their latest versions | ||
ARG UPGRADE_PACKAGES="false" | ||
|
||
# Install needed packages and setup non-root user. Use a separate RUN statement to add your own dependencies | ||
# Install needed packages and setup non-root user. | ||
# Use a separate RUN statement to add your own dependencies | ||
ARG USERNAME=vscode | ||
ARG USER_UID=1000 | ||
ARG USER_GID=$USER_UID | ||
COPY library-scripts/*.sh /tmp/library-scripts/ | ||
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ | ||
RUN apt-get update \ | ||
&& export DEBIAN_FRONTEND=noninteractive \ | ||
&& /bin/bash /tmp/library-scripts/common-debian.sh "${INSTALL_ZSH}" "${USERNAME}" "${USER_UID}" "${USER_GID}" "${UPGRADE_PACKAGES}" "true" "true"\ | ||
&& apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* /tmp/library-scripts | ||
&& rm -rf /tmp/library-scripts \ | ||
&& apt-get install -y --no-install-recommends \ | ||
dpkg-dev \ | ||
gcc \ | ||
libc6-dev \ | ||
libffi-dev \ | ||
libgmp-dev \ | ||
libnuma-dev \ | ||
libtinfo-dev \ | ||
zlib1g-dev \ | ||
&& apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* | ||
|
||
# Install latest GHCup in the non-root user home | ||
USER $USERNAME | ||
|
||
RUN mkdir -p "$HOME/.ghcup/bin" \ | ||
&& curl -LJ "https://downloads.haskell.org/~ghcup/x86_64-linux-ghcup" -o "$HOME/.ghcup/bin/ghcup" \ | ||
&& chmod +x "$HOME/.ghcup/bin/ghcup" | ||
ENV PATH="/home/$USERNAME/.cabal/bin:/home/$USERNAME/.ghcup/bin:$PATH" | ||
|
||
# [Choice] GHC version: recommended, latest, 9.2, 9.0, 8.10, 8.8, 8.6 | ||
ARG GHC_VERSION="recommended" | ||
|
||
# [Optional] Uncomment this section to install additional OS packages. | ||
# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ | ||
# && apt-get -y install --no-install-recommends <your-package-list-here> | ||
# Use GHCup to install versions of main utilities | ||
# If you prefer to let the Haskell extension install everything on demand, | ||
# comment out the lines below. In that case, you may need to manually run "cabal update""." | ||
RUN ghcup install ghc "${GHC_VERSION}" --set \ | ||
&& ghcup install cabal recommended --set \ | ||
&& ghcup install stack recommended --set \ | ||
&& ghcup install hls recommended --set \ | ||
&& cabal update |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,33 +1,26 @@ | ||
{ | ||
"name": "Haskell (Community)", | ||
|
||
// Update the 'dockerfile' property if you aren't using the standard 'Dockerfile' filename. | ||
"build": { | ||
"dockerfile": "Dockerfile", | ||
"args": { | ||
// Update 'VARIANT' to pick a Haskell version: 9, 8 | ||
"VARIANT": "8" | ||
} | ||
"dockerfile": "Dockerfile", | ||
"args": { | ||
// Update 'GHC_VERSION' to pick a GHC version: recommended, latest, 9.2, 9.0, 8.10, 8.8, 8.6 | ||
"GHC_VERSION": "recommended" | ||
} | ||
}, | ||
// Configure tool-specific properties. | ||
"customizations": { | ||
// Configure properties specific to VS Code. | ||
"vscode": { | ||
// Set *default* container specific settings.json values on container create. | ||
"settings": { | ||
"haskell.manageHLS": "GHCup" | ||
}, | ||
// Add the IDs of extensions you want installed when the container is created. | ||
"extensions": [ | ||
"haskell.haskell" | ||
] | ||
} | ||
}, | ||
|
||
// Configure tool-specific properties. | ||
"customizations": { | ||
// Configure properties specific to VS Code. | ||
"vscode": { | ||
// Add the IDs of extensions you want installed when the container is created. | ||
"extensions": [ | ||
"haskell.haskell" | ||
] | ||
} | ||
}, | ||
|
||
// Use 'forwardPorts' to make a list of ports inside the container available locally. | ||
// "forwardPorts": [], | ||
|
||
// Use 'postCreateCommand' to run commands after the container is created. | ||
// "postCreateCommand": "uname -a", | ||
|
||
|
||
// Comment out to connect as root instead. To add a non-root user, see: https://aka.ms/vscode-remote/containers/non-root. | ||
"remoteUser": "vscode" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters