{ python3 , runCommand , setuptools , copyDesktopItems , pygobject3 , wrapGAppsHook , gtk3 , spice-gtk , gnome , gobject-introspection , clan-cli , makeDesktopItem , ipdb }: let source = ./.; in python3.pkgs.buildPythonApplication { name = "clan-vm-manager"; src = source; format = "pyproject"; makeWrapperArgs = [ # This prevents problems with mixed glibc versions that might occur when the # cli is called through a browser built against another glibc "--unset LD_LIBRARY_PATH" ]; nativeBuildInputs = [ setuptools copyDesktopItems wrapGAppsHook gobject-introspection ]; buildInputs = [ spice-gtk gtk3 gnome.adwaita-icon-theme ]; propagatedBuildInputs = [ ipdb pygobject3 clan-cli ]; # also re-expose dependencies so we test them in CI passthru.tests = { clan-vm-manager-no-breakpoints = runCommand "clan-vm-manager-no-breakpoints" { } '' if grep --include \*.py -Rq "breakpoint()" ${source}; then echo "breakpoint() found in ${source}:" grep --include \*.py -Rn "breakpoint()" ${source} exit 1 fi touch $out ''; }; # Don't leak python packages into a devshell. # It can be very confusing if you `nix run` than load the cli from the devshell instead. postFixup = '' rm $out/nix-support/propagated-build-inputs ''; checkPhase = '' PYTHONPATH= $out/bin/clan-vm-manager --help ''; meta.mainProgram = "clan"; desktopItems = [ (makeDesktopItem { name = "clan-vm-manager"; # TODO: this subcommand is not implemented yet exec = "clan-vm-manager join %u"; desktopName = "CLan VM Manager"; startupWMClass = "clan"; mimeTypes = [ "x-scheme-handler/clan" ]; }) ]; }