anchor.diff:  , nv-codec-headers
   , lua
   , libuchardet
  -, libiconv ? null
  +, libiconv
   , CoreFoundation, Cocoa, CoreAudio, MediaPlayer
   
   , waylandSupport ? stdenv.isLinux
  -  , wayland           ? null
  -  , wayland-protocols ? null
  -  , libxkbcommon      ? null
  +  , wayland
  +  , wayland-protocols
  +  , libxkbcommon
   
   , x11Support ? stdenv.isLinux
  -  , libGLU, libGL ? null
  -  , libX11          ? null
  -  , libXext         ? null
  -  , libXxf86vm      ? null
  -  , libXrandr       ? null
  +  , libGLU, libGL
  +  , libX11
  +  , libXext
  +  , libXxf86vm
  +  , libXrandr
   
   , cddaSupport ? false
  -  , libcdio          ? null
  -  , libcdio-paranoia ? null
  +  , libcdio
  +  , libcdio-paranoia
   
   , vulkanSupport ? stdenv.isLinux
  -  , libplacebo     ? null
  -  , shaderc        ? null
  -  , vulkan-headers ? null
  -  , vulkan-loader  ? null
  +  , libplacebo
  +  , shaderc
  +  , vulkan-headers
  +  , vulkan-loader
   
   , drmSupport ? stdenv.isLinux
  -  , libdrm ? null
  -  , mesa   ? null
  -
  -, alsaSupport        ? stdenv.isLinux, alsa-lib      ? null
  -, archiveSupport     ? true,           libarchive    ? null
  -, bluraySupport      ? true,           libbluray     ? null
  -, bs2bSupport        ? true,           libbs2b       ? null
  -, cacaSupport        ? true,           libcaca       ? null
  -, cmsSupport         ? true,           lcms2         ? null
  -, dvdnavSupport      ? stdenv.isLinux, libdvdnav     ? null
  -, jackaudioSupport   ? false,          libjack2      ? null
  -, libpngSupport      ? true,           libpng        ? null
  -, openalSupport      ? true,           openalSoft    ? null
  -, pulseSupport       ? config.pulseaudio or stdenv.isLinux, libpulseaudio ? null
  -, rubberbandSupport  ? stdenv.isLinux, rubberband    ? null
  -, screenSaverSupport ? true,           libXScrnSaver ? null
  -, sdl2Support        ? true,           SDL2          ? null
  -, sixelSupport       ? false,          libsixel      ? null
  -, speexSupport       ? true,           speex         ? null
  -, swiftSupport       ? false,          swift         ? null
  -, theoraSupport      ? true,           libtheora     ? null
  -, vaapiSupport       ? stdenv.isLinux, libva         ? null
  -, vapoursynthSupport ? false,          vapoursynth   ? null
  -, vdpauSupport       ? true,           libvdpau      ? null
  -, xineramaSupport    ? stdenv.isLinux, libXinerama   ? null
  -, xvSupport          ? stdenv.isLinux, libXv         ? null
  -, zimgSupport        ? true,           zimg          ? null
  +  , libdrm
  +  , mesa
  +
  +, alsaSupport        ? stdenv.isLinux, alsa-lib
  +, archiveSupport     ? true,           libarchive
  +, bluraySupport      ? true,           libbluray
  +, bs2bSupport        ? true,           libbs2b
  +, cacaSupport        ? true,           libcaca
  +, cmsSupport         ? true,           lcms2
  +, dvdnavSupport      ? stdenv.isLinux, libdvdnav
  +, jackaudioSupport   ? false,          libjack2
  +, libpngSupport      ? true,           libpng
  +, openalSupport      ? true,           openalSoft
  +, pulseSupport       ? config.pulseaudio or stdenv.isLinux, libpulseaudio
  +, rubberbandSupport  ? stdenv.isLinux, rubberband
  +, screenSaverSupport ? true,           libXScrnSaver
  +, sdl2Support        ? true,           SDL2
  +, sixelSupport       ? false,          libsixel
  +, speexSupport       ? true,           speex
  +, swiftSupport       ? false,          swift
  +, theoraSupport      ? true,           libtheora
  +, vaapiSupport       ? stdenv.isLinux, libva
  +, vapoursynthSupport ? false,          vapoursynth
  +, vdpauSupport       ? true,           libvdpau
  +, xineramaSupport    ? stdenv.isLinux, libXinerama
  +, xvSupport          ? stdenv.isLinux, libXv
  +, zimgSupport        ? true,           zimg
   }:
   
   with lib;
  -
  -let
  -  available = x: x != null;
  -in
  -assert alsaSupport        -> available alsa-lib;
  -assert archiveSupport     -> available libarchive;
  -assert bluraySupport      -> available libbluray;
  -assert bs2bSupport        -> available libbs2b;
  -assert cacaSupport        -> available libcaca;
  -assert cddaSupport        -> all available [ libcdio libcdio-paranoia ];
  -assert cmsSupport         -> available lcms2;
  -assert drmSupport         -> all available [ libdrm mesa ];
  -assert dvdnavSupport      -> available libdvdnav;
  -assert jackaudioSupport   -> available libjack2;
  -assert libpngSupport      -> available libpng;
  -assert openalSupport      -> available openalSoft;
  -assert pulseSupport       -> available libpulseaudio;
  -assert rubberbandSupport  -> available rubberband;
  -assert screenSaverSupport -> available libXScrnSaver;
  -assert sdl2Support        -> available SDL2;
  -assert sixelSupport       -> available libsixel;
  -assert speexSupport       -> available speex;
  -assert theoraSupport      -> available libtheora;
  -assert vaapiSupport       -> available libva;
  -assert vapoursynthSupport -> available vapoursynth;
  -assert vdpauSupport       -> available libvdpau;
  -assert vulkanSupport      -> all available [ libplacebo shaderc vulkan-headers vulkan-loader ];
  -assert waylandSupport     -> all available [ wayland wayland-protocols libxkbcommon ];
  -assert x11Support         -> all available [ libGLU libGL libX11 libXext libXxf86vm libXrandr ];
  -assert xineramaSupport    -> x11Support && available libXinerama;
  -assert xvSupport          -> x11Support && available libXv;
  -assert zimgSupport        -> available zimg;
   
   let
     luaEnv = lua.withPackages (ps: with ps; [ luasocket ]);
  
positive.code:   postPatch = ''
      patchShebangs ./TOOLS/
    '';
    NIX_LDFLAGS = lib.optionalString x11Support "-lX11 -lXext "
                + lib.optionalString stdenv.isDarwin "-framework CoreFoundation";
  
    wafConfigureFlags = [
      "--enable-libmpv-shared"
  
negative.code:     vapoursynth
      ;
    };
  
    meta = with lib; {
      homepage = "https://mpv.io";
      description = "General-purpose media player, fork of MPlayer and mplayer2";
      longDescription = ''
        mpv is a free and open-source general-purpose video player, based on the
        MPlayer and mplayer2 projects, with great improvements above both.
      '';
      license = licenses.gpl2Plus;
      maintainers = with maintainers; [ AndersonTorres fpletz globin ma27 tadeokondrak ];
      platforms = platforms.darwin ++ platforms.linux;
    };
  }
  