anchor.diff:    ];
   
     propagatedBuildInputs = [
  +    beautifulsoup
       bs1770gain
  +    discogs-client
  +    enum34
       flac
  +    flask
       imagemagick
  +    itsdangerous
  +    jellyfish
  +    jinja2
  +    mock
       mp3val
  -    pythonPackages.beautifulsoup
  -    pythonPackages.discogs-client
  -    pythonPackages.enum34
  -    pythonPackages.flask
  -    pythonPackages.itsdangerous
  -    pythonPackages.jellyfish
  -    pythonPackages.jinja2
  -    pythonPackages.mock
  -    pythonPackages.mpd
  -    pythonPackages.munkres
  -    pythonPackages.musicbrainzngs
  -    pythonPackages.mutagen
  -    pythonPackages.nose
  -    pythonPackages.pathlib
  -    pythonPackages.pyacoustid
  -    pythonPackages.pyechonest
  -    pythonPackages.pylast
  -    pythonPackages.pyxdg
  -    pythonPackages.pyyaml
  -    pythonPackages.rarfile
  -    pythonPackages.responses
  -    pythonPackages.requests2
  -    pythonPackages.unidecode
  -    pythonPackages.werkzeug
  +    mpd
  +    munkres
  +    musicbrainzngs
  +    mutagen
  +    nose
  +    pathlib
  +    pyacoustid
  +    pyechonest
  +    pylast
  +    pyxdg
  +    pyyaml
  +    rarfile
  +    responses
  +    requests
  +    unidecode
  +    werkzeug
     ] ++ optional enableAlternatives (
         import ./plugins/beets-alternatives.nix {
           inherit
  
positive.code:       else
          false;
      thumbnails =
        if pythonPackages.pyxdg != null then
          true
        else
          false;
      web =
        if pythonPackages.flask != null then
          true
        else
          false;
  
negative.code:     optionals
      optionalString
      platforms;
  in
  
  let
    optionalPlugins = {
      # TODO: write a generic function to detect null dependencies
      acousticbrainz =
        if requests != null then
          true
        else
          false;
  