Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1{
2 stdenv,
3 lib,
4 fetchFromGitHub,
5 cmake,
6 pkg-config,
7 alsa-lib,
8 freetype,
9 libjack2,
10 lv2,
11 libX11,
12 libXcursor,
13 libXext,
14 libXinerama,
15 libXrandr,
16 libGL,
17 gcc-unwrapped,
18}:
19
20stdenv.mkDerivation rec {
21 pname = "odin2";
22 version = "2.3.4";
23
24 src = fetchFromGitHub {
25 owner = "TheWaveWarden";
26 repo = "odin2";
27 rev = "v${version}";
28 fetchSubmodules = true;
29 hash = "sha256-N96Nb7G6hqfh8DyMtHbttl/fRZUkS8f2KfPSqeMAhHY=";
30 };
31
32 postPatch = ''
33 sed '1i#include <utility>' -i \
34 libs/JUCELV2/modules/juce_gui_basics/windows/juce_ComponentPeer.h # gcc12
35 '';
36
37 nativeBuildInputs = [
38 cmake
39 pkg-config
40 ];
41
42 buildInputs = [
43 alsa-lib
44 freetype
45 libjack2
46 lv2
47 libX11
48 libXcursor
49 libXext
50 libXinerama
51 libXrandr
52 libGL
53 ];
54
55 # JUCE dlopen's these at runtime, crashes without them
56 NIX_LDFLAGS = (
57 toString [
58 "-lX11"
59 "-lXext"
60 "-lXcursor"
61 "-lXinerama"
62 "-lXrandr"
63 ]
64 );
65
66 cmakeFlags = [
67 "-DCMAKE_AR=${gcc-unwrapped}/bin/gcc-ar"
68 "-DCMAKE_RANLIB=${gcc-unwrapped}/bin/gcc-ranlib"
69 "-DCMAKE_NM=${gcc-unwrapped}/bin/gcc-nm"
70 ];
71
72 installPhase = ''
73 mkdir -p $out/bin $out/lib/vst3 $out/lib/lv2 $out/lib/clap
74 cd Odin2_artefacts/Release
75 cp Standalone/Odin2 $out/bin
76 cp -r VST3/Odin2.vst3 $out/lib/vst3
77 cp -r LV2/Odin2.lv2 $out/lib/lv2
78 cp -r CLAP/Odin2.clap $out/lib/clap
79 '';
80
81 meta = with lib; {
82 description = "Odin 2 Synthesizer Plugin";
83 homepage = "https://thewavewarden.com/odin2";
84 license = licenses.gpl3;
85 platforms = [ "x86_64-linux" ];
86 maintainers = with maintainers; [ magnetophon ];
87 mainProgram = "Odin2";
88 };
89}