{ mkDerivation, lib, extra-cmake-modules, kdoctools
, breeze-icons, karchive, kconfig, kcrash, kdbusaddons, ki18n
, kiconthemes, kitemmodels, khtml, kio, kparts, kpty, kservice, kwidgetsaddons
, libarchive, libzip
# Archive tools
, p7zip, lrzip, unar
# Unfree tools
, unfreeEnableUnrar ? false, unrar
}:

let
  extraTools = [ p7zip lrzip unar ] ++ lib.optional unfreeEnableUnrar unrar;
in

mkDerivation {
  pname = "ark";

  outputs = [ "out" "dev" ];

  nativeBuildInputs = [ extra-cmake-modules kdoctools ];

  buildInputs = [ libarchive libzip ] ++ extraTools;

  propagatedBuildInputs = [
    breeze-icons karchive kconfig kcrash kdbusaddons khtml ki18n kiconthemes kio
    kitemmodels kparts kpty kservice kwidgetsaddons
  ];

  qtWrapperArgs = [ "--prefix" "PATH" ":" (lib.makeBinPath extraTools) ];

  meta = with lib; {
    homepage = "https://apps.kde.org/ark/";
    description = "Graphical file compression/decompression utility";
    mainProgram = "ark";
    license = with licenses; [ gpl2 lgpl3 ] ++ optional unfreeEnableUnrar unfree;
    maintainers = [ maintainers.ttuegel ];
  };
}
