{ lib, fetchFromGitHub, python3Packages, wrapQtAppsHook }: python3Packages.buildPythonApplication rec { pname = "friture"; version = "0.49"; src = fetchFromGitHub { owner = "tlecomte"; repo = pname; rev = "v${version}"; sha256 = "sha256-xKgyBV/Qc+9PgXyxcT0xG1GXLC6KnjavJ/0SUE+9VSY="; }; nativeBuildInputs = (with python3Packages; [ numpy cython scipy ]) ++ [ wrapQtAppsHook ]; propagatedBuildInputs = with python3Packages; [ sounddevice pyopengl pyopengl-accelerate docutils numpy pyqt5 appdirs pyrr rtmixer ]; postPatch = '' # Remove version constraints from Python dependencies in setup.py sed -i -E "s/\"([A-Za-z0-9]+)(=|>|<)=[0-9\.]+\"/\"\1\"/g" setup.py ''; preFixup = '' makeWrapperArgs+=("''${qtWrapperArgs[@]}") ''; postInstall = '' substituteInPlace $out/share/applications/friture.desktop --replace usr/bin/friture friture for size in 16 32 128 256 512 do mkdir -p $out/share/icons/hicolor/$size\x$size cp $src/resources/images/friture.iconset/icon_$size\x$size.png $out/share/icons/hicolor/$size\x$size/friture.png done mkdir -p $out/share/icons/hicolor/scalable/apps/ cp $src/resources/images-src/window-icon.svg $out/share/icons/hicolor/scalable/apps/friture.svg ''; meta = with lib; { description = "A real-time audio analyzer"; mainProgram = "friture"; homepage = "https://friture.org/"; license = licenses.gpl3; platforms = platforms.linux; # fails on Darwin maintainers = with maintainers; [ laikq alyaeanyx ]; }; }