biglybt: 3.5.0.0 -> 3.6.0.0
[NixPkgs.git] / pkgs / applications / audio / fire / default.nix
blobc1ccad191602b905fdf8f317c891a6d5343a3d45
1 { stdenv
2 , lib
3 , fetchFromGitHub
4 , cmake
5 , pkg-config
6 , catch2
7 , libX11
8 , libXrandr
9 , libXinerama
10 , libXext
11 , libXcursor
12 , freetype
13 , alsa-lib
14 , Accelerate
15 , Cocoa
16 , WebKit
17 , CoreServices
18 , DiscRecording
19 , CoreAudioKit
20 , MetalKit
21 , simd
24 let
25   # FetchContent replacement, check CMakeLists.txt for requested versions (Nixpkgs' Catch2 works)
26   readerwriterqueue = fetchFromGitHub {
27     owner = "cameron314";
28     repo = "readerwriterqueue";
29     rev = "v1.0.6";
30     sha256 = "sha256-g7NX7Ucl5GWw3u6TiUOITjhv7492ByTzACtWR0Ph2Jc=";
31   };
33 stdenv.mkDerivation rec {
34   pname = "fire";
35   version = "1.0.0.3";
37   src = fetchFromGitHub {
38     owner = "jerryuhoo";
39     repo = "Fire";
40     rev = "v${version}";
41     fetchSubmodules = true;
42     sha256 = "sha256-X3pzTrNd0G6BouCDkr3dukQTFDzZ7qblIYxFQActKGE=";
43   };
45   patches = [
46     ./0001-Remove-FetchContent-usage.patch
47   ];
49   postPatch = ''
50     # 1. Remove hardcoded LTO flags: needs extra setup on Linux,
51     #    possibly broken on Darwin
52     #    https://github.com/NixOS/nixpkgs/issues/19098
53     # 2. Disable automatic copying of built plugins during buildPhase, it defaults
54     #    into user home and we want to have building & installing separated.
55     sed -i \
56       -e '/juce::juce_recommended_lto_flags/d' \
57       -e 's/COPY_PLUGIN_AFTER_BUILD TRUE/COPY_PLUGIN_AFTER_BUILD FALSE/g' \
58       CMakeLists.txt
59   '';
61   preConfigure = ''
62     ln -s ${readerwriterqueue} readerwriterqueue
63     ln -s ${catch2.src} Catch2
64   '';
66   nativeBuildInputs = [
67     cmake
68     pkg-config
69   ];
71   buildInputs = lib.optionals stdenv.hostPlatform.isLinux [
72     libX11
73     libXrandr
74     libXinerama
75     libXext
76     libXcursor
77     freetype
78     alsa-lib
79   ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
80     Accelerate
81     Cocoa
82     WebKit
83     CoreServices
84     DiscRecording
85     CoreAudioKit
86     MetalKit
87     simd
88   ];
90   installPhase = let
91     vst3Dir = "${placeholder "out"}/${if stdenv.hostPlatform.isDarwin then "Library/Audio/Plug-Ins/VST3" else "lib/vst3"}";
92     auDir = "${placeholder "out"}/Library/Audio/Plug-Ins/Components";
93   in ''
94     runHook preInstall
96     mkdir -p ${vst3Dir}
97     # Exact path of the build artefact depends on used CMAKE_BUILD_TYPE
98     cp -R Fire_artefacts/*/VST3/* ${vst3Dir}/
99   '' + lib.optionalString stdenv.hostPlatform.isDarwin ''
100     mkdir -p ${auDir}
101     cp -R Fire_artefacts/*/AU/* ${auDir}/
102   '' + ''
104     runHook postInstall
105   '';
107   # Fails to find fp.h on its own
108   env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.hostPlatform.isDarwin "-isystem ${CoreServices}/Library/Frameworks/CoreServices.framework/Versions/Current/Frameworks/CarbonCore.framework/Versions/Current/Headers/";
110   doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
112   meta = with lib; {
113     description = "Multi-band distortion plugin by Wings";
114     homepage = "https://github.com/jerryuhoo/Fire";
115     license = licenses.agpl3Only; # Not clarified if Only or Plus
116     platforms = platforms.unix;
117     maintainers = with maintainers; [ OPNA2608 ];
118   };