diff --git a/book/src/user/mining-testnet-s-nomp.md b/book/src/user/mining-testnet-s-nomp.md
new file mode 100644
index 00000000..711afb24
--- /dev/null
+++ b/book/src/user/mining-testnet-s-nomp.md
@@ -0,0 +1,247 @@
+# How to mine with Zebra on testnet
+
+## Important
+
+`s-nomp` has not been updated for NU5, so you'll need the fixes in the branches below.
+
+These fixes disable mining pool operator payments and miner payments: they just pay to the address configured for the node.
+
+## Install, run, and sync Zebra
+
+1. Configure `zebrad.toml`:
+
+ - change the `network.network` config to `Testnet`
+ - add your testnet transparent address in `mining.miner_address`, or you can use the ZF testnet address `t27eWDgjFYJGVXmzrXeVjnb5J3uXDM9xH9v`
+ - ensure that there is an `rpc.listen_addr` in the config to enable the RPC server
+
+ Example config:
+
+
+ ```console
+ [consensus]
+ checkpoint_sync = true
+ debug_skip_parameter_preload = false
+
+ [mempool]
+ eviction_memory_time = '1h'
+ tx_cost_limit = 80000000
+
+ [metrics]
+
+ [network]
+ crawl_new_peer_interval = '1m 1s'
+ initial_mainnet_peers = [
+ 'dnsseed.z.cash:8233',
+ 'dnsseed.str4d.xyz:8233',
+ 'mainnet.seeder.zfnd.org:8233',
+ 'mainnet.is.yolo.money:8233',
+ ]
+ initial_testnet_peers = [
+ 'dnsseed.testnet.z.cash:18233',
+ 'testnet.seeder.zfnd.org:18233',
+ 'testnet.is.yolo.money:18233',
+ ]
+ listen_addr = '0.0.0.0:18233'
+ network = 'Testnet'
+ peerset_initial_target_size = 25
+
+ [rpc]
+ debug_force_finished_sync = false
+ parallel_cpu_threads = 1
+ listen_addr = '127.0.0.1:18232'
+
+ [state]
+ cache_dir = '/home/ar/.cache/zebra'
+ delete_old_database = true
+ ephemeral = false
+
+ [sync]
+ checkpoint_verify_concurrency_limit = 1000
+ download_concurrency_limit = 50
+ full_verify_concurrency_limit = 20
+ parallel_cpu_threads = 0
+
+ [tracing]
+ buffer_limit = 128000
+ force_use_color = false
+ use_color = true
+ use_journald = false
+
+ [mining]
+ miner_address = 't27eWDgjFYJGVXmzrXeVjnb5J3uXDM9xH9v'
+ ```
+
+
+
+2. [Build](https://github.com/ZcashFoundation/zebra#build-instructions) and [Run Zebra](https://zebra.zfnd.org/user/run.html) with the `getblocktemplate-rpcs` feature:
+ ```sh
+ cargo run --release --features "getblocktemplate-rpcs" --bin zebrad -- -c zebrad.toml
+ ```
+3. Wait a few hours for Zebra to sync to the testnet tip (on mainnet this takes 2-3 days)
+
+## Install `s-nomp`
+
+General instructions with Debian/Ubuntu examples
+
+#### Install dependencies
+
+1. Install `redis` and run it on the default port:
+
+ ```sh
+ sudo apt install lsb-release
+ curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
+
+ echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
+
+ sudo apt-get update
+ sudo apt-get install redis
+ redis-server
+ ```
+
+2. Install and activate a node version manager (e.g. [`nodenv`](https://github.com/nodenv/nodenv#installation) or [`nvm`](https://github.com/nvm-sh/nvm#installing-and-updating))
+3. Install `boost` and `libsodium` development libraries
+
+ ```sh
+ sudo apt install libboost-all-dev
+ sudo apt install libsodium-dev
+ ```
+
+#### Install `s-nomp`
+
+1. `git clone https://github.com/ZcashFoundation/s-nomp`
+2. `cd s-nomp`
+3. Use the Zebra fixes: `git checkout zebra-mining`
+4. Use node 8.11.0:
+
+ ```sh
+ nodenv install 8.11.0
+ nodenv local 8.11.0
+ ```
+
+ or
+
+ ```sh
+ nvm install 8.11.0
+ nvm use 8.11.0
+ ```
+
+5. Update dependencies and install:
+
+ ```sh
+ export CXXFLAGS="-std=gnu++17"
+ npm update
+ npm install
+ ```
+
+
+
+Arch-specific instructions
+
+#### Install dependencies
+
+1. Install [`redis`](https://redis.io/docs/getting-started/) and run it on the default port:
+
+ ```sh
+ sudo pacman -S redis
+ sudo systemctl start redis
+ ```
+
+2. Install and activate [`nvm`](https://github.com/nvm-sh/nvm#installing-and-updating):
+
+ ```sh
+ sudo pacman -S nvm
+ unset npm_config_prefix
+ source /usr/share/nvm/init-nvm.sh
+ ```
+
+3. Install `boost` and `libsodium` development libraries:
+
+ ```sh
+ sudo pacman -S boost libsodium
+ ```
+
+#### Install `s-nomp`
+
+1. `git clone https://github.com/ZcashFoundation/s-nomp && cd s-nomp`
+
+2. Use the Zebra configs: `git checkout zebra-mining`
+
+3. Use node 8.11.0:
+
+ ```sh
+ nvm install 8.11.0
+ nvm use 8.11.0
+ ```
+
+4. Update dependencies and install:
+
+ ```sh
+ npm update
+ npm install
+ ```
+
+
+
+## Run `s-nomp`
+
+1. Edit `pool_configs/zcash.json` so `daemons[0].port` is your Zebra port
+2. Run `s-nomp` using `npm start`
+
+Note: the website will log an RPC error even when it is disabled in the config. This seems like a `s-nomp` bug.
+
+## Install a CPU or GPU miner
+
+#### Install dependencies
+
+General instructions
+
+1. Install a statically compiled `boost` and `icu`.
+2. Install `cmake`.
+
+
+
+Arch-specific instructions
+
+```sh
+sudo pacman -S cmake boost icu
+```
+
+
+
+#### Install `nheqminer`
+
+We're going to install `nheqminer`, which supports multiple CPU and GPU Equihash
+solvers, namely `djezo`, `xenoncat`, and `tromp`. We're using `tromp` on a CPU
+in the following instructions since it is the easiest to install and use.
+
+1. `git clone https://github.com/ZcashFoundation/nheqminer`
+2. `cd nheqminer`
+3. Use the Zebra fixes: `git checkout zebra-mining`
+4. Follow the build instructions at
+ , or run:
+
+```sh
+mkdir build
+cd build
+# Turn off `djezo` and `xenoncat`, which are enabled by default, and turn on `tromp` instead.
+cmake -DUSE_CUDA_DJEZO=OFF -DUSE_CPU_XENONCAT=OFF -DUSE_CPU_TROMP=ON ..
+make -j $(nproc)
+```
+
+## Run miner
+
+1. Follow the run instructions at:
+
+```sh
+# you can use your own testnet address here
+# miner and pool payments are disabled, configure your address on your node to get paid
+./nheqminer -l 127.0.0.1:1234 -u tmRGc4CD1UyUdbSJmTUzcB6oDqk4qUaHnnh.worker1 -t 1
+```
+
+Notes:
+
+- A typical solution rate is 2-4 Sols/s per core
+- `nheqminer` sometimes ignores Control-C, if that happens, you can quit it using:
+ - `killall nheqminer`, or
+ - Control-Z then `kill %1`
+- Running `nheqminer` with a single thread (`-t 1`) can help avoid this issue