diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..deaf686ad3392b6d80c2d9cea987fe6c8cf04d9c
--- /dev/null
+++ b/.pre-commit-config.yaml
@@ -0,0 +1,31 @@
+repos:
+  - repo: 'https://github.com/pre-commit/pre-commit-hooks'
+    rev: v5.0.0
+    hooks:
+      - id: trailing-whitespace
+        args:
+          - '--markdown-linebreak-ext=md'
+      - id: end-of-file-fixer
+      - id: check-yaml
+      - id: check-added-large-files
+      - id: check-case-conflict
+  - repo: 'https://github.com/codespell-project/codespell'
+    rev: v2.3.0
+    hooks:
+      - id: codespell
+  - repo: 'https://github.com/jorisroovers/gitlint'
+    rev: v0.19.1
+    hooks:
+      - id: gitlint
+  - repo: 'https://github.com/dloidolt/pre-commit-checkpatch'
+    rev: v0.1.0
+    hooks:
+      - id: checkpatch-files
+        args:
+          - '--fix-inplace'
+          - '--show-types'
+          - '--ignore=SPDX_LICENSE_TAG,PREFER_DEFINED_ATTRIBUTE_MACRO,INLINE'
+  - repo: 'https://github.com/bbastin/pre-commit-meson.git'
+    rev: v1.0.0
+    hooks:
+      - id: meson-test