diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index afe62f8569165098b7bae2333e780f43cd0bf759..06e84dab5833dc6ee9ea24fbbda3e8f7590c6f65 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -105,6 +105,7 @@ build-env:default:
   before_script:
     - source deactivate
     - source activate kwant-latest
+    - pip install qsymm
     - unset CFLAGS  # https://github.com/conda-forge/toolchain-feedstock/issues/41
 
 .bleeding-edge-env: &bleeding_edge_env
@@ -112,13 +113,17 @@ build-env:default:
     - source deactivate
     - conda env update -f /kwant-latest.yml
     - source activate kwant-latest
+    - pip install qsymm
 
 .ubuntu-env: &ubuntu_env
   image: gitlab.kwant-project.org:5005/kwant/kwant/ubuntu
+  before_script:
+    - pip3 install qsymm
 
 .debian-env: &debian_env
   image: gitlab.kwant-project.org:5005/kwant/kwant/debian
-
+  before_script:
+    - pip3 install qsymm
 
 ## Build Jobs
 
diff --git a/conftest.py b/conftest.py
index 00882f3766ca8f5e21bfd17763787e8acf1b6803..cdf296dbd4dea8b1ec7762a85ef260badb1cd4b0 100644
--- a/conftest.py
+++ b/conftest.py
@@ -1,4 +1,4 @@
-# Copyright 2011-2017 Kwant authors.
+# Copyright 2011-2018 Kwant authors.
 #
 # This file is part of Kwant.  It is subject to the license terms in the file
 # LICENSE.rst found in the top-level directory of this distribution and at
@@ -17,7 +17,8 @@ import importlib
 
 # map from subpackage to sequence of dependency module names
 subpackage_dependencies = {
-    'kwant/continuum': ['sympy']
+    'kwant/continuum': ['sympy'],
+    'kwant/tests/test_qsymm': ['qsymm', 'sympy'],
 }
 
 
diff --git a/setup.py b/setup.py
index 57bf904cd5e8222a9c8b8012df24b31d5d9baf3f..e5116a80392c51ec82e083844e2f5d61dd507c64 100755
--- a/setup.py
+++ b/setup.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python3
 
-# Copyright 2011-2017 Kwant authors.
+# Copyright 2011-2018 Kwant authors.
 #
 # This file is part of Kwant.  It is subject to the license terms in the file
 # LICENSE.rst found in the top-level directory of this distribution and at
@@ -586,6 +586,8 @@ def main():
               # The oldest versions between: Debian stable, Ubuntu LTS
               'plotting': 'matplotlib >= 1.5.1',
               'continuum': 'sympy >= 0.7.6',
+              # qsymm is only packaged on PyPI
+              'qsymm': 'qsymm >= 1.1.2',
           },
           classifiers=[c.strip() for c in classifiers.split('\n')])