FROM nvidia/cuda:10.0-devel

RUN apt-get -qq update && apt-get -qq -y install curl bzip2 \
   && curl -sSL https://repo.continuum.io/miniconda/Miniconda2-latest-Linux-x86_64.sh -o /tmp/miniconda.sh \
   && bash /tmp/miniconda.sh -bfp /usr/local \
   && rm -rf /tmp/miniconda.sh \
   && conda install -y python=2 \
   && conda update conda \
   && apt-get -qq -y autoremove \
   && apt-get autoclean \
   && rm -rf /var/lib/apt/lists/* /var/log/dpkg.log \
   && conda clean --all --yes

ENV PATH /opt/conda/bin:$PATH

RUN apt-get update && \
    apt-get install -y --no-install-recommends \
    git \
    gcc \
    make \
    g++ \
    cuda-core-10-0 && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

ENV CUDA_PATH=/usr/local/cuda-10.0
ENV LD_LIBRARY_PATH="/usr/local/cuda/lib64:/usr/local/cuda/lib64/stubs:${LD_LIBRARY_PATH}"

WORKDIR /root/dependencies

# Install conda packages for Brian 2/Brian2GeNN/Brian 1
COPY requirements.txt /root/dependencies/
RUN conda config --set restore_free_channel true && conda install -c conda-forge --yes --quiet --file requirements.txt && conda clean --all --yes

# Brian2GeNN
RUN pip install https://github.com/brian-team/brian2genn/archive/master.zip
RUN git clone --depth=1 --branch 3.3.0 https://github.com/genn-team/genn

# Brian 1
RUN pip install brian

# Neuron
RUN apt-get update \
    && apt-get -qq -y install libreadline5 libx11-6\
    && curl -sSL https://neuron.yale.edu/ftp/neuron/versions/v7.6/nrn-7.6.x86_64-linux.deb -o nrn.deb \
    && dpkg -i nrn.deb \
    && rm -rf /var/lib/apt/lists/* /var/log/dpkg.log

# NEST
RUN apt-get update \
    && apt-get -qq -y install build-essential cmake libltdl7-dev libreadline6-dev \
       libncurses5-dev\
    && curl -sSL https://github.com/nest/nest-simulator/archive/v2.16.0.tar.gz -o NEST.tar.gz\
    && tar -xvzf NEST.tar.gz\
    && mkdir nest-build\
    && cd nest-build\
    && cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr/local/nest -Dwith-python=ON -Dwith-gsl=OFF /root/dependencies/nest-simulator-2.16.0\
    && make -j 8\
    && make install\
    && apt-get -qq -y remove cmake\
    && apt-get -qq -y autoremove \
    && apt-get autoclean \
    && rm -rf /var/lib/apt/lists/* /var/log/dpkg.log

# Set all necessary environment variables for GeNN, NEURON, and NEST
ENV GENN_PATH=/root/dependencies/genn

ENV PYTHONPATH="/usr/local/nest/lib/python2.7/site-packages:/usr/local/nrn/lib/python/"
ENV NEST_DATA_DIR="/usr/local/nest/share/nest"
ENV NEST_DOC_DIR="/usr/local/nest/share/doc/nest"
ENV NEST_INSTALL_DIR="/usr/local/nest"
ENV NEST_MODULE_PATH="/usr/local/nest/lib/nest"
ENV NEST_PYTHON_PREFIX="/usr/local/nest/lib/python2.7/site-packages"

WORKDIR /root

RUN mkdir results

COPY *.py *.mod /root/

RUN nrnivmodl .
