fix xmake nightly
diff --git a/.github/workflows/test-new-xmake-nightly.yml b/.github/workflows/test-new-xmake-nightly.yml
index eac04ab..e4e9664 100644
--- a/.github/workflows/test-new-xmake-nightly.yml
+++ b/.github/workflows/test-new-xmake-nightly.yml
@@ -5,6 +5,15 @@
     - cron: '0 0 * * *'
   workflow_dispatch:
 
+defaults:
+  run:
+    # The `sh` used by default does not understand `source` which `xmake` uses
+    # in its profile script.  (And POSIX requires only dot, `.`, leaving
+    # `source` unspecified.  See
+    # https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html
+    # for far too much detai.)
+    shell: bash
+
 jobs:
   run-tests:
     strategy:
@@ -18,24 +27,40 @@
       uses: actions/checkout@v3
       with:
         submodules: recursive
-    - name: Build latest xmake
+    # `xmake update` spawns `xmake` in the background, which is challenging.
+    # Work around this by using daemontools' fghack "anti-backgrounding tool";
+    # see https://cr.yp.to/daemontools/fghack.html and
+    # https://github.com/xmake-io/xmake/issues/6030 for discussion.
+    - name: "Install daemontools"
       run: |
-        xmake update dev
+        sudo apt install -y daemontools
+    - name: "Build latest xmake and prune upstream's"
+      run: |
+        mkdir -p ~/.local
+        fghack xmake update dev
         sudo apt remove -y xmake
-        echo ~/.xmake/profile
-        . ~/.xmake/profile
+    - name: "Reasonableness check: have a look around ~/.local"
+      run: |
+        find ~/.local
+        ls -la ~/.local/bin/xmake
+    - name: "Integrate xmake, generating profile script"
+      run: |
+        ~/.local/bin/xmake update --integrate
+    - name: "Reasonableness check: dump the resulting profile script"
+      run: |
+        ls -l ~/.xmake/profile
+        cat ~/.xmake/profile
     - name: Build tests
       run: |
         pwd
-        echo ~/.xmake/profile
+        . ~/.xmake/profile
         which xmake
         xmake --version
         cd tests
-        xmake f --board=${{ matrix.board }} --sdk=/cheriot-tools/ ${{ matrix.build-flags }}
+        xmake f --board=sail --sdk=/cheriot-tools/ --mode=release
         xmake
     - name: Run tests
       run: |
         . ~/.xmake/profile
-        xmake --version
         cd tests
         xmake run