summary refs log tree commit diff
path: root/pkgs/misc/apulse/pressureaudio.nix
diff options
context:
space:
mode:
authorJan Malakhovski <oxij@oxij.org>2018-02-16 22:57:00 +0000
committerJan Malakhovski <oxij@oxij.org>2018-02-17 17:51:07 +0000
commit2f4eb68241f3d9bb04102dc1c6cfa1ceb0bf8ba0 (patch)
tree3b76fb23fef75e1bea3ddfcd452b9c7ee9c8214f /pkgs/misc/apulse/pressureaudio.nix
parent771d635f0ef5559549fe245e1df619f160751f6c (diff)
downloadnixpkgs-2f4eb68241f3d9bb04102dc1c6cfa1ceb0bf8ba0.tar
nixpkgs-2f4eb68241f3d9bb04102dc1c6cfa1ceb0bf8ba0.tar.gz
nixpkgs-2f4eb68241f3d9bb04102dc1c6cfa1ceb0bf8ba0.tar.bz2
nixpkgs-2f4eb68241f3d9bb04102dc1c6cfa1ceb0bf8ba0.tar.lz
nixpkgs-2f4eb68241f3d9bb04102dc1c6cfa1ceb0bf8ba0.tar.xz
nixpkgs-2f4eb68241f3d9bb04102dc1c6cfa1ceb0bf8ba0.tar.zst
nixpkgs-2f4eb68241f3d9bb04102dc1c6cfa1ceb0bf8ba0.zip
libpressureaudio: init at `apulse.version`
Diffstat (limited to 'pkgs/misc/apulse/pressureaudio.nix')
-rw-r--r--pkgs/misc/apulse/pressureaudio.nix82
1 files changed, 82 insertions, 0 deletions
diff --git a/pkgs/misc/apulse/pressureaudio.nix b/pkgs/misc/apulse/pressureaudio.nix
new file mode 100644
index 00000000000..255fca842a7
--- /dev/null
+++ b/pkgs/misc/apulse/pressureaudio.nix
@@ -0,0 +1,82 @@
+{ stdenv, apulse, libpulseaudio, pkgconfig, intltool, autoreconfHook }:
+
+stdenv.mkDerivation {
+  name = "libpressureaudio-${apulse.version}";
+
+  src = libpulseaudio.src;
+
+  nativeBuildInputs = [ pkgconfig intltool autoreconfHook ];
+
+  configurePhase = ":";
+
+  buildPhase = ":";
+
+  installPhase = ''
+    echo "Copying libraries from apulse."
+    mkdir -p $out/lib
+    ls ${apulse}/lib/apulse $out/lib
+    cp -a ${apulse}/lib/apulse/* $out/lib/
+
+    echo "Copying headers from pulseaudio."
+    mkdir -p $out/include/pulse
+    cp -a src/pulse/*.h $out/include/pulse
+
+    echo "Generating custom pkgconfig definitions."
+    mkdir -p $out/lib/pkgconfig
+    for a in libpulse.pc libpulse-simple.pc libpulse-mainloop-glib.pc ; do
+        cat > $out/lib/pkgconfig/$a << EOF
+    prefix=$out
+    libdir=$out/lib
+    includedir=$out/include
+
+    EOF
+    done
+
+    cat >> $out/lib/pkgconfig/libpulse.pc << EOF
+    Name: libpulse
+    Description: PulseAudio Client Interface
+    Version: ${libpulseaudio.version}-rebootstrapped
+    Libs: -L$out/lib -lpulse 
+    Cflags: -I$out/include -D_REENTRANT
+    EOF
+
+    cat >> $out/lib/pkgconfig/libpulse-simple.pc << EOF
+    Name: libpulse-simple
+    Description: PulseAudio Simplified Synchronous Client Interface
+    Version: ${libpulseaudio.version}-rebootstrapped
+    Libs: -L$out/lib -lpulse-simple 
+    Cflags: -I$out/include -D_REENTRANT
+    Requires: libpulse
+    EOF
+
+    cat >> $out/lib/pkgconfig/libpulse-mainloop-glib.pc << EOF
+    Name: libpulse-mainloop-glib
+    Description: PulseAudio GLib 2.0 Main Loop Wrapper
+    Version: ${libpulseaudio.version}-rebootstrapped
+    Libs: -L$out/lib -lpulse-mainloop-glib 
+    Cflags: -I$out/include -D_REENTRANT
+    Requires: libpulse glib-2.0
+    EOF
+  '';
+
+  meta = apulse.meta // {
+    description = "libpulseaudio without any sound daemons over pure ALSA";
+    longDescription = ''
+      apulse (${apulse.meta.homepage}) implements most of libpulseaudio
+      API over pure ALSA in 5% LOC of the original PulseAudio.
+
+      But apulse is made to be used as a wrapper that substitutes its
+      replacement libs into LD_LIBRARY_PATH. The problem with that is
+      that you still have to link against the original libpulseaudio.
+
+      pressureaudio (http://git.r-36.net/pressureaudio/) wraps apulse
+      with everything you need to replace libpulseaudio completely.
+
+      This derivation is a reimplementation of pressureaudio in pure
+      nix.
+
+      You can simply override libpulseaudio with this and most
+      packages would just work.
+    '';
+  };
+}