diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..6e19e4c2ca1effefd39ee9bb83241e2ef4594878
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,21 @@
+# vim: set expandtab shiftwidth=2 tabstop=8 textwidth=0:
+
+variables:
+  ARCH_PKGS: 'flake8'
+
+.default_setup:
+  image: archlinux/base
+  before_script:
+    - pacman -S --refresh
+    - pacman -S --sysupgrade --noconfirm
+    - pacman -S --noconfirm $ARCH_PKGS
+
+flake:
+  extends: .default_setup
+  script:
+    - python3 setup.py flake8
+
+install:
+  extends: .default_setup
+  script:
+    - python3 setup.py install
diff --git a/setup.cfg b/setup.cfg
index b88034e414bc7b80d686e3c94d516305348053ea..45887f8fde5f29fe7023c18452b52a0c3ed97205 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,2 +1,11 @@
 [metadata]
 description-file = README.md
+
+[flake8]
+ignore =
+    # E501: line too long
+    E501,
+    # W504: line break after binary operator
+    W504
+exclude = .git, __pycache__, __init__.py
+filename = *.py