Q1.  how to get a nix development environment that works

1.
    1. nix stdenv = gcc12Stdenv    (see mkderivation.nix)
    2. baseInputs has gcc          (but probably doesn't need it)
    3. devInputs has llvmPackages_16.clang-unwrapped

    This leads to env with
      CC=gcc
      CXX=g++
      NIX_CC=/nix/store/$hash-gcc-wrapper-12.3.0

2.

    1. nix stdenv = clang16Stdenv  (see mkderivation.nix)
    2. baseInputs has gcc
    3. devInputs has llvmPackages_16.clang-unwrapped

    This leads to env with:
      CC=clang
      CXX=clang++
      NIX_CC=/nix/store/$hash-clang-wrapper-16.0.1

    To build,  need to tell cmake to use gcc:
      cmake -DCMAKE_CXX_COMPILER=$(which g++) -DCMAKE_C_COMPILER=$(which gcc) path/to/src

Q2.  how to add a dependency to github workflow

    comments.
    1. workflow configured in ./.github/cmake-single-platform.yml
    2. workflow runs on ubuntu vm.  see
         runs-on: ubuntu-latest
       in cmake-single-platform.yml
    3. find a desired dependency
         $ apt-cache search ${keyword}
       e.g.
         $ apt-cache search catch2
    4. add/edit install step to ./.github/cmake-single-platform.yml
         - name: Install catch2
           run: sudo apt-get install -y catch2
