biglybt: 3.5.0.0 -> 3.6.0.0
[NixPkgs.git] / pkgs / applications / audio / audacity / default.nix
blob871b8767b1a15effb2c989da07bd1fa043153fd4
1 { stdenv
2 , lib
3 , fetchFromGitHub
4 , cmake
5 , makeWrapper
6 , wrapGAppsHook
7 , pkg-config
8 , python3
9 , gettext
10 , file
11 , libvorbis
12 , libmad
13 , libjack2
14 , lv2
15 , lilv
16 , mpg123
17 , opusfile
18 , rapidjson
19 , serd
20 , sord
21 , sqlite
22 , sratom
23 , suil
24 , libsndfile
25 , soxr
26 , flac
27 , lame
28 , twolame
29 , expat
30 , libid3tag
31 , libopus
32 , libuuid
33 , ffmpeg_6
34 , soundtouch
35 , pcre
36 , portaudio # given up fighting their portaudio.patch?
37 , portmidi
38 , linuxHeaders
39 , alsa-lib
40 , at-spi2-core
41 , dbus
42 , libepoxy
43 , libXdmcp
44 , libXtst
45 , libpthreadstubs
46 , libsbsms_2_3_0
47 , libselinux
48 , libsepol
49 , libxkbcommon
50 , util-linux
51 , wavpack
52 , wxGTK32
53 , gtk3
54 , libpng
55 , libjpeg
56 , AppKit
57 , CoreAudioKit
60 # TODO
61 # 1. detach sbsms
63 stdenv.mkDerivation rec {
64   pname = "audacity";
65   version = "3.5.0";
67   src = fetchFromGitHub {
68     owner = "audacity";
69     repo = "audacity";
70     rev = "Audacity-${version}";
71     hash = "sha256-vJhCONoEC4Bdd1ZOLLobjNgLb/DT6auuMGk8L9lj6TU=";
72   };
74   postPatch = ''
75     mkdir src/private
76     substituteInPlace scripts/build/macOS/fix_bundle.py \
77       --replace "path.startswith('/usr/lib/')" "path.startswith('${builtins.storeDir}')"
78   '' + lib.optionalString stdenv.isLinux ''
79     substituteInPlace libraries/lib-files/FileNames.cpp \
80       --replace /usr/include/linux/magic.h ${linuxHeaders}/include/linux/magic.h
81   '' + lib.optionalString (stdenv.isDarwin && lib.versionOlder stdenv.hostPlatform.darwinMinVersion "11.0") ''
82     sed -z -i "s/NSAppearanceName.*systemAppearance//" src/AudacityApp.mm
83   '';
85   nativeBuildInputs = [
86     cmake
87     gettext
88     pkg-config
89     python3
90     makeWrapper
91     wrapGAppsHook
92   ] ++ lib.optionals stdenv.isLinux [
93     linuxHeaders
94   ];
96   buildInputs = [
97     expat
98     ffmpeg_6
99     file
100     flac
101     gtk3
102     lame
103     libid3tag
104     libjack2
105     libmad
106     libopus
107     libsbsms_2_3_0
108     libsndfile
109     libvorbis
110     lilv
111     lv2
112     mpg123
113     opusfile
114     pcre
115     portmidi
116     rapidjson
117     serd
118     sord
119     soundtouch
120     soxr
121     sqlite
122     sratom
123     suil
124     twolame
125     portaudio
126     wavpack
127     wxGTK32
128   ] ++ lib.optionals stdenv.isLinux [
129     alsa-lib # for portaudio
130     at-spi2-core
131     dbus
132     libepoxy
133     libXdmcp
134     libXtst
135     libpthreadstubs
136     libxkbcommon
137     libselinux
138     libsepol
139     libuuid
140     util-linux
141   ] ++ lib.optionals stdenv.isDarwin [
142     AppKit
143     CoreAudioKit # for portaudio
144     libpng
145     libjpeg
146   ];
148   cmakeFlags = [
149     "-DAUDACITY_BUILD_LEVEL=2"
150     "-DAUDACITY_REV_LONG=nixpkgs"
151     "-DAUDACITY_REV_TIME=nixpkgs"
152     "-DDISABLE_DYNAMIC_LOADING_FFMPEG=ON"
153     "-Daudacity_conan_enabled=Off"
154     "-Daudacity_use_ffmpeg=loaded"
155     "-Daudacity_has_vst3=Off"
156     "-Daudacity_has_crashreports=Off"
158     # RPATH of binary /nix/store/.../bin/... contains a forbidden reference to /build/
159     "-DCMAKE_SKIP_BUILD_RPATH=ON"
161     # Fix duplicate store paths
162     "-DCMAKE_INSTALL_LIBDIR=lib"
163   ];
165   # [ 57%] Generating LightThemeAsCeeCode.h...
166   # ../../utils/image-compiler: error while loading shared libraries:
167   # lib-theme.so: cannot open shared object file: No such file or directory
168   preBuild = ''
169     export LD_LIBRARY_PATH=$PWD/Release/lib/audacity
170   '';
172   doCheck = false; # Test fails
174   dontWrapGApps = true;
176   # Replace audacity's wrapper, to:
177   # - put it in the right place, it shouldn't be in "$out/audacity"
178   # - Add the ffmpeg dynamic dependency
179   postFixup = lib.optionalString stdenv.isLinux ''
180     wrapProgram "$out/bin/audacity" \
181       "''${gappsWrapperArgs[@]}" \
182       --prefix LD_LIBRARY_PATH : "$out/lib/audacity":${lib.makeLibraryPath [ ffmpeg_6 ]} \
183       --suffix AUDACITY_MODULES_PATH : "$out/lib/audacity/modules" \
184       --suffix AUDACITY_PATH : "$out/share/audacity"
185   '' + lib.optionalString stdenv.isDarwin ''
186     mkdir -p $out/{Applications,bin}
187     mv $out/Audacity.app $out/Applications/
188     makeWrapper $out/Applications/Audacity.app/Contents/MacOS/Audacity $out/bin/audacity
189   '';
191   meta = with lib; {
192     description = "Sound editor with graphical UI";
193     mainProgram = "audacity";
194     homepage = "https://www.audacityteam.org";
195     changelog = "https://github.com/audacity/audacity/releases";
196     license = with licenses; [
197       gpl2Plus
198       # Must be GPL3 when building with "technologies that require it,
199       # such as the VST3 audio plugin interface".
200       # https://github.com/audacity/audacity/discussions/2142.
201       gpl3
202       # Documentation.
203       cc-by-30
204     ];
205     maintainers = with maintainers; [ lheckemann veprbl wegank ];
206     platforms = platforms.unix;
207   };