anchor.diff:  }:
   
   # One and only one front-end.
  -assert withQt5 -> withQt4 == false && withKDE4 == false;
  -assert withQt4 -> withQt5 == false && withKDE4 == false;
  -assert withKDE4 -> withQt4 == false && withQt5 == false;
  -assert withQt4 || withQt5 || withKDE4;
  +assert withQt5 -> withQt4 == false;
  +assert withQt4 -> withQt5 == false;
  +assert withQt4 || withQt5;
   
   # Inter-dependencies.
   assert withCddb -> withCdda && withTaglib;
  
positive.code:     ++ stdenv.lib.optional withLame lame
      ++ stdenv.lib.optional withMtp libmtp
      ++ stdenv.lib.optional withMusicbrainz libmusicbrainz5
      ++ stdenv.lib.optional (withTaglib && !withKDE4 && withDevices) udisks2;
  
    nativeBuildInputs = stdenv.lib.optional withQt5 makeQtWrapper;
  
    unpackPhase = "tar -xvf $src";
    sourceRoot = "${name}";
  
    # Qt4 is implicit when KDE is switched off.
    cmakeFlags = stdenv.lib.flatten [
      (fstats withKDE4 [ "KDE" "KWALLET" ])
      (fstat withQt5 "QT5")
      (fstats withTaglib [ "TAGLIB" "TAGLIB_EXTRAS" ])
      (fstats withReplaygain [ "FFMPEG" "MPG123" "SPEEXDSP" ])
  
negative.code: { stdenv, fetchurl, cmake
  , withQt4 ? false, qt4
  , withQt5 ? true, qtbase, qtsvg, qttools, makeQtWrapper
  
  # Cantata doesn't build with cdparanoia enabled so we disable that
  # default for now until I (or someone else) figure it out.
  