Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / misc / apulse / pressureaudio.nix
blob638334f44a5d1db2bc9da00a3e220c17780166b0
1 { stdenv, apulse, libpulseaudio, pkg-config, intltool }:
3 stdenv.mkDerivation {
4   pname = "libpressureaudio";
5   version = apulse.version;
7   src = libpulseaudio.src;
9   nativeBuildInputs = [ pkg-config intltool ];
11   dontConfigure = true;
12   dontBuild = true;
14   installPhase = ''
15     echo "Copying libraries from apulse."
16     mkdir -p $out/lib
17     ls ${apulse}/lib/apulse $out/lib
18     cp -a ${apulse}/lib/apulse/* $out/lib/
20     echo "Copying headers from pulseaudio."
21     mkdir -p $out/include/pulse
22     cp -a src/pulse/*.h $out/include/pulse
24     echo "Generating custom pkgconfig definitions."
25     mkdir -p $out/lib/pkgconfig
26     for a in libpulse.pc libpulse-simple.pc libpulse-mainloop-glib.pc ; do
27         cat > $out/lib/pkgconfig/$a << EOF
28     prefix=$out
29     libdir=$out/lib
30     includedir=$out/include
32     EOF
33     done
35     cat >> $out/lib/pkgconfig/libpulse.pc << EOF
36     Name: libpulse
37     Description: PulseAudio Client Interface
38     Version: ${libpulseaudio.version}-rebootstrapped
39     Libs: -L$out/lib -lpulse
40     Cflags: -I$out/include -D_REENTRANT
41     EOF
43     cat >> $out/lib/pkgconfig/libpulse-simple.pc << EOF
44     Name: libpulse-simple
45     Description: PulseAudio Simplified Synchronous Client Interface
46     Version: ${libpulseaudio.version}-rebootstrapped
47     Libs: -L$out/lib -lpulse-simple
48     Cflags: -I$out/include -D_REENTRANT
49     Requires: libpulse
50     EOF
52     cat >> $out/lib/pkgconfig/libpulse-mainloop-glib.pc << EOF
53     Name: libpulse-mainloop-glib
54     Description: PulseAudio GLib 2.0 Main Loop Wrapper
55     Version: ${libpulseaudio.version}-rebootstrapped
56     Libs: -L$out/lib -lpulse-mainloop-glib
57     Cflags: -I$out/include -D_REENTRANT
58     Requires: libpulse glib-2.0
59     EOF
60   '';
62   meta = apulse.meta // {
63     description = "libpulse without any sound daemons over pure ALSA";
64     longDescription = ''
65       apulse (${apulse.meta.homepage}) implements most of libpulse
66       API over pure ALSA in 5% LOC of the original PulseAudio.
68       But apulse is made to be used as a wrapper that substitutes its
69       replacement libs into LD_LIBRARY_PATH. The problem with that is
70       that you still have to link against the original libpulse.
72       pressureaudio (http://git.r-36.net/pressureaudio/) wraps apulse
73       with everything you need to replace libpulse completely.
75       This derivation is a reimplementation of pressureaudio in pure
76       nix.
78       You can simply override libpulse with this and most
79       packages would just work.
80     '';
81   };