anchor.diff: -{ lib, stdenv, fetchurl, autoreconfHook, fetchpatch
  -, libarchive, perl, xorg, libdvdnav, libbluray
  -, zlib, a52dec, libmad, faad2, ffmpeg, alsa-lib
  -, pkg-config, dbus, fribidi, freefont_ttf, libebml, libmatroska
  -, libvorbis, libtheora, speex, lua5, libgcrypt, libgpg-error, libupnp
  -, libcaca, libpulseaudio, flac, schroedinger, libxml2, librsvg
  -, mpeg2dec, systemd, gnutls, avahi, libcddb, libjack2, SDL, SDL_image
  -, libmtp, unzip, taglib, libkate, libtiger, libv4l, samba, libssh2, liboggz
  -, libass, libva, libdvbpsi, libdc1394, libraw1394, libopus
  -, libvdpau, libsamplerate, libspatialaudio, live555, fluidsynth
  -, wayland, wayland-protocols, ncurses, srt
  +{ lib
  +, stdenv
  +, fetchurl
  +, fetchpatch
  +, SDL
  +, SDL_image
  +, a52dec
  +, alsa-lib
  +, autoreconfHook
  +, avahi
  +, dbus
  +, faad2
  +, ffmpeg
  +, flac
  +, fluidsynth
  +, freefont_ttf
  +, fribidi
  +, gnutls
  +, libarchive
  +, libass
  +, libbluray
  +, libcaca
  +, libcddb
  +, libdc1394
  +, libdvbpsi
  +, libdvdnav
  +, libebml
  +, libgcrypt
  +, libgpg-error
  +, libjack2
  +, libkate
  +, libmad
  +, libmatroska
  +, libmtp
  +, liboggz
  +, libopus
  +, libpulseaudio
  +, libraw1394
  +, librsvg
  +, libsamplerate
  +, libspatialaudio
  +, libssh2
  +, libtheora
  +, libtiger
  +, libupnp
  +, libv4l
  +, libva
  +, libvdpau
  +, libvorbis
  +, libxml2
  +, live555
  +, lua5
  +, mpeg2dec
  +, ncurses
  +, perl
  +, pkg-config
  +, removeReferencesTo
  +, samba
  +, schroedinger
  +, speex
  +, srt
  +, systemd
  +, taglib
  +, unzip
  +, wayland
  +, wayland-protocols
  +, xorg
  +, zlib
  +
  +, chromecastSupport ? true, libmicrodns, protobuf
  +, jackSupport ? false
   , onlyLibVLC ? false
  +, skins2Support ? !onlyLibVLC, freetype
   , withQt5 ? true, qtbase, qtsvg, qtx11extras, wrapQtAppsHook
  -, jackSupport ? false
  -, skins2Support ? !onlyLibVLC, freetype
  -, removeReferencesTo
  -, chromecastSupport ? true, protobuf, libmicrodns
   }:
   
   # chromecastSupport requires TCP port 8010 to be open for it to work.
   # If your firewall is enabled, make sure to have something like:
   #   networking.firewall.allowedTCPPorts = [ 8010 ];
   
  -with lib;
  -
  +let
  +  inherit (lib) optionalString optional optionals;
  +  hostIsAarch = stdenv.hostPlatform.isAarch32 || stdenv.hostPlatform.isAarch64;
  +in
   stdenv.mkDerivation rec {
     pname = "${optionalString onlyLibVLC "lib"}vlc";
     version = "3.0.16";
  
positive.code:   # Most of the libraries are auto-detected so we don't need to set a bunch of
    # "--enable-foo" flags here
    configureFlags = [
      "--with-kde-solid=$out/share/apps/solid/actions"
      "--enable-srt" # Explicit enable srt to ensure the patch is applied.
    ] ++ optional onlyLibVLC "--disable-vlc"
      ++ optional skins2Support "--enable-skins2"
      ++ optionals chromecastSupport [
  
negative.code:   # which are not included here for no other reason that nobody has mentioned
    # needing them
    buildInputs = [
      SDL
      SDL_image
      a52dec
      alsa-lib
      avahi
      dbus
      faad2
      ffmpeg
      flac
      fluidsynth
      fribidi
      gnutls
      libarchive
      libass
      libbluray
      libcaca
      libcddb
      libdc1394
      libdvbpsi
      libdvdnav
      libdvdnav.libdvdread
      libebml
      libgcrypt
      libgpg-error
      libkate
      libmad
      libmatroska
      libmtp
      liboggz
      libopus
      libpulseaudio
      libraw1394
      librsvg
      libsamplerate
      libspatialaudio
      libssh2
      libtheora
      libtiger
      libupnp
      libv4l
      libva
      libvdpau
      libvorbis
      libxml2
      lua5
      mpeg2dec
      ncurses
      samba
      schroedinger
      speex
      srt
      systemd
      taglib
      wayland
      wayland-protocols
      zlib
    ]
    ++ (with xorg; [
      libXpm
      libXv
      libXvMC
      xcbutilkeysyms
      xlibsWrapper
    ])
    ++ optional (!hostIsAarch) live555
    ++ optional jackSupport libjack2
    ++ optionals chromecastSupport [ libmicrodns protobuf ]
    ++ optionals skins2Support (with xorg; [ freetype libXext libXinerama libXpm ])
    ++ optionals withQt5 [ qtbase qtsvg qtx11extras ];
  
    nativeBuildInputs = [
      autoreconfHook
      perl
      pkg-config
      removeReferencesTo
      unzip
    ]
    ++ optionals withQt5 [ wrapQtAppsHook ];
  
    enableParallelBuilding = true;
  
    LIVE555_PREFIX = if hostIsAarch then null else live555;
  
    # vlc depends on a c11-gcc wrapper script which we don't have so we need to
    # set the path to the compiler
  