-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathDockerfile
50 lines (38 loc) · 1.8 KB
/
Dockerfile
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
FROM debian:bookworm-slim
# Install basic packages
RUN apt-get update -q
RUN apt-get install -qy build-essential wget curl sudo openssh-client git
# LATEX:
# Install full texlive distribution (very large)
ARG TL_VERSION=2023
ARG TL_MIRROR=https://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
RUN cd /tmp && \
wget --directory-prefix /tmp ${TL_MIRROR} && \
zcat < install-tl-unx.tar.gz | tar xf - && \
cd install-tl-* && \
perl ./install-tl --no-interaction --no-doc-install --no-src-install
ENV PATH="${PATH}:/usr/local/texlive/${TL_VERSION}/bin/x86_64-linux"
# Update packages and tlmgr
RUN tlmgr init-usertree
RUN tlmgr update --self --all
RUN tlmgr install latexindent chktex
# install inkscape (for tikz) and minted (for code highlighting)
RUN apt-get install -qy inkscape python3 python3-pip pipx
RUN pipx install pygments
# C++
# Already installed GCC as part of build-essential
RUN apt-get install -qy clang-format
# Rust
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -qy
# Elixir
RUN apt-get install -qy elixir
# TLA
# Required Java, toolbox used is included in the VSCode extension
RUN apt-get install -qy default-jdk
# Haskell
RUN apt-get install -qy libffi-dev libffi8ubuntu1 libgmp-dev libgmp10 libncurses-dev libncurses5 libtinfo5
RUN curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | BOOTSTRAP_HASKELL_NONINTERACTIVE=1 BOOTSTRAP_HASKELL_GHC_VERSION=latest BOOTSTRAP_HASKELL_CABAL_VERSION=latest BOOTSTRAP_HASKELL_INSTALL_STACK=1 BOOTSTRAP_HASKELL_INSTALL_HLS=1 BOOTSTRAP_HASKELL_ADJUST_BASHRC=P sh
# Clean up to reduce image size
RUN apt-get clean autoclean && apt-get autoremove -y
RUN rm -rf /var/lib/{apt,dpkg,cache,log}/ /tmp/* /usr/local/texlive/${TL_VERSION}/*.log
CMD /usr/bin/bash