aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/pkgs/servers/pulseaudio/pali.nix
diff options
context:
space:
mode:
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/servers/pulseaudio/pali.nix')
-rw-r--r--infra/libkookie/nixpkgs/pkgs/servers/pulseaudio/pali.nix219
1 files changed, 219 insertions, 0 deletions
diff --git a/infra/libkookie/nixpkgs/pkgs/servers/pulseaudio/pali.nix b/infra/libkookie/nixpkgs/pkgs/servers/pulseaudio/pali.nix
new file mode 100644
index 000000000000..d5ae80b5e798
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/servers/pulseaudio/pali.nix
@@ -0,0 +1,219 @@
+{ lib
+, stdenv
+, fetchurl
+, fetchFromGitLab
+, meson
+, ninja
+, pkgconfig
+, libsndfile
+, libtool
+, makeWrapper
+, perlPackages
+, xorg
+, libcap
+, alsaLib
+, glib
+, dconf
+, avahi
+, libjack2
+, libasyncns
+, lirc
+, dbus
+, sbc
+, bluez5
+, udev
+, openssl
+, fftwFloat
+, soxr
+, speexdsp
+, systemd
+, webrtc-audio-processing
+, gtk3
+, tdb
+, orc
+, check
+, gettext
+, gst_all_1
+, libopenaptx
+
+, x11Support ? true
+
+, # Whether to support the JACK sound system as a backend.
+ jackaudioSupport ? false
+
+, airtunesSupport ? true
+
+, bluetoothSupport ? true
+
+, remoteControlSupport ? true
+
+, zeroconfSupport ? true
+
+, # Whether to build only the library.
+ libOnly ? false
+
+# Building from Git source
+, fromGit ? true
+
+, CoreServices
+, AudioUnit
+, Cocoa
+}:
+
+stdenv.mkDerivation rec {
+ pname = "${if libOnly then "lib" else ""}pulseaudio-hsphfpd";
+ version = "13.99.2";
+
+ outputs = [ "out" "dev" ];
+
+ # https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/288
+ src = fetchFromGitLab {
+ domain = "gitlab.freedesktop.org";
+ owner = "pali";
+ repo = "pulseaudio";
+ rev = "5336b39e7e03cf50386e719e287a712b59730eb8";
+ sha256 = "0vc0i5rzkns3xw6y2q0c94p2qdi5k3mgjvhicgq1b0py2qxmji16";
+ };
+
+ patches = [
+ ./add-option-for-installation-sysconfdir.patch
+ ./correct-ldflags.patch
+ ];
+
+ # Says it should be v${version} but it's parsing logic is broken
+ preConfigure = lib.optionalString fromGit ''
+ sed -i "s@version : run_command.*@version: '${version}',@" meson.build
+ '';
+
+ nativeBuildInputs = [
+ gettext
+ makeWrapper
+ meson
+ ninja
+ pkgconfig
+ perlPackages.perl
+ perlPackages.XMLParser
+ ];
+
+ checkInputs = [
+ check
+ ];
+
+ propagatedBuildInputs = lib.optional stdenv.isLinux libcap;
+
+ buildInputs = [
+ libopenaptx
+ fftwFloat
+ libsndfile
+ libtool
+ orc
+ soxr
+ speexdsp
+ tdb
+ sbc
+ gst_all_1.gst-plugins-base
+ ] ++ lib.optionals bluetoothSupport [
+ bluez5
+ ] ++ lib.optionals stdenv.isLinux [
+ dbus
+ glib
+ gtk3
+ libasyncns
+ ] ++ lib.optionals stdenv.isDarwin [
+ AudioUnit
+ Cocoa
+ CoreServices
+ ] ++ lib.optionals (!libOnly) (
+ lib.optionals x11Support [
+ xorg.libXi
+ xorg.libXtst
+ xorg.xlibsWrapper
+ ] ++ lib.optionals stdenv.isLinux [
+ alsaLib
+ systemd
+ udev
+ ] ++ lib.optional airtunesSupport openssl
+ ++ lib.optional jackaudioSupport libjack2
+ ++ lib.optional remoteControlSupport lirc
+ ++ lib.optional zeroconfSupport avahi
+ ++ [ webrtc-audio-processing ]
+ );
+
+ mesonFlags = [
+ "--localstatedir=/var"
+ "--sysconfdir=/etc"
+ "-Daccess_group=audio"
+ "-Dbashcompletiondir=${placeholder "out"}/share/bash-completions/completions"
+ "-Dman=false" # TODO: needs xmltoman; also doesn't check for this
+ "-Dsysconfdir_install=${placeholder "out"}/etc"
+ "-Dsystemduserunitdir=${placeholder "out"}/lib/systemd/user"
+ "-Dudevrulesdir=${placeholder "out"}/lib/udev/rules.d"
+ "-Dzshcompletiondir=${placeholder "out"}/share/zsh/site-functions"
+ ] ++ lib.optionals (!stdenv.isLinux) [
+ "-Dasyncns=disabled"
+ "-Ddbus=disabled"
+ "-Dglib=disabled"
+ "-Dgsettings=disabled"
+ "-Dgtk=disabled"
+ ] ++ lib.optionals (!stdenv.isLinux || libOnly) [
+ "-Dalsa=disabled"
+ "-Dsystemd=disabled"
+ "-Dudev=disabled"
+ ] ++ lib.optional libOnly "-Dwebrtc-aec=disabled"
+ ++ lib.optional (!x11Support) "-Dx11=disabled"
+ ++ lib.optional (!bluetoothSupport) "-Dbluez5=false"
+ ++ lib.optional (!airtunesSupport) "-Dopenssl=disabled"
+ ++ lib.optional (!jackaudioSupport) "-Djack=disabled"
+ ++ lib.optional (!remoteControlSupport) "-Dlirc=disabled"
+ ++ lib.optional (!zeroconfSupport) "-Davahi=disabled"
+ ++ lib.optional (!doCheck) "-Dtests=false";
+
+ # To create ~/.config/pulse
+ preCheck = ''
+ export HOME=$(mktemp -d)
+ '';
+
+ doCheck = true;
+
+ # not sure what the best practices are here -- can't seem to find a way
+ # for the compiler to bring in stdlib and stdio (etc.) properly
+ # the alternative is to copy the files from /usr/include to src, but there are
+ # probably a large number of files that would need to be copied (I stopped
+ # after the seventh)
+ NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isDarwin "-I/usr/include";
+
+ NIX_LDFLAGS = lib.optionalString stdenv.isDarwin "-framework CoreServices -framework Cocoa -framework AudioUnit";
+
+ postInstall = ''
+ moveToOutput lib/cmake "$dev"
+ rm -f $out/bin/qpaeq # this is packaged by the "qpaeq" package now, because of missing deps
+ '' + lib.optionalString libOnly ''
+ rm -rf $out/{bin,share,etc,lib/{pulse-*,systemd}}
+ '';
+
+ preFixup = lib.optionalString (stdenv.isLinux && !libOnly) ''
+ wrapProgram $out/libexec/pulse/gsettings-helper \
+ --prefix XDG_DATA_DIRS : "$out/share/gsettings-schemas/${pname}-${version}" \
+ --prefix GIO_EXTRA_MODULES : "${lib.getLib dconf}/lib/gio/modules"
+ '';
+
+ passthru = {
+ pulseDir = "lib/pulse-" + lib.versions.majorMinor version;
+ };
+
+ meta = with lib; {
+ description = "A featureful, general-purpose sound server";
+ homepage = "http://www.pulseaudio.org/";
+ license = licenses.lgpl2Plus;
+ maintainers = with maintainers; [ lovek323 ];
+ platforms = platforms.unix;
+ longDescription = ''
+ PulseAudio is a sound system for POSIX OSes, meaning that it is
+ a proxy for your sound applications. It allows you to do advanced
+ operations on your sound data as it passes between your application
+ and your hardware. Things like transferring the audio to a different machine,
+ changing the sample format or channel count and mixing several sounds into one
+ are easily achieved using a sound server.
+ '';
+ };
+}