nerdfonts: fix wrong attribute name in error message (#364463)
[NixPkgs.git] / pkgs / development / libraries / pipewire / default.nix
blobc7bdcdff2454d476971652b438b284df5bf78485
2   stdenv,
3   lib,
4   fetchFromGitLab,
5   python3,
6   meson,
7   ninja,
8   elogind,
9   systemd,
10   enableSystemd ? true, # enableSystemd=false maintained by maintainers.qyliss.
11   pkg-config,
12   docutils,
13   doxygen,
14   graphviz,
15   glib,
16   dbus,
17   alsa-lib,
18   libjack2,
19   libusb1,
20   udev,
21   libsndfile,
22   vulkanSupport ? true,
23   vulkan-headers,
24   vulkan-loader,
25   webrtc-audio-processing,
26   webrtc-audio-processing_1,
27   ncurses,
28   readline, # meson can't find <7 as those versions don't have a .pc file
29   lilv,
30   makeFontsConf,
31   nixosTests,
32   valgrind,
33   libcamera,
34   libdrm,
35   gst_all_1,
36   ffmpeg,
37   bluez,
38   sbc,
39   libfreeaptx,
40   liblc3,
41   fdk_aac,
42   libopus,
43   ldacbt,
44   modemmanager,
45   libpulseaudio,
46   zeroconfSupport ? true,
47   avahi,
48   raopSupport ? true,
49   openssl,
50   rocSupport ? true,
51   roc-toolkit,
52   x11Support ? true,
53   libcanberra,
54   xorg,
55   libmysofa,
56   ffadoSupport ? x11Support && lib.systems.equals stdenv.buildPlatform stdenv.hostPlatform,
57   ffado,
58   libselinux,
61 stdenv.mkDerivation (finalAttrs: {
62   pname = "pipewire";
63   version = "1.2.6";
65   outputs = [
66     "out"
67     "jack"
68     "dev"
69     "doc"
70     "man"
71     "installedTests"
72   ];
74   src = fetchFromGitLab {
75     domain = "gitlab.freedesktop.org";
76     owner = "pipewire";
77     repo = "pipewire";
78     rev = finalAttrs.version;
79     sha256 = "sha256-AmrbA1YQBeETLC9u9rQ2f85rG9TASvcbCZ/Xlz7ICdY=";
80   };
82   patches = [
83     # Load libjack from a known location
84     ./0060-libjack-path.patch
85     # Move installed tests into their own output.
86     ./0070-installed-tests-path.patch
87   ];
89   strictDeps = true;
90   nativeBuildInputs = [
91     docutils
92     doxygen
93     graphviz
94     meson
95     ninja
96     pkg-config
97     python3
98     glib
99   ];
101   buildInputs =
102     [
103       alsa-lib
104       bluez
105       dbus
106       fdk_aac
107       ffmpeg
108       glib
109       gst_all_1.gst-plugins-base
110       gst_all_1.gstreamer
111       libcamera
112       libjack2
113       libfreeaptx
114       liblc3
115       libmysofa
116       libopus
117       libpulseaudio
118       libusb1
119       libselinux
120       libsndfile
121       lilv
122       modemmanager
123       ncurses
124       readline
125       sbc
126     ]
127     ++ (
128       if enableSystemd then
129         [ systemd ]
130       else
131         [
132           elogind
133           udev
134         ]
135     )
136     ++ (
137       if lib.meta.availableOn stdenv.hostPlatform webrtc-audio-processing_1 then
138         [ webrtc-audio-processing_1 ]
139       else
140         [ webrtc-audio-processing ]
141     )
142     ++ lib.optional (lib.meta.availableOn stdenv.hostPlatform ldacbt) ldacbt
143     ++ lib.optional zeroconfSupport avahi
144     ++ lib.optional raopSupport openssl
145     ++ lib.optional rocSupport roc-toolkit
146     ++ lib.optionals vulkanSupport [
147       libdrm
148       vulkan-headers
149       vulkan-loader
150     ]
151     ++ lib.optionals x11Support [
152       libcanberra
153       xorg.libX11
154       xorg.libXfixes
155     ]
156     ++ lib.optional ffadoSupport ffado;
158   # Valgrind binary is required for running one optional test.
159   nativeCheckInputs = lib.optional (lib.meta.availableOn stdenv.hostPlatform valgrind) valgrind;
161   mesonFlags = [
162     (lib.mesonEnable "docs" true)
163     (lib.mesonOption "udevrulesdir" "lib/udev/rules.d")
164     (lib.mesonEnable "installed_tests" true)
165     (lib.mesonOption "installed_test_prefix" (placeholder "installedTests"))
166     (lib.mesonOption "libjack-path" "${placeholder "jack"}/lib")
167     (lib.mesonEnable "libcamera" true)
168     (lib.mesonEnable "libffado" ffadoSupport)
169     (lib.mesonEnable "roc" rocSupport)
170     (lib.mesonEnable "libpulse" true)
171     (lib.mesonEnable "avahi" zeroconfSupport)
172     (lib.mesonEnable "gstreamer" true)
173     (lib.mesonEnable "gstreamer-device-provider" true)
174     (lib.mesonOption "logind-provider" (if enableSystemd then "libsystemd" else "libelogind"))
175     (lib.mesonEnable "systemd" enableSystemd)
176     (lib.mesonEnable "systemd-system-service" enableSystemd)
177     (lib.mesonEnable "udev" (!enableSystemd))
178     (lib.mesonEnable "ffmpeg" true)
179     (lib.mesonEnable "pw-cat-ffmpeg" true)
180     (lib.mesonEnable "bluez5" true)
181     (lib.mesonEnable "bluez5-backend-hsp-native" true)
182     (lib.mesonEnable "bluez5-backend-hfp-native" true)
183     (lib.mesonEnable "bluez5-backend-native-mm" true)
184     (lib.mesonEnable "bluez5-backend-ofono" true)
185     (lib.mesonEnable "bluez5-backend-hsphfpd" true)
186     # source code is not easily obtainable
187     (lib.mesonEnable "bluez5-codec-lc3plus" false)
188     (lib.mesonEnable "bluez5-codec-lc3" true)
189     (lib.mesonEnable "bluez5-codec-ldac" (lib.meta.availableOn stdenv.hostPlatform ldacbt))
190     (lib.mesonEnable "opus" true)
191     (lib.mesonOption "sysconfdir" "/etc")
192     (lib.mesonEnable "raop" raopSupport)
193     (lib.mesonOption "session-managers" "")
194     (lib.mesonEnable "vulkan" vulkanSupport)
195     (lib.mesonEnable "x11" x11Support)
196     (lib.mesonEnable "x11-xfixes" x11Support)
197     (lib.mesonEnable "libcanberra" x11Support)
198     (lib.mesonEnable "libmysofa" true)
199     (lib.mesonEnable "sdl2" false) # required only to build examples, causes dependency loop
200     (lib.mesonBool "rlimits-install" false) # installs to /etc, we won't use this anyway
201     (lib.mesonEnable "compress-offload" true)
202     (lib.mesonEnable "man" true)
203     (lib.mesonEnable "snap" false) # we don't currently have a working snapd
204   ];
206   # Fontconfig error: Cannot load default config file
207   FONTCONFIG_FILE = makeFontsConf { fontDirectories = [ ]; };
209   doCheck = true;
211   postUnpack = ''
212     patchShebangs source/doc/*.py
213     patchShebangs source/doc/input-filter-h.sh
214   '';
216   postInstall = ''
217     moveToOutput "bin/pw-jack" "$jack"
218   '';
220   passthru.tests.installed-tests = nixosTests.installed-tests.pipewire;
222   meta = with lib; {
223     description = "Server and user space API to deal with multimedia pipelines";
224     changelog = "https://gitlab.freedesktop.org/pipewire/pipewire/-/releases/${finalAttrs.version}";
225     homepage = "https://pipewire.org/";
226     license = licenses.mit;
227     platforms = platforms.linux;
228     maintainers = with maintainers; [
229       kranzes
230       k900
231     ];
232   };