diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 0e81abf597779dfee2cd495ab6c4f602a003771d..0ffe153e477c0d6a679eb0de6ec7d941eb53e50b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,7 +1,7 @@
 image: ruby:2.3
 
 before_script:
-  - apt-get update -qq && apt-get install -y -qq libbluetooth-dev cmake valgrind
+  - apt-get update -qq && apt-get install -y -qq libbluetooth-dev cmake valgrind qt5-default qt5-qmake
 
 stages:
   - build
diff --git a/documentation/ci_faq.md b/documentation/ci_faq.md
index e630d3c166459bf3a85060f3405cb982a9302a75..d083d62ef37cb6e7d9653eebd21aa1d9387e3bfb 100644
--- a/documentation/ci_faq.md
+++ b/documentation/ci_faq.md
@@ -28,6 +28,11 @@ condition.
      thing is to fix the test so that we continue to have good regression
      test coverage over our code.
 
+## My build failed due to unavailable software. How do I install things on CI?
+Each build is run within a docker image. Add whatever software you need on the
+`sudo apt install ...` line inside of the `.gitlab-ci.yml` file in the root
+directory.
+
 ## How does CI work?
 When a commit is added to a branch in our repository, a notification is sent out
 to our gitlab-ci-runner, which instructs it to checkout the updated branch and