diff --git a/.forgejo/workflows/deploy.yml b/.forgejo/workflows/deploy.yml
new file mode 100644
index 00000000..76a537f5
--- /dev/null
+++ b/.forgejo/workflows/deploy.yml
@@ -0,0 +1,40 @@
+---
+iname: Deploy Systems
+on:
+  workflow_dispatch:
+
+jobs:
+  deploy:
+    runs-on: nix
+    steps:
+      - name: Checkout repository
+        uses: https://code.forgejo.org/actions/checkout@v4
+
+      - name: Validate Flake
+        run: nix flake check
+
+      - name: Build Systems
+        run: nix build .#nixosConfigurations --show-trace
+
+      - name: Deploy with deploy-rs
+        run: nix run .#deploy -- -- --confirm
+        env:
+          DEPLOY_SSH_USER: ${{ secrets.SSH_USER }}
+          DEPLOY_SSH_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
+
+      - if: success()
+        uses: https://git.sysctl.io/actions/gotify-action@master
+        with:
+          gotify_api_base: '${{ secrets.GOTIFY_URL }}'
+          gotify_app_token: '${{ secrets.GOTIFY_TOKEN }}'
+          notification_title: '[ ${{ github.repository }}: ${{ github.workflow }} ] NixOS Deployed'
+          notification_message: 'Deployment completed successfully.'
+        name: "Send Notification - Success"
+      - if: failure()
+        uses: https://git.sysctl.io/actions/gotify-action@master
+        with:
+          gotify_api_base: '${{ secrets.GOTIFY_URL }}'
+          gotify_app_token: '${{ secrets.GOTIFY_TOKEN }}'
+          notification_title: '[ ${{ github.repository }}: ${{ github.workflow }} ] Deployment Failed'
+          notification_message: 'Your deployment has failed.  Check Forgejo.'
+        name: "Send Notification - Failure"