anchor.diff:      fetchSubmodules = true;
     };
   
  -  nativeBuildInputs = [ cmake wrapQtAppsHook pkg-config ];
  +  nativeBuildInputs = [
  +    cmake
  +    pkg-config
  +  ]
  +  ++ lib.optionals enableQt [ wrapQtAppsHook ];
  +
     buildInputs = [
  -    SDL2
  -    qtbase
  -    qtmultimedia
  -    libpulseaudio
       boost17x
       libusb1
  -    alsa-lib
  -    rapidjson # for discord-rpc
  -  ] ++ lib.optional aacHleDecoding [ fdk_aac ffmpeg-full ];
  +  ]
  +  ++ lib.optionals enableSdl2 [ SDL2 ]
  +  ++ lib.optionals enableQt [ qtbase qtmultimedia ]
  +  ++ lib.optionals enableQtTranslation [ qttools ]
  +  ++ lib.optionals enableCubeb [ libpulseaudio ]
  +  ++ lib.optionals (enableFfmpegAudioDecoder || enableFfmpegVideoDumper) [ ffmpeg ]
  +  ++ lib.optionals useDiscordRichPresence [ rapidjson ]
  +  ++ lib.optionals enableFdk [ fdk_aac ];
   
     cmakeFlags = [
       "-DUSE_SYSTEM_BOOST=ON"
  -    "-DUSE_DISCORD_PRESENCE=ON"
  -  ] ++ lib.optionals aacHleDecoding [
  -    "-DENABLE_FFMPEG_AUDIO_DECODER=ON"
  -    "-DCITRA_USE_BUNDLED_FFMPEG=OFF"
  -  ];
  +  ]
  +  ++ lib.optionals (!enableSdl2) [ "-DENABLE_SDL2=OFF" ]
  +  ++ lib.optionals (!enableQt) [ "-DENABLE_QT=OFF" ]
  +  ++ lib.optionals enableQtTranslation [ "-DENABLE_QT_TRANSLATION=ON" ]
  +  ++ lib.optionals (!enableWebService) [ "-DENABLE_WEB_SERVICE=OFF" ]
  +  ++ lib.optionals (!enableCubeb) [ "-DENABLE_CUBEB=OFF" ]
  +  ++ lib.optionals enableFfmpegAudioDecoder [ "-DENABLE_FFMPEG_AUDIO_DECODER=ON"]
  +  ++ lib.optionals enableFfmpegVideoDumper [ "-DENABLE_FFMPEG_VIDEO_DUMPER=ON" ]
  +  ++ lib.optionals useDiscordRichPresence [ "-DUSE_DISCORD_PRESENCE=ON" ]
  +  ++ lib.optionals enableFdk [ "-DENABLE_FDK=ON" ];
   
     postPatch = ''
  -    # we already know the submodules are present
  +    # We already know the submodules are present
       substituteInPlace CMakeLists.txt \
         --replace "check_submodules_present()" ""
   
  -    # Trick configure system.
  -    sed -n 's,^ *path = \(.*\),\1,p' .gitmodules | while read path; do
  -    mkdir "$path/.git"
  -    done
  -
  +    # Devendoring
       rm -rf externals/zstd externals/libressl
       cp -r ${zstd.src} externals/zstd
       tar xf ${libressl.src} -C externals/
  
positive.code: , fetchFromGitHub
  , cmake
  , wrapQtAppsHook
  , SDL2
  , qtbase
  , qtmultimedia
  , boost17x
  , libpulseaudio
  , pkg-config
  , libusb1
  , zstd
  , libressl
  , alsa-lib
  , rapidjson
  , aacHleDecoding ? true
  , fdk_aac
  , ffmpeg-full
  }:
  
  stdenv.mkDerivation {
    pname = "citra";
  
negative.code:   '';
  
    # Todo: cubeb audio backend (the default one) doesn't work on the SDL interface.
    # This seems to be a problem with libpulseaudio, other applications have similar problems (e.g Duckstation).
    # Note that the two interfaces have two separate configuration files.
  
    meta = with lib; {
  