{
  # 1. nixpkgs dependencies
  # 1.1. python
  python, pythonPackages,

  # 1.2. particular python packages
  sphinx ? pythonPackages.sphinx,
  sphinx-rtd-theme ? pythonPackages.sphinx-rtd-theme,
  breathe ? pythonPackages.breathe,

  # 1.3. document-generation packages
  #      use of makeFontsConf adapted from nixpkgs/development/libraries/gtkmm/4.x.nix
  #
  doxygen, graphviz,
  ##fontconfig,
  ##makeFontsConf,

  # used for graphviz (dot) see docs/Doxyfile.in
  #helvetica-neue-lt-std,

  # 1.4. c++ build/utest chain
  stdenv, cmake, catch2, # ... other deps here

  # 2. xo dependencies
  xo-cmake, xo-flatstring, xo-randomgen,

  # args

  #   attrset for fetching source code.
  #    { type, owner, repo, ref }
  #
  #   e.g. type="github", owner="rconybea", repo="cmake-examples", ref="ex1b"
  #
  #   see [[../flake.nix]]
  #
  #cmake-examples-ex1-path

  # someconfigurationoption ? false
} :

stdenv.mkDerivation (finalattrs:
  {
    name = "xo-ratio";

    src = (fetchGit {
      url = "https://github.com/rconybea/xo-ratio";
      version = "1.0";
      #ref = "ex1";
      #rev = "c0472c9d7e4d2c53bfb977d3182380832fe96645";
    });

    cmakeFlags = ["-DXO_CMAKE_CONFIG_EXECUTABLE=${xo-cmake}/bin/xo-cmake-config"];

    # NOTE: helvetic-neue-lt-std has unfree license
    #FONTCONFIG_FILE = makeFontsConf { fontDirectories = [ helvetica-neue-lt-std ]; };

    # move HOME so fontconfig can do sensible things
    buildPhase = ''
      #set -x

      echo "FONTCONFIG_FILE=$FONTCONFIG_FILE"

      #export FONTCONFIG_FILE=$fontconfig.out/etc/fonts/fonts.conf
      export HOME=$TMPDIR
      export XDG_CONFIG_HOME=$TMPDIR

      mkdir $XDG_CONFIG_HOME/fontconfig

      #grep xdg $FONTCONFIG_FILE

      #$fontconfig.out/bin/fc-cache -v

      make && make docs
      #make
    '';

    doCheck = true;
    nativeBuildInputs = [ cmake catch2
                          doxygen graphviz sphinx sphinx-rtd-theme breathe
                          xo-randomgen
                        ];
    propagatedBuildInputs = [ xo-flatstring ];
  })
