summaryrefslogtreecommitdiff
path: root/docker_builds/docker_ghcup/Dockerfile
blob: 4ac21f8b124390d5fe5f86d70762d6ce74897047 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
FROM debian:buster

ARG GHC_VERSION=
ARG USER=haskeller
ENV PATH="/home/${USER}/.cabal/bin:/home/${USER}/.ghcup/bin:${PATH}"

RUN echo "Dear Sir or Madam,"                           && \
    echo ""                                             && \
    echo "Welcome to Miguel's Docker Builder."          && \
    echo "We are building a fresh Haskell Environment." && \
    echo ""                                             && \
    echo "This Build is parametrized as follows:"       && \
    echo ""                                             && \
    echo "GHC_VERSION = ${GHC_VERSION}"                 && \
    echo "PATH        = ${PATH}"                        && \
    echo "USER        = ${USER}"                        && \
    echo ""                                             && \
    echo "[STEP 1 : INSTALLING DEPS VIA APT]"           && \
    echo ""                                             && \
    apt-get update                                      && \
    apt-get install -y  \
        curl            \
        xz-utils        \
        gcc             \
        make            \
        libtinfo5       \
        libgmp-dev      \
        zlib1g-dev                                      && \
    echo ""                                             && \
    echo "[STEP 2 : CREATE USER & HOMEDIR]"             && \
    echo ""                                             && \
    useradd -ms /bin/bash ${USER}                       && \
    echo ""                                             && \
    echo "[STEP 3 : DOWNLOAD AND INSTALL ghcup]"        && \
    echo ""                                             && \
    su ${USER} -c "mkdir -p ~/.ghcup/bin"               && \
    su ${USER} -c "curl https://gitlab.haskell.org/haskell/ghcup/raw/master/ghcup > ~/.ghcup/bin/ghcup" && \
    su ${USER} -c "chmod +x ~/.ghcup/bin/ghcup"         && \
    echo ""                                             && \
    echo "[STEP 4 : INSTALL ghc VIA ghcup]"             && \
    echo ""                                             && \
    su ${USER} -c "ghcup install ${GHC_VERSION}"        && \
    su ${USER} -c "ghcup set ${GHC_VERSION}"            && \
    echo ""                                             && \
    echo "[STEP 5 : INSTALL & UPDATE cabal]"            && \
    echo ""                                             && \
    su ${USER} -c "ghcup install-cabal"                 && \
    su ${USER} -c "cabal update"                        && \
    su ${USER} -c "cabal new-install cabal-install"     && \
    echo ""                                             && \
    echo "[FINISHED! THANK YOU FOR YOUR PATIENCE]"      && \
    echo ""                                             

USER ${USER}
ENV PATH="/home/${USER}/.cabal/bin:/home/${USER}/.ghcup/bin:${PATH}"
RUN cabal install ghcid
RUN cabal install hlint