1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 fetchpatch,
6 cmake,
7 pkg-config,
8 which,
9 alsa-lib,
10 curl,
11 faust,
12 flac,
13 gnutls,
14 libjack2,
15 libmicrohttpd,
16 libmpg123,
17 libogg,
18 libopus,
19 libsndfile,
20 libtasn1,
21 libvorbis,
22 libxcb,
23 llvm,
24 p11-kit,
25 qrencode,
26 qt5,
27}:
28
29stdenv.mkDerivation rec {
30 pname = "faustlive";
31 version = "2.5.17";
32 src = fetchFromGitHub {
33 owner = "grame-cncm";
34 repo = "faustlive";
35 rev = version;
36 hash = "sha256-RqtdDkP63l/30sL5PDocvpar5TI4LdKfeeliSNeOHog=";
37 fetchSubmodules = true;
38 };
39
40 patches = [
41 # move mutex initialization outside assert call
42 # https://github.com/grame-cncm/faustlive/pull/59
43 (fetchpatch {
44 name = "initalize-mutexes.patch";
45 url = "https://github.com/grame-cncm/faustlive/commit/fdd46b12202def9731b9ed2f6363287af16be892.patch";
46 hash = "sha256-yH95Y4Jbqgs8siE9rtutmu5C2sNZwQMJzCgDYqNBDj4=";
47 })
48 ];
49
50 strictDeps = true;
51
52 nativeBuildInputs = [
53 cmake
54 faust
55 llvm
56 pkg-config
57 qt5.wrapQtAppsHook
58 which
59 ];
60
61 buildInputs = [
62 alsa-lib
63 curl
64 faust
65 flac
66 gnutls
67 libjack2
68 libmicrohttpd
69 libmpg123
70 libogg
71 libopus
72 libsndfile
73 libtasn1
74 libvorbis
75 libxcb
76 llvm
77 p11-kit
78 qrencode
79 qt5.qtbase
80 ];
81
82 cmakeFlags = [
83 "-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON"
84 ];
85
86 postPatch = "cd Build";
87
88 meta = with lib; {
89 description = "Standalone just-in-time Faust compiler";
90 mainProgram = "FaustLive";
91 longDescription = ''
92 FaustLive is a standalone just-in-time Faust compiler. It tries to bring
93 together the convenience of a standalone interpreted language with the
94 efficiency of a compiled language. It's ideal for fast prototyping.
95 '';
96 homepage = "https://faust.grame.fr/";
97 license = licenses.gpl3;
98 maintainers = with maintainers; [ magnetophon ];
99 };
100}