diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml
index 5613fb37378d5a9af41d9e09e595662b4d4a0ef5..75d22924cdff440c551853a7fa781c2dc048272f 100644
--- a/.github/workflows/test.yaml
+++ b/.github/workflows/test.yaml
@@ -149,3 +149,25 @@ jobs:
           cabal bench
         env:
           HOMEBREW_CHANGE_ARCH_TO_ARM: 1
+
+  freebsd:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        include:
+          - os: [self-hosted, FreeBSD, X64]
+            ghc: 9.4.8
+          - os: [self-hosted, FreeBSD, X64]
+            ghc: 9.6.4
+    steps:
+      - name: Checkout code
+        uses: actions/checkout@v3
+
+      - name: Run build
+        run: |
+          pkg install -y curl gcc gmp gmake ncurses perl5 libffi libiconv git bash misc/compat10x misc/compat11x misc/compat12x gmake llvm14
+          . .github/scripts/env.sh
+          curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | BOOTSTRAP_HASKELL_NONINTERACTIVE=1 BOOTSTRAP_HASKELL_INSTALL_NO_STACK=1 BOOTSTRAP_HASKELL_GHC_VERSION=${{ matrix.ghc }} BOOTSTRAP_HASKELL_ADJUST_BASHRC=yes sh
+          cabal test
+          cabal bench