anchor.diff:               "http://www.freehackers.org/~tnagy/release/waf-${wafVersion}" ];
       sha256 = "12y9c352zwliw0zk9jm2lhynsjcf5jy0k1qch1c1av8hnbm2pgq1";
     };
  -in
  -
  -stdenv.mkDerivation rec {
  +in stdenv.mkDerivation rec {
     name = "mpv-${version}";
     version = "0.19.0";
   
     src = fetchFromGitHub {
       owner = "mpv-player";
  -    repo = "mpv";
  -    rev = "v${version}";
  +    repo  = "mpv";
  +    rev    = "v${version}";
       sha256 = "14rbglrcplhkf16ik4fbcv7k27lz6h4glfayr12ylh98srmsscqa";
     };
   
  
positive.code: { stdenv, fetchurl, fetchFromGitHub, docutils, makeWrapper, perl, pkgconfig
  , python, which, ffmpeg, freefont_ttf, freetype, libass, libpthreadstubs
  , lua, lua5_sockets
  , libuchardet, rubberband
  , x11Support ? true, libX11 ? null, libXext ? null, mesa ? null, libXxf86vm ? null
  , xineramaSupport ? true, libXinerama ? null
  , xvSupport ? true, libXv ? null
  , sdl2Support? true, SDL2 ? null
  , alsaSupport ? true, alsaLib ? null
  , screenSaverSupport ? true, libXScrnSaver ? null
  , vdpauSupport ? true, libvdpau ? null
  , dvdreadSupport? true, libdvdread ? null
  , dvdnavSupport ? true, libdvdnav ? null
  , bluraySupport ? true, libbluray ? null
  , speexSupport ? true, speex ? null
  , theoraSupport ? true, libtheora ? null
  , jackaudioSupport ? false, libjack2 ? null
  , pulseSupport ? true, libpulseaudio ? null
  , bs2bSupport ? true, libbs2b ? null
  # For screenshots
  , libpngSupport ? true, libpng ? null
  # for Youtube support
  , youtubeSupport ? true, youtube-dl ? null
  , cacaSupport ? true, libcaca ? null
  , vaapiSupport ? false, libva ? null
  , waylandSupport ? false, wayland ? null, libxkbcommon ? null
  # scripts you want to be loaded by default
  , scripts ? []
  }:
  
  assert x11Support -> (libX11 != null && libXext != null && mesa != null && libXxf86vm != null);
  assert xineramaSupport -> (libXinerama != null && x11Support);
  assert xvSupport -> (libXv != null && x11Support);
  assert sdl2Support -> SDL2 != null;
  assert alsaSupport -> alsaLib != null;
  assert screenSaverSupport -> libXScrnSaver != null;
  assert vdpauSupport -> libvdpau != null;
  assert dvdreadSupport -> libdvdread != null;
  assert dvdnavSupport -> libdvdnav != null;
  assert bluraySupport -> libbluray != null;
  assert speexSupport -> speex != null;
  assert theoraSupport -> libtheora != null;
  assert jackaudioSupport -> libjack2 != null;
  assert pulseSupport -> libpulseaudio != null;
  assert bs2bSupport -> libbs2b != null;
  assert libpngSupport -> libpng != null;
  assert youtubeSupport -> youtube-dl != null;
  assert cacaSupport -> libcaca != null;
  assert waylandSupport -> (wayland != null && libxkbcommon != null);
  
  let
    inherit (stdenv.lib) optional optionals optionalString concatStringsSep;
  
    # Purity: Waf is normally downloaded by bootstrap.py, but
    # for purity reasons this behavior should be avoided.
    wafVersion = "1.8.12";
  
negative.code: 
    configureFlags = [
      "--enable-libmpv-shared"
      "--enable-manpage-build"
      "--enable-zsh-comp"
      "--disable-libmpv-static"
      "--disable-static-build"
      "--disable-build-date" # Purity
      (enableFeature vaapiSupport "vaapi")
      (enableFeature waylandSupport "wayland")
    ];
  
    configurePhase = ''
      python3 ${waf} configure --prefix=$out $configureFlags
    '';
  
    nativeBuildInputs = [ docutils makeWrapper perl pkgconfig python3 which ];
  
    buildInputs = [
      ffmpeg freetype libass libpthreadstubs
      lua lua5_sockets libuchardet rubberband
    ] ++ optional alsaSupport        alsaLib
      ++ optional xvSupport          libXv
      ++ optional theoraSupport      libtheora
      ++ optional xineramaSupport    libXinerama
      ++ optional dvdreadSupport     libdvdread
      ++ optional bluraySupport      libbluray
      ++ optional jackaudioSupport   libjack2
      ++ optional pulseSupport       libpulseaudio
      ++ optional screenSaverSupport libXScrnSaver
      ++ optional vdpauSupport       libvdpau
      ++ optional speexSupport       speex
      ++ optional bs2bSupport        libbs2b
      ++ optional libpngSupport      libpng
      ++ optional youtubeSupport     youtube-dl
      ++ optional sdl2Support        SDL2
      ++ optional cacaSupport        libcaca
      ++ optional vaapiSupport       libva
      ++ optional vapoursynthSupport vapoursynth
      ++ optionals dvdnavSupport     [ libdvdnav libdvdnav.libdvdread ]
      ++ optionals x11Support        [ libX11 libXext mesa libXxf86vm ]
      ++ optionals waylandSupport    [ wayland libxkbcommon ];
  
    enableParallelBuilding = true;
  
    buildPhase = ''
      python3 ${waf} build
    '';
  
    installPhase = ''
      python3 ${waf} install
  
      # Use a standard font
      mkdir -p $out/share/mpv
      ln -s ${freefont_ttf}/share/fonts/truetype/FreeSans.ttf $out/share/mpv/subfont.ttf
      # Ensure youtube-dl is available in $PATH for MPV
      wrapProgram $out/bin/mpv \
        --add-flags "--script=${concatStringsSep "," scripts}" \
    '' + optionalString youtubeSupport ''
        --prefix PATH : "${youtube-dl}/bin" \
    '' + optionalString vapoursynthSupport ''
        --prefix PYTHONPATH : "$(toPythonPath ${vapoursynth}):$PYTHONPATH"
    '';
  
    meta = with stdenv.lib; {
  