{ lib , fetchFromGitHub , fetchpatch , python3 , glibcLocales , gobject-introspection , wrapGAppsHook3 , gtk3 , keybinder3 , libnotify , libutempter , vte , libwnck , dconf , nixosTests }: python3.pkgs.buildPythonApplication rec { pname = "guake"; version = "3.10"; pyproject = false; src = fetchFromGitHub { owner = "Guake"; repo = "guake"; rev = "refs/tags/${version}"; hash = "sha256-e6Bf4HDftHBxFPcw9z02CqgZhSIvt6wlLF6dnIh9fEc="; }; patches = [ # Avoid trying to recompile schema at runtime, # the package should be responsible for ensuring it is up to date. # Without this, the package will try to run glib-compile-schemas # on every update, which is pointless and will crash # unless user has it installed. ./no-compile-schemas.patch # Avoid using pip since it fails on not being able to find setuptools. # Note: This is not a long-term solution, setup.py is deprecated. (fetchpatch { url = "https://github.com/Guake/guake/commit/14abaa0c69cfab64fe3467fbbea211d830042de8.patch"; hash = "sha256-RjGRFJDTQX2meAaw3UZi/3OxAtIHbRZVpXTbcJk/scY= "; revert = true; }) # Revert switch to FHS. (fetchpatch { url = "https://github.com/Guake/guake/commit/8c7a23ba62ee262c033dfa5b0b18d3df71361ff4.patch"; hash = "sha256-0asXI08XITkFc73EUenV9qxY/Eak+TzygRRK7GvhQUc="; revert = true; }) ]; nativeBuildInputs = [ gobject-introspection wrapGAppsHook3 python3.pkgs.pip ]; buildInputs = [ glibcLocales gtk3 keybinder3 libnotify libwnck python3 vte ]; makeWrapperArgs = [ "--set LOCALE_ARCHIVE ${glibcLocales}/lib/locale/locale-archive" ]; propagatedBuildInputs = with python3.pkgs; [ dbus-python pycairo pygobject3 setuptools-scm pyyaml ]; makeFlags = [ "PREFIX=${placeholder "out"}" ]; preFixup = '' gappsWrapperArgs+=( --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ libutempter ]}" # For settings migration. --prefix PATH : "${lib.makeBinPath [ dconf ]}" ) ''; passthru.tests.test = nixosTests.terminal-emulators.guake; meta = with lib; { description = "Drop-down terminal for GNOME"; homepage = "http://guake-project.org"; license = licenses.gpl2Plus; maintainers = [ maintainers.msteen ]; platforms = platforms.linux; }; }