diff --git a/MANIFEST.in b/MANIFEST.in
index 5f025ede9c8df484368bbb5d0e2933abecfd716f..55b766a293aea9c6617e81386601fab65a69e167 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,7 +1,8 @@
 recursive-include dependencies/optimade-python-tools *.txt *.g *.py *.ini
 recursive-include nomad *.json *.j2 *.md *.yaml
+include nomad/units/*.txt
 include README.md
 include LICENSE.txt
 include requirements.txt
 include auto_complete_install.sh
-include setup.json
\ No newline at end of file
+include setup.json
diff --git a/docs/dev/setup.md b/docs/dev/setup.md
index ad737234f0d247c5af8877e2c5c3083ba005e8d5..df1d85c29b071a585af322048b10ceba88182431 100644
--- a/docs/dev/setup.md
+++ b/docs/dev/setup.md
@@ -121,6 +121,7 @@ The NOMAD GUI requires static artifacts that are generated from the NOMAD Python
 ```
 nomad dev metainfo > gui/src/metainfo.json
 nomad dev searchQuantities > gui/src/searchQuantities.json
+nomad dev units > gui/src/units.js
 ./gitinfo.sh
 ```
 
diff --git a/setup.py b/setup.py
index 7e12b6e078bafc5a6c434471d51ece9edc1fc713..75881ffc4b43e56b33040abda5229b4114f261fb 100644
--- a/setup.py
+++ b/setup.py
@@ -254,6 +254,7 @@ def setup_kwargs():
         install_requires=install_requires,
         extras_require=extras_require,
         include_package_data=True,
+        package_data={'nomad': ['units/*.txt']},
         python_requires='>=3.6',
         entry_points='''
             [console_scripts]
diff --git a/setup.sh b/setup.sh
index aba6a9fb23554eae85aee6f9a5df99319e3cc775..dd120f62ecdc39251b3b79cd104f46678d75b4db 100755
--- a/setup.sh
+++ b/setup.sh
@@ -11,3 +11,4 @@ pip install -e .[all]
 
 nomad dev metainfo > gui/src/metainfo.json
 nomad dev search-quantities > gui/src/search-quantities.json
+nomad dev units > gui/src/units.js