lol
1{
2 lib,
3 fetchFromGitHub,
4 python3Packages,
5 qt5,
6}:
7
8python3Packages.buildPythonApplication rec {
9 pname = "friture";
10 version = "0.51";
11 pyproject = true;
12
13 src = fetchFromGitHub {
14 owner = "tlecomte";
15 repo = "friture";
16 rev = "v${version}";
17 hash = "sha256-1Swkk7bhQTSo17Gj0i1VNiIt+fSXgDIeWfJ9LpoUEHg=";
18 };
19
20 postPatch = ''
21 sed -i -e 's/==.*"/"/' -e '/packages=\[/a "friture.playback",' pyproject.toml
22 sed -i -e 's/tostring/tobytes/' friture/spectrogram_image.py
23 '';
24
25 nativeBuildInputs =
26 (with python3Packages; [
27 numpy
28 cython
29 scipy
30 setuptools
31 ])
32 ++ (with qt5; [ wrapQtAppsHook ]);
33
34 buildInputs = with qt5; [ qtquickcontrols2 ];
35
36 propagatedBuildInputs = with python3Packages; [
37 sounddevice
38 pyopengl
39 pyopengl-accelerate
40 docutils
41 numpy
42 pyqt5
43 appdirs
44 pyrr
45 rtmixer
46 ];
47
48 preFixup = ''
49 makeWrapperArgs+=("''${qtWrapperArgs[@]}")
50 '';
51
52 postInstall = ''
53 substituteInPlace $out/share/applications/friture.desktop --replace usr/bin/friture friture
54
55 for size in 16 32 128 256 512
56 do
57 mkdir -p $out/share/icons/hicolor/$size\x$size
58 cp $src/resources/images/friture.iconset/icon_$size\x$size.png $out/share/icons/hicolor/$size\x$size/friture.png
59 done
60 mkdir -p $out/share/icons/hicolor/scalable/apps/
61 cp $src/resources/images-src/window-icon.svg $out/share/icons/hicolor/scalable/apps/friture.svg
62 '';
63
64 meta = with lib; {
65 description = "Real-time audio analyzer";
66 mainProgram = "friture";
67 homepage = "https://friture.org/";
68 license = licenses.gpl3;
69 platforms = platforms.linux; # fails on Darwin
70 maintainers = with maintainers; [
71 laikq
72 pentane
73 ];
74 };
75}