Added docker wsl setup.

This commit is contained in:
2020-05-28 11:41:38 +12:00
parent b47b643420
commit adff6713bb
2 changed files with 107 additions and 68 deletions

View File

@ -47,6 +47,9 @@ fi
# Configure display for vcxsrv # Configure display for vcxsrv
export DISPLAY=:0.0 export DISPLAY=:0.0
# Configure docker host
export DOCKER_HOST=tcp://localhost:2375
# Setup prompt # Setup prompt
function color_my_prompt { function color_my_prompt {
local __user_and_host="\[\033[01;32m\]\u@\h" local __user_and_host="\[\033[01;32m\]\u@\h"

View File

@ -59,6 +59,34 @@ This guide will walk through setting up [[https://en.wikipedia.org/wiki/Windows_
#+END_SRC #+END_SRC
We use [[https://docker.io][docker]] to run containers or kind (kubernetes in docker) locally.
#+NAME: Install docker
#+begin_src shell
# Download and add Docker's official public PGP key.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# Add the `stable` channel's Docker upstream repository.
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/debian \
$(lsb_release -cs) \
stable"
# Update the apt package list (for the new apt repo).
sudo apt-get update -y
# Install the latest version of Docker CE.
sudo apt-get install -y docker-ce
# Allow your user to access the Docker CLI without needing root access.
sudo usermod -aG docker $USER
#+end_src
#+RESULTS: Install docker
#+begin_example
#+end_example
We use [[https://pandoc.org/][pandoc]] for documentation export from spacemacs and other markup conversion tasks. We use [[https://pandoc.org/][pandoc]] for documentation export from spacemacs and other markup conversion tasks.
#+NAME: Install pandoc #+NAME: Install pandoc
@ -223,106 +251,114 @@ Once our keys are available to us we can clone down our dotfiles and get back to
** Step 4 - Install kubemacs editor ** Step 4 - Install kubemacs editor
*** Compile and install vanilla emacs An integral part of our pair development workflow is [[https://github.com/kubemacs/kubemacs][kubemacs]]. Below are options to install this either manually from source, or automatically via docker.
A key component in our environment is the ii extension of spacemacs. *** Option 1 - Install from source
The section below will setup emacs version ~26.3~ and then layer
the ii version of spacemacs called kubemacs on top.
Our first step is to download the base emacs 26.3 source code. **** Compile and install vanilla emacs
#+NAME: Download and extract emacs source A key component in our environment is the ii extension of spacemacs.
#+BEGIN_SRC shell The section below will setup emacs version ~26.3~ and then layer
# Work from our downloads directory the ii version of spacemacs called kubemacs on top.
cd ~/Downloads/
# Download the tarball for emacs 26.3 source code Our first step is to download the base emacs 26.3 source code.
wget https://mirror.ossplanet.net/gnu/emacs/emacs-26.3.tar.xz
#+NAME: Download and extract emacs source
#+BEGIN_SRC shell
# Work from our downloads directory
cd ~/Downloads/
# Download the tarball for emacs 26.3 source code
wget https://mirror.ossplanet.net/gnu/emacs/emacs-26.3.tar.xz
# Untar the source code archive # Untar the source code archive
tar xf emacs-26.3.tar.xz tar xf emacs-26.3.tar.xz
# Change to the extracted directory # Change to the extracted directory
cd emacs-26.3 cd emacs-26.3
#+END_SRC #+END_SRC
After downloading and untarring the source code we are ready to After downloading and untarring the source code we are ready to
attempt resolving dependencies and compiling. attempt resolving dependencies and compiling.
We configure without-x as this environment is solely focussed on We configure without-x as this environment is solely focussed on
running within terminal i.e. ~emacs -nw~. running within terminal i.e. ~emacs -nw~.
#+NAME: Compile and install emacs #+NAME: Compile and install emacs
#+BEGIN_SRC shell #+BEGIN_SRC shell
# Run configure to resolve any dependencies minus x window support # Run configure to resolve any dependencies minus x window support
./configure --without-x --with-gnutls=no ./configure --without-x --with-gnutls=no
# Compile the application with make, using all available cpu cores # Compile the application with make, using all available cpu cores
sudo make -j `nproc` sudo make -j `nproc`
# Run make install to move/install compiled binaries # Run make install to move/install compiled binaries
sudo make install sudo make install
#+END_SRC #+END_SRC
After compiling and installing emacs we should verify that version ~26.3~ is After compiling and installing emacs we should verify that version ~26.3~ is
installed. installed.
#+NAME: Verify correct emacs version is installed #+NAME: Verify correct emacs version is installed
#+BEGIN_SRC tmate #+BEGIN_SRC tmate
emacs --version emacs --version
#+END_SRC #+END_SRC
*** Overlay kubemacs **** Overlay kubemacs
Once the right version of emacs is running we can then layer in kubemacs on top. Documentation for this is here: https://github.com/kubemacs/kubemacs Once the right version of emacs is running we can then layer in kubemacs on top. Documentation for this is here: https://github.com/kubemacs/kubemacs
#+BEGIN_SRC shell #+BEGIN_SRC shell
# Remove the default site-lisp file # Remove the default site-lisp file
sudo rm /usr/local/share/emacs/site-lisp/subdirs.el sudo rm /usr/local/share/emacs/site-lisp/subdirs.el
# Clone kubemacs from github # Clone kubemacs from github
sudo git clone --recursive https://github.com/kubemacs/kubemacs /usr/local/share/emacs/site-lisp/ sudo git clone --recursive https://github.com/kubemacs/kubemacs /usr/local/share/emacs/site-lisp/
# Ensure permissions are set for the cloned folder # Ensure permissions are set for the cloned folder
sudo chown -R $USER:$USER /usr/local/share/emacs/site-lisp sudo chown -R $USER:$USER /usr/local/share/emacs/site-lisp
#+END_SRC #+END_SRC
After cloning down kubemacs we now need to launch emacs and install packages, this can take a while and several iterations may be neccessary before spacemacs will launch fully. After cloning down kubemacs we now need to launch emacs and install packages, this can take a while and several iterations may be neccessary before spacemacs will launch fully.
*Note:* As of <2020-04-11 Sat> there is one package ~org-plus-contrib~ that is refusing to install as normal, a manual install process is included below to work around this. *Note:* As of <2020-04-11 Sat> there is one package ~org-plus-contrib~ that is refusing to install as normal, a manual install process is included below to work around this.
#+NAME: Launch emacs to install packages #+NAME: Launch emacs to install packages
#+begin_src shell #+begin_src shell
# Ensure the elpa folder is created # Ensure the elpa folder is created
mkdir -p /usr/local/share/emacs/site-lisp/spacemacs/elpa/26.3/develop mkdir -p /usr/local/share/emacs/site-lisp/spacemacs/elpa/26.3/develop
cd /usr/local/share/emacs/site-lisp/spacemacs/elpa/26.3/develop cd /usr/local/share/emacs/site-lisp/spacemacs/elpa/26.3/develop
# Manually install org-plus-contrib # Manually install org-plus-contrib
wget 'https://orgmode.org/elpa/org-plus-contrib-20200406.tar' wget 'https://orgmode.org/elpa/org-plus-contrib-20200406.tar'
tar xf org-plus-contrib-20200406.tar tar xf org-plus-contrib-20200406.tar
rm org-plus-contrib-20200406.tar rm org-plus-contrib-20200406.tar
# Start emacs and download packages # Start emacs and download packages
emacs --insecure emacs --insecure
#+end_src #+end_src
One final configuration step specific to wsl is to switch from ~osc52~ to ~xsel~ for clipboard. One final configuration step specific to wsl is to switch from ~osc52~ to ~xsel~ for clipboard.
This is required because copy and paste osc52 sequences are not currently supported in wsl. This is required because copy and paste osc52 sequences are not currently supported in wsl.
You can add your voice to this issue to change that [[https://github.com/microsoft/terminal/issues/2946][here]]. You can add your voice to this issue to change that [[https://github.com/microsoft/terminal/issues/2946][here]].
#+BEGIN_SRC tmate #+BEGIN_SRC tmate
# Replace the osc52 command with xsel # Replace the osc52 command with xsel
sed -i -e 's/osc52.sh/xsel -i -b/g' /usr/local/share/emacs/site-lisp/bin/osc52-tmate.sh sed -i -e 's/osc52.sh/xsel -i -b/g' /usr/local/share/emacs/site-lisp/bin/osc52-tmate.sh
# Provide custom xclipboard functions
# https://github.com/syl20bnr/spacemacs/issues/2222
#+END_SRC
*** Option 2 - Install via docker
# Provide custom xclipboard functions
# https://github.com/syl20bnr/spacemacs/issues/2222
#+END_SRC
** Step 5 - Setup mutt email client ** Step 5 - Setup mutt email client