diff --git a/.travis.sh b/.travis.sh
index 9978a4919d6830befa9f5265092d75e18222db4d..7f536c875fb3ad779118f95e00bd19db690ee3e6 100755
--- a/.travis.sh
+++ b/.travis.sh
@@ -23,29 +23,28 @@ edo ./ghcup -v rm 8.4.3
 edo ./ghcup -v set 8.2.2
 
 export PATH="$HOME/.cabal/bin:$HOME/.ghcup/bin:$HOME/.local/bin:$PATH"
+edo mkdir -p "$HOME"/.local/bin
+
+edo cp ./ghcup "$HOME"/.local/bin/ghcup
 
 # TODO: exceeds maximum time limit of travis
 # compile GHC from source
 #./ghcup -v compile 8.4.3 ghc-8.2.2
 
 # install cabal-install
-edo ./ghcup -v install-cabal
-
-edo cabal update
-edo cabal install cabal-install
-
-# https://github.com/haskell/cabal/issues/5516
-edo mkdir -p ~/.cabal/store/ghc-8.2.2/package.db
-edo cabal new-update
+edo ghcup -v install-cabal
 
 # install shellcheck
-edo cabal new-install ShellCheck
+edo wget https://storage.googleapis.com/shellcheck/shellcheck-latest.linux.x86_64.tar.xz
+edo tar -xJf shellcheck-latest.linux.x86_64.tar.xz
+edo mv shellcheck-latest/shellcheck "$HOME"/.local/bin/shellcheck
 
 # check our script for errors
 edo shellcheck ghcup
 
 # self update
-edo mkdir -p "$HOME"/.local/bin
-edo ./ghcup self-update
+edo ghcup self-update
 
 edo ghcup show
+
+edo ghc --version
diff --git a/.travis.yml b/.travis.yml
index 1fd134c0105e8c1b5f5d282af070573138c4f814..fda51d58ce100671c67875a235aac66cd9df1fa3 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -23,6 +23,7 @@ addons:
     - make
     - ncurses-dev
     - python3
+    - realpath
     - xz-utils
 
 # TODO: also run checkbashisms.pl (currently two instances of non-compliance)