diff --git a/.github/workflows/tools.yml b/.github/workflows/tools.yml
index ff97e606e..1f2635fc2 100644
--- a/.github/workflows/tools.yml
+++ b/.github/workflows/tools.yml
@@ -17,6 +17,8 @@ jobs:
         include:
           - distribution: ubuntu
             release: bionic
+          - distribution: ubuntu
+            release: focal
           - distribution: debian
             release: buster
           - distribution: debian
diff --git a/python_apps/airtime_analyzer/packages.ini b/python_apps/airtime_analyzer/packages.ini
index 5cc44835e..331dd415a 100644
--- a/python_apps/airtime_analyzer/packages.ini
+++ b/python_apps/airtime_analyzer/packages.ini
@@ -1,8 +1,8 @@
 # This file contains a list of package dependencies.
 [common]
-python3 = buster, bullseye, bionic
-python3-pip = buster, bullseye, bionic
-python3-venv = buster, bullseye, bionic
+python3 = buster, bullseye, bionic, focal
+python3-pip = buster, bullseye, bionic, focal
+python3-venv = buster, bullseye, bionic, focal
 
 [liquidsoap]
 # https://github.com/savonet/liquidsoap/blob/main/CHANGES.md
@@ -21,30 +21,30 @@ liquidsoap-plugin-portaudio = bionic
 ; liquidsoap-plugin-taglib = bionic
 ; liquidsoap-plugin-voaacenc = bionic
 ; liquidsoap-plugin-vorbis = bionic
-liquidsoap = buster, bullseye, bionic
+liquidsoap = buster, bullseye, bionic, focal
 
 [pika]
-python3-pika = buster, bullseye, bionic
+python3-pika = buster, bullseye, bionic, focal
 
 [rgain3]
-gcc = buster, bullseye, bionic
-gir1.2-gtk-3.0 = buster, bullseye, bionic
-gstreamer1.0-plugins-bad = buster, bullseye, bionic
-gstreamer1.0-plugins-good = buster, bullseye, bionic
-gstreamer1.0-plugins-ugly = buster, bullseye, bionic
-libcairo2-dev = buster, bullseye, bionic
-libgirepository1.0-dev = buster, bullseye, bionic
-libglib2.0-dev = buster, bullseye, bionic
-pkg-config = buster, bullseye, bionic
-python3-cairo = buster, bullseye, bionic
-python3-dev = buster, bullseye, bionic
-python3-gi = buster, bullseye, bionic
-python3-gi-cairo = buster, bullseye, bionic
-python3-gst-1.0 = buster, bullseye, bionic
+gcc = buster, bullseye, bionic, focal
+gir1.2-gtk-3.0 = buster, bullseye, bionic, focal
+gstreamer1.0-plugins-bad = buster, bullseye, bionic, focal
+gstreamer1.0-plugins-good = buster, bullseye, bionic, focal
+gstreamer1.0-plugins-ugly = buster, bullseye, bionic, focal
+libcairo2-dev = buster, bullseye, bionic, focal
+libgirepository1.0-dev = buster, bullseye, bionic, focal
+libglib2.0-dev = buster, bullseye, bionic, focal
+pkg-config = buster, bullseye, bionic, focal
+python3-cairo = buster, bullseye, bionic, focal
+python3-dev = buster, bullseye, bionic, focal
+python3-gi = buster, bullseye, bionic, focal
+python3-gi-cairo = buster, bullseye, bionic, focal
+python3-gst-1.0 = buster, bullseye, bionic, focal
 
 [silan]
-silan = buster, bullseye, bionic
+silan = buster, bullseye, bionic, focal
 
 [=development]
 # Generate fixtures
-ffmpeg = buster, bullseye, bionic
+ffmpeg = buster, bullseye, bionic, focal
diff --git a/python_apps/pypo/packages.ini b/python_apps/pypo/packages.ini
index a4dbff5b2..2031dabf2 100644
--- a/python_apps/pypo/packages.ini
+++ b/python_apps/pypo/packages.ini
@@ -1,8 +1,8 @@
 # This file contains a list of package dependencies.
 [common]
-python3 = buster, bullseye, bionic
-python3-pip = buster, bullseye, bionic
-python3-venv = buster, bullseye, bionic
+python3 = buster, bullseye, bionic, focal
+python3-pip = buster, bullseye, bionic, focal
+python3-venv = buster, bullseye, bionic, focal
 
 [liquidsoap]
 # https://github.com/savonet/liquidsoap/blob/main/CHANGES.md
@@ -21,12 +21,12 @@ liquidsoap-plugin-portaudio = bionic
 ; liquidsoap-plugin-taglib = bionic
 ; liquidsoap-plugin-voaacenc = bionic
 ; liquidsoap-plugin-vorbis = bionic
-liquidsoap = buster, bullseye, bionic
+liquidsoap = buster, bullseye, bionic, focal
 
 [recorder]
-ecasound = buster, bullseye, bionic
+ecasound = buster, bullseye, bionic, focal
 
 [misc]
 # Used by pypofetch to check if a file is open.
 # TODO: consider using a python library
-lsof = buster, bullseye, bionic
+lsof = buster, bullseye, bionic, focal
diff --git a/tools/packages.py b/tools/packages.py
index 6ee3be25d..9205a8fb1 100755
--- a/tools/packages.py
+++ b/tools/packages.py
@@ -7,7 +7,7 @@ from typing import Iterator, Set
 
 DEFAULT_PACKAGES_FILENAME = "packages.ini"
 FORMATS = ("list", "line")
-SYSTEMS = ("buster", "bullseye", "bionic")
+SYSTEMS = ("buster", "bullseye", "bionic", "focal")
 
 SETTINGS_SECTION = "=settings"
 DEVELOPMENT_SECTION = "=development"