linux_xanmod: 5.11.14 -> 5.11.15
[NixPkgs.git] / pkgs / development / libraries / gstreamer / good / default.nix
blobb08759b8dba19053ebabad96134b27e270ca4cc0
1 { lib, stdenv
2 , fetchurl
3 , meson
4 , nasm
5 , ninja
6 , pkg-config
7 , python3
8 , gst-plugins-base
9 , orc
10 , bzip2
11 , gettext
12 , libv4l
13 , libdv
14 , libavc1394
15 , libiec61883
16 , libvpx
17 , speex
18 , flac
19 , taglib
20 , libshout
21 , cairo
22 , gdk-pixbuf
23 , aalib
24 , libcaca
25 , libsoup
26 , libpulseaudio
27 , libintl
28 , Cocoa
29 , lame
30 , mpg123
31 , twolame
32 , gtkSupport ? false, gtk3
33 , qt5Support ? false, qt5
34 , raspiCameraSupport ? false, libraspberrypi
35 , enableJack ? true, libjack2
36 , libXdamage
37 , libXext
38 , libXfixes
39 , ncurses
40 , wayland
41 , wayland-protocols
42 , xorg
43 , libgudev
44 , wavpack
47 assert raspiCameraSupport -> (stdenv.isLinux && stdenv.isAarch64);
49 stdenv.mkDerivation rec {
50   pname = "gst-plugins-good";
51   version = "1.18.2";
53   outputs = [ "out" "dev" ];
55   src = fetchurl {
56     url = "https://gstreamer.freedesktop.org/src/${pname}/${pname}-${version}.tar.xz";
57     sha256 = "1929nhjsvbl4bw37nfagnfsnxz737cm2x3ayz9ayrn9lwkfm45zp";
58   };
60   nativeBuildInputs = [
61     pkg-config
62     python3
63     meson
64     ninja
65     gettext
66     nasm
67   ] ++ lib.optionals stdenv.isLinux [
68     wayland-protocols
69   ];
71   buildInputs = [
72     gst-plugins-base
73     orc
74     bzip2
75     libdv
76     libvpx
77     speex
78     flac
79     taglib
80     cairo
81     gdk-pixbuf
82     aalib
83     libcaca
84     libsoup
85     libshout
86     lame
87     mpg123
88     twolame
89     libintl
90     libXdamage
91     libXext
92     libXfixes
93     ncurses
94     xorg.libXfixes
95     xorg.libXdamage
96     wavpack
97   ] ++ lib.optionals raspiCameraSupport [
98     libraspberrypi
99   ] ++ lib.optionals gtkSupport [
100     # for gtksink
101     gtk3
102   ] ++ lib.optionals qt5Support (with qt5; [
103     qtbase
104     qtdeclarative
105     qtwayland
106     qtx11extras
107   ]) ++ lib.optionals stdenv.isDarwin [
108     Cocoa
109   ] ++ lib.optionals stdenv.isLinux [
110     libv4l
111     libpulseaudio
112     libavc1394
113     libiec61883
114     libgudev
115     wayland
116   ] ++ lib.optionals enableJack [
117     libjack2
118   ];
120   mesonFlags = [
121     "-Dexamples=disabled" # requires many dependencies and probably not useful for our users
122     "-Ddoc=disabled" # `hotdoc` not packaged in nixpkgs as of writing
123   ] ++ lib.optionals (!qt5Support) [
124     "-Dqt5=disabled"
125   ] ++ lib.optionals (!gtkSupport) [
126     "-Dgtk3=disabled"
127   ] ++ lib.optionals (!enableJack) [
128     "-Djack=disabled"
129   ] ++ lib.optionals (!stdenv.isLinux) [
130     "-Ddv1394=disabled" # Linux only
131     "-Doss4=disabled" # Linux only
132     "-Doss=disabled" # Linux only
133     "-Dpulse=disabled" # TODO check if we can keep this enabled
134     "-Dv4l2-gudev=disabled" # Linux-only
135     "-Dv4l2=disabled" # Linux-only
136     "-Dximagesrc=disabled" # Linux-only
137   ] ++ lib.optionals (!raspiCameraSupport) [
138     "-Drpicamsrc=disabled"
139   ];
141   postPatch = ''
142     patchShebangs \
143       scripts/extract-release-date-from-doap-file.py
144   '';
146   NIX_LDFLAGS = [
147     # linking error on Darwin
148     # https://github.com/NixOS/nixpkgs/pull/70690#issuecomment-553694896
149     "-lncurses"
150   ];
152   # fails 1 tests with "Unexpected critical/warning: g_object_set_is_valid_property: object class 'GstRtpStorage' has no property named ''"
153   doCheck = false;
155   # must be explicitely set since 5590e365
156   dontWrapQtApps = true;
158   meta = with lib; {
159     description = "GStreamer Good Plugins";
160     homepage = "https://gstreamer.freedesktop.org";
161     longDescription = ''
162       a set of plug-ins that we consider to have good quality code,
163       correct functionality, our preferred license (LGPL for the plug-in
164       code, LGPL or LGPL-compatible for the supporting library).
165     '';
166     license = licenses.lgpl2Plus;
167     platforms = platforms.linux ++ platforms.darwin;
168     maintainers = with maintainers; [ matthewbauer ];
169   };