{ pkgs }:
{ name, version, src, extraSrcCommands ? "", dependencies ? [], extraYaml ? ""}:
pkgs.runCommand "conda-fake-source-${name}" { }
    ''
    mkdir -p $out/fake-conda;

    # work around yet more idiotic conda behavior - build breaks if write permissions aren't set on source files.
    cp --no-preserve=mode,ownership -R ${src} workaround-conda
    pushd workaround-conda
    ${extraSrcCommands}
    tar cf $out/src.tar .
    popd
    rm -rf workaround-conda

    cat << EOF > $out/fake-conda/meta.yaml
    package:
      name: ${name}
      version: ${version}

    source:
      url: ../src.tar

    {% set data = load_setup_py_data() %}

    build:
      noarch: python
      entry_points:
        # NOTE: conda-build cannot distinguish between console and gui scripts
        {% for entry_point_type, entry_points in data.get("entry_points", dict()).items() -%}
        {% for entry_point in entry_points -%}
        - {{ entry_point }}
        {% endfor %}
        {% endfor %}
      ignore_prefix_files: True

    requirements:
      run:
    ${pkgs.lib.concatStringsSep "\n" (map (s: "    - ${s}") dependencies)}

    ${extraYaml}
    EOF

    cat << EOF > $out/fake-conda/build.sh
    #!/bin/bash
    set -e

    export VERSIONEER_OVERRIDE=${version}
    export LD_LIBRARY_PATH=/lib
    python setup.py install \
      --prefix=\$PREFIX \
      --single-version-externally-managed \
      --record=record.txt \
      --no-compile

    EOF
    chmod 755 $out/fake-conda/build.sh
    ''
