Machine image preparation:

Ubuntu:

apt update
apt -y install \
    gcc g++ make autoconf automake libtool flex bison gdb gcc-doc \
    gimp inkscape geeqie graphviz graphviz-doc liblz4-tool firefox \
    git gitg gitk git-doc git-gui git-email kcachegrind \
    emacs vim gnome-builder gedit gedit-plugins htop curl ncdu \
    moreutils curl cython3 debian-archive-keyring gpg hwloc \
    \
    python3-numpy python3-scipy python3-zmq python3-yaml python3-pytest \
    python3-dask python3-mpltoolkits.basemap python3-distributed \
    python3-nose python3-coverage python3-line-profiler python3-memory-profiler \
    python3-pandas python3-bcolz python3-plotly \
    python3-tweepy python3-opencv python3-toolz python3-joblib \
    python3-sklearn python3-sklearn-pandas python3-scipy \
    python3-matplotlib python3-matplotlib-venn \
    python3-willow python3-pyflakes \
    python3-sphinx python3-sphinx-rtd-theme \
    python3-pytest python3-pytest-pep8 python3-pytest-pylint python3-pytest-cov \
    python3-mpi4py python3-imageio python3-h5py python3-skimage \
    cufflinks runsnakerun \
    libopenblas-base libopenblas-dev
    
# missing: holoviews pstat
    
cat >>/etc/firefox/sysprefs.js <<EOF
user_pref("app.normandy.first_run", false);
user_pref("browser.startup.homepage", "https://python.g-node.org/wiki/schedule");
user_pref("browser.startup.homepage_override.buildID", "20180704192850");
user_pref("browser.startup.homepage_override.mstone", "61.0.1");
EOF

adduser student -c 'ASPP Student'
echo student | passwd student --stdin
adduser student admin

# As root:
wget -O atom.deb -- https://atom.io/download/deb
dpkg -i atom.deb
apt install -f
rm atom.deb

As student user:

#aversion=5.2.0
#curl https://repo.continuum.io/archive/Anaconda3-$aversion-Linux-x86_64.sh -O
#bash Anaconda3-$aversion-Linux-x86_64.sh -b
#rm Anaconda3-$aversion-Linux-x86_64.sh

pip3 install bloscpack ipython_memwatcher pyprof2calltree git+https://github.com/ASPP/prof3to2.git
pip3 install numba

git clone https://github.com/Debilski/vim-basic.git .vim && ln -s .vim/vimrc .vimrc && vim +PlugInstall +qall                                                                                    

git config --global core.editor "atom -w"
git config --global user.name "ASPP Student"
git config --global user.email "student@localhost"

echo "source /usr/lib/git-core/git-sh-prompt" >> ~/.bashrc
echo "export GIT_PS1_SHOWDIRTYSTATE=1" >> ~/.bashrc
echo "export GIT_PS1_SHOWCOLORHINTS=1" >> ~/.bashrc
echo $'PROMPT_COMMAND=\'__git_ps1 "\\u@\\h:\\w" "\\\\\\$ "\'' >> ~/.bashrc
echo 'stty -ixon' >> ~/.bashrc
gsettings set org.gnome.desktop.session idle-delay 0
gsettings set org.gnome.desktop.lockdown disable-lock-screen true

Disable screen lock in settings → privacy. Pin terminal and atom and spyder to sidebar.

Fedora (ignore this part):

dnf -y --best install gcc gcc-c++ make autoconf automake libtool flex bison gdb gimp inkscape geeqie graphviz graphviz-doc lz4 firefox git gitg gitk git-core-doc git-gui git-email kcachegrind emacs vim gnome-builder gedit gedit-plugins htop ncurses-compat-libs moreutils

...