{ lib , fetchurl , python3Packages , mercurial , qt5 }: python3Packages.buildPythonApplication rec { pname = "tortoisehg"; version = "6.6.3"; src = fetchurl { url = "https://www.mercurial-scm.org/release/tortoisehg/targz/tortoisehg-${version}.tar.gz"; sha256 = "sha256-9pg1N5uj1ZaZCAm4N8toRwfVHme7nAsNMZkXSRgFves="; }; nativeBuildInputs = [ qt5.wrapQtAppsHook ]; propagatedBuildInputs = with python3Packages; [ mercurial # The one from python3Packages qscintilla-qt5 iniparse ]; buildInputs = [ # Makes wrapQtAppsHook add these qt libraries to the wrapper search paths qt5.qtwayland ]; # In order to spare double wrapping, we use: preFixup = '' makeWrapperArgs+=("''${qtWrapperArgs[@]}") ''; # Convenient alias postInstall = '' ln -s $out/bin/thg $out/bin/tortoisehg ''; # In python3Packages.buildPythonApplication doCheck is always true, and we # override it to not run the default unittests checkPhase = '' runHook preCheck $out/bin/thg version | grep -q "${version}" # Detect breakage of thg in case of out-of-sync mercurial update. In that # case any thg subcommand just opens up an gui dialog with a description of # version mismatch. echo "thg smoke test" $out/bin/thg -h > help.txt & sleep 1s grep -q "list of commands" help.txt runHook postCheck ''; passthru = { # If at some point we'll override this argument, it might be useful to have # access to it here. inherit mercurial; }; meta = { description = "Qt based graphical tool for working with Mercurial"; homepage = "https://tortoisehg.bitbucket.io/"; license = lib.licenses.gpl2Only; platforms = lib.platforms.linux; maintainers = with lib.maintainers; [ danbst gbtb ]; }; }