1{
2 lib,
3 stdenv,
4 fetchFromGitLab,
5 fetchpatch,
6 fftw,
7 liblo,
8 libsndfile,
9 makeDesktopItem,
10 portaudio,
11 qmake,
12 qtbase,
13 wrapQtAppsHook,
14}:
15
16stdenv.mkDerivation rec {
17 pname = "samplebrain";
18 version = "0.18.5";
19
20 src = fetchFromGitLab {
21 owner = "then-try-this";
22 repo = "samplebrain";
23 rev = "v${version}_release";
24 hash = "sha256-/pMHmwly5Dar7w/ZawvR3cWQHw385GQv/Wsl1E2w5p4=";
25 };
26
27 patches = [
28 # Fixes build with recent liblo, see https://gitlab.com/then-try-this/samplebrain/-/merge_requests/16
29 (fetchpatch {
30 url = "https://gitlab.com/then-try-this/samplebrain/-/commit/032fd7c03931d1ca2d5c3d5e29901569aa2b2a86.patch";
31 hash = "sha256-aaZJh/vx8fOqrJTuFzQ9+1mXvDQQXLy1k/2SwkMkVk4=";
32 })
33 ];
34
35 nativeBuildInputs = [
36 qmake
37 wrapQtAppsHook
38 ];
39
40 buildInputs = [
41 fftw
42 liblo
43 libsndfile
44 portaudio
45 qtbase
46 ];
47
48 desktopItem = makeDesktopItem {
49 type = "Application";
50 desktopName = pname;
51 name = pname;
52 comment = "A sample masher designed by Aphex Twin";
53 exec = pname;
54 icon = pname;
55 categories = [ "Audio" ];
56 };
57
58 installPhase = ''
59 mkdir -p $out/bin
60 cp samplebrain $out/bin
61 install -m 444 -D desktop/samplebrain.svg $out/share/icons/hicolor/scalable/apps/samplebrain.svg
62 '';
63
64 meta = {
65 description = "Custom sample mashing app";
66 mainProgram = "samplebrain";
67 homepage = "https://thentrythis.org/projects/samplebrain";
68 changelog = "https://gitlab.com/then-try-this/samplebrain/-/releases/v${version}_release";
69 maintainers = with lib.maintainers; [ mitchmindtree ];
70 license = lib.licenses.gpl2;
71 platforms = lib.platforms.linux;
72 };
73}