121 lines
3.2 KiB
Docker
121 lines
3.2 KiB
Docker
FROM spark-crypto_18.04
|
|
|
|
RUN \
|
|
DEBIAN_FRONTEND=noninteractive apt-get update \
|
|
&& apt-get install -y \
|
|
htop \
|
|
locales \
|
|
source-highlight \
|
|
powerline \
|
|
fonts-powerline
|
|
|
|
|
|
# Hide these in the .docker directory to avoid conflicts with existing repos on
|
|
# this computer (in case a parent dir, such as $HOME, is mounted inside a
|
|
# container)
|
|
ARG repo_root="/home/john/Documents/repos/.docker"
|
|
|
|
# Create dirs for public/private repos
|
|
USER john
|
|
RUN \
|
|
mkdir -p $repo_root/public \
|
|
&& mkdir -p $repo_root/private
|
|
|
|
|
|
## Get latest fish (build from source)
|
|
# 1) get build deps
|
|
USER root
|
|
RUN \
|
|
DEBIAN_FRONTEND=noninteractive apt-get update \
|
|
&& apt-get install -y software-properties-common
|
|
RUN \
|
|
apt-add-repository ppa:fish-shell/release-3 \
|
|
&& sed -i "s/^# deb/deb/g" /etc/apt/sources.list
|
|
|
|
RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get build-dep -y fish
|
|
|
|
|
|
# 2) Clone repo
|
|
USER john
|
|
RUN \
|
|
cd $repo_root/public \
|
|
&& git clone https://github.com/fish-shell/fish-shell.git
|
|
|
|
RUN \
|
|
cd $repo_root/public/fish-shell \
|
|
&& mkdir build \
|
|
&& cd build \
|
|
&& cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_DOCS=0 .. \
|
|
&& cmake --build .
|
|
|
|
# Switch to root, rather than running inline w/ sudo cmd, to avoid having to
|
|
# enter a password
|
|
USER root
|
|
RUN \
|
|
cd $repo_root/public/fish-shell/build \
|
|
&& make install
|
|
USER john
|
|
|
|
|
|
## Get oh-my-fish
|
|
RUN \
|
|
cd $repo_root/public \
|
|
&& git clone https://github.com/oh-my-fish/oh-my-fish.git
|
|
|
|
RUN \
|
|
cd $repo_root/public/oh-my-fish \
|
|
&& ./bin/install --noninteractive --yes
|
|
|
|
|
|
## Get my fish config
|
|
RUN \
|
|
cd $repo_root/private \
|
|
&& git clone https://github.com/johncolvin-og/myfishconfig
|
|
|
|
RUN \
|
|
cd $repo_root/private/myfishconfig \
|
|
&& cp src/config.fish /home/john/.config/fish/ \
|
|
&& cp src/aliases.fish /home/john/.config/fish/ \
|
|
&& cp -r src/functions /home/john/.config/fish/ \
|
|
&& cp -r src/themes/johncolvin /home/john/.local/share/omf/themes/ \
|
|
&& fish --command "omf theme johncolvin"
|
|
|
|
|
|
## Get my bash config (back up existing)
|
|
RUN \
|
|
cd $repo_root/private \
|
|
&& git clone https://github.com/johncolvin-og/mybashconfig \
|
|
&& cd mybashconfig \
|
|
&& cp src/* /home/john/
|
|
|
|
|
|
# Get vim files/tools
|
|
USER root
|
|
RUN \
|
|
DEBIAN_FRONTEND=noninteractive apt-get update \
|
|
&& apt-get install -y curl
|
|
USER john
|
|
RUN curl -fLo home/john/.vim/autoload/plug.vim --create-dirs \
|
|
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
|
|
|
|
|
|
# Some fonts look sketchy if the language isn't set to english:
|
|
# * The powerline git glyphs in the fish prompt are all displayed as question
|
|
# marks.
|
|
#
|
|
# * The shell confuses the position of the cursor, so characters are left
|
|
# around when they should have been cleared, and the cursor's home position
|
|
# is pushed one or two places to the right.
|
|
#
|
|
# * Most likely, the bad cursor position is caused by some dependencies the
|
|
# interpretation of escape sequences have on the language setting. At this
|
|
# point I don't even care anymore (literally took 8 hours to figure this
|
|
# out). I just know this shit is needed to make the prompt work correctly.
|
|
USER root
|
|
RUN locale-gen "en_US.UTF-8"
|
|
USER john
|
|
ENV LANG en_US.UTF-8
|
|
ENV LANGUAGE en_US:en
|
|
ENV LC_ALL en_US.UTF-8
|
|
RUN fc-cache -vf
|