nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 lib,
3 stdenv,
4 cairo,
5 fetchurl,
6 gst_all_1,
7 jack2,
8 ladspaH,
9 libGL,
10 libGLU,
11 libXrandr,
12 libsndfile,
13 lv2,
14 php84,
15 pkg-config,
16
17 buildVST3 ? true,
18 buildVST2 ? true,
19 buildCLAP ? true,
20 buildLV2 ? true,
21 buildLADSPA ? true,
22 buildJACK ? true,
23 buildGStreamer ? true,
24}:
25
26let
27 php = php84;
28
29 subFeatures = [
30 (lib.optionalString (!buildVST3) "vst3")
31 (lib.optionalString (!buildVST2) "vst2")
32 (lib.optionalString (!buildCLAP) "clap")
33 (lib.optionalString (!buildLV2) "lv2")
34 (lib.optionalString (!buildLADSPA) "ladspa")
35 (lib.optionalString (!buildJACK) "jack")
36 (lib.optionalString (!buildGStreamer) "gst")
37 ];
38in
39
40stdenv.mkDerivation (finalAttrs: {
41 pname = "lsp-plugins";
42 version = "1.2.26";
43
44 outputs = [
45 "out"
46 "dev"
47 "doc"
48 ];
49
50 src = fetchurl {
51 url = "https://github.com/lsp-plugins/lsp-plugins/releases/download/${finalAttrs.version}/lsp-plugins-src-${finalAttrs.version}.tar.gz";
52 hash = "sha256-RIMqmSJkF90u+nSICZCj3nGrAx1mfUXsPQb3lXicCfM=";
53 };
54
55 # By default, GStreamer plugins are installed right alongside GStreamer itself
56 # We can't do that in Nixpkgs, so lets install it to $out/lib like other plugins
57 postPatch = ''
58 substituteInPlace modules/lsp-plugin-fw/src/Makefile \
59 --replace-fail '$(shell pkg-config --variable=pluginsdir gstreamer-1.0)' '$(LIBDIR)/gstreamer-1.0'
60 '';
61
62 nativeBuildInputs = [
63 php
64 pkg-config
65 ];
66
67 buildInputs = [
68 cairo
69 gst_all_1.gst-plugins-base
70 gst_all_1.gstreamer
71 jack2
72 ladspaH
73 libGL
74 libGLU
75 libXrandr
76 libsndfile
77 lv2
78 ];
79
80 makeFlags = [
81 "ETCDIR=${placeholder "out"}/etc"
82 "PREFIX=${placeholder "out"}"
83 "SHAREDDIR=${placeholder "out"}/share"
84 ];
85
86 env.NIX_CFLAGS_COMPILE = "-DLSP_NO_EXPERIMENTAL";
87
88 configurePhase = ''
89 runHook preConfigure
90
91 make $makeFlags config SUB_FEATURES="${lib.concatStringsSep " " subFeatures}"
92
93 runHook postConfigure
94 '';
95
96 doCheck = true;
97
98 enableParallelBuilding = true;
99
100 meta = {
101 description = "Collection of open-source audio plugins";
102 longDescription = ''
103 Compatible with the following formats:
104
105 - CLAP - set of plugins for Clever Audio Plugins API
106 - LADSPA - set of plugins for Linux Audio Developer's Simple Plugin API
107 - LV2 - set of plugins and UIs for Linux Audio Developer's Simple Plugin API (LADSPA) version 2
108 - LinuxVST - set of plugins and UIs for Steinberg's VST 2.4 format ported on GNU/Linux Platform
109 - VST3 - set of plugins and UIs for Steinberg's VST 3 format
110 - JACK - Standalone versions for JACK Audio connection Kit with UI
111
112 Contains the following plugins (https://lsp-plug.in/?page=plugins)
113
114 Equalizers:
115 - Filter
116 - Graphic Equalizer
117 - Parametric Equalizer
118
119 Dynamic Processing:
120 - Beat Breather
121 - Clipper
122 - Compressor
123 - Dynamics Processor
124 - Expander
125 - Gate
126 - Limiter
127
128 Multiband Dynamic Processing:
129 - GOTT Compressor
130 - Multiband Clipper
131 - Multiband Compressor
132 - Multiband Dynamics Processor
133 - Multiband Expander
134 - Multiband Gate
135 - Multiband Limiter
136
137 Convolution / Reverb Processing:
138 - Impulse Responses
139 - Impulse Reverb
140 - Room Builder
141
142 Delay Effects:
143 - Artistic Delay
144 - Compensation Delay
145 - Slap-back Delay
146
147 Modulation Effects:
148 - Chorus
149 - Flanger
150 - Phaser
151
152 Analyzers:
153 - Oscilloscope
154 - Phase Detector
155 - Spectrum Analyzer
156
157 Multiband Processing:
158 - Crossover
159
160 Samplers:
161 - Multisampler
162 - Sampler
163
164 Generators / Oscillators:
165 - Noise Generator
166 - Oscillator
167
168 Utility Plugins:
169 - A/B Test Plugin
170 - Automatic Gain Control
171 - Latency Meter
172 - Loudness Compensator
173 - Mixer
174 - Profiler
175 - Referencer
176 - Return
177 - Ring Modulated Sidechain
178 - Send
179 - Surge Filter
180 - Trigger
181
182 Matcher plugins:
183 - Matcher
184 - Sidechain Matcher
185 '';
186 homepage = "https://lsp-plug.in";
187 changelog = "https://github.com/lsp-plugins/lsp-plugins/releases/tag/${finalAttrs.version}";
188 maintainers = with lib.maintainers; [
189 magnetophon
190 PowerUser64
191 ];
192 license = lib.licenses.gpl2;
193 platforms = lib.platforms.linux;
194 };
195})