{ lib, stdenv, fetchFromGitHub, python3, wrapGAppsHook3, gobject-introspection, glib, gtk3, qt5, makeDesktopItem, copyDesktopItems, withCurses ? false, withGTK ? false, withQT ? false, }: let mkDesktopItem = name: desktopName: comment: terminal: makeDesktopItem { inherit name desktopName comment terminal ; icon = "trackma"; exec = name + " %u"; type = "Application"; categories = [ "Network" ]; }; in python3.pkgs.buildPythonApplication rec { pname = "trackma"; version = "0.9"; format = "pyproject"; src = fetchFromGitHub { owner = "z411"; repo = "trackma"; tag = "v${version}"; sha256 = "Hov9qdVabu1k3SIoUmvcRtSK8TcETqGPXI2RqN/bei4="; fetchSubmodules = true; # for anime-relations submodule }; nativeBuildInputs = [ copyDesktopItems python3.pkgs.poetry-core ] ++ lib.optionals withGTK [ wrapGAppsHook3 gobject-introspection ] ++ lib.optionals withQT [ qt5.wrapQtAppsHook ]; buildInputs = lib.optionals withGTK [ glib gtk3 ]; propagatedBuildInputs = with python3.pkgs; ( [ requests ] ++ lib.optionals withQT [ pyqt5 ] ++ lib.optionals withGTK [ pycairo pygobject3 ] ++ lib.optionals withCurses [ urwid ] ++ lib.optionals stdenv.hostPlatform.isLinux [ pydbus pyinotify ] ++ lib.optionals (withGTK || withQT) [ pillow ] ); dontWrapQtApps = true; dontWrapGApps = true; preFixup = lib.optional withQT "wrapQtApp $out/bin/trackma-qt" ++ lib.optional withGTK "wrapGApp $out/bin/trackma-gtk"; desktopItems = lib.optional withQT ( mkDesktopItem "trackma-qt" "Trackma (Qt)" "Trackma Updater (Qt-frontend)" false ) ++ lib.optional withGTK ( mkDesktopItem "trackma-gtk" "Trackma (GTK)" "Trackma Updater (Gtk-frontend)" false ) ++ lib.optional withCurses ( mkDesktopItem "trackma-curses" "Trackma (ncurses)" "Trackma Updater (ncurses frontend)" true ); postInstall = '' install -Dvm444 $src/trackma/data/icon.png $out/share/pixmaps/trackma.png ''; doCheck = false; pythonImportsCheck = [ "trackma" ]; postDist = lib.optional (!withQT) "rm $out/bin/trackma-qt" ++ lib.optional (!withGTK) "rm $out/bin/trackma-gtk" ++ lib.optional (!withCurses) "rm $out/bin/trackma-curses"; passthru.updateScript = ./update.sh; meta = with lib; { homepage = "https://github.com/z411/trackma"; description = "Open multi-site list manager for Unix-like systems (ex-wMAL)"; license = licenses.gpl3Plus; platforms = platforms.linux; maintainers = [ ]; }; }