1
0
Fork 0
mirror of https://github.com/NixOS/nixpkgs.git synced 2025-06-21 00:49:27 +03:00

Merge pull request #48639 from adisbladis/pulseaudio/extra-modules

nixos/pulseaudio: Add extraModules config option
This commit is contained in:
adisbladis 2018-10-18 16:46:10 +08:00 committed by GitHub
commit 3026f55a0c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 25 additions and 3 deletions

View file

@ -154,6 +154,18 @@ in {
''; '';
}; };
extraModules = mkOption {
type = types.listOf types.package;
default = [];
example = literalExample "[ pkgs.pulseaudio-modules-bt ]";
description = ''
Extra pulseaudio modules to use. This is intended for out-of-tree
pulseaudio modules like extra bluetooth codecs.
Extra modules take precedence over built-in pulseaudio modules.
'';
};
daemon = { daemon = {
logLevel = mkOption { logLevel = mkOption {
type = types.str; type = types.str;
@ -236,6 +248,18 @@ in {
systemd.packages = [ overriddenPackage ]; systemd.packages = [ overriddenPackage ];
}) })
(mkIf (cfg.extraModules != []) {
hardware.pulseaudio.daemon.config.dl-search-path = let
overriddenModules = builtins.map
(drv: drv.override { pulseaudio = overriddenPackage; })
cfg.extraModules;
modulePaths = builtins.map
(drv: "${drv}/lib/pulse-${overriddenPackage.version}/modules")
# User-provided extra modules take precedence
(overriddenModules ++ [ overriddenPackage ]);
in lib.concatStringsSep ":" modulePaths;
})
(mkIf hasZeroconf { (mkIf hasZeroconf {
services.avahi.enable = true; services.avahi.enable = true;
}) })

View file

@ -1,7 +1,6 @@
{ stdenv { stdenv
, runCommand , runCommand
, fetchFromGitHub , fetchFromGitHub
, libpulseaudio
, pulseaudio , pulseaudio
, pkgconfig , pkgconfig
, ffmpeg_4 , ffmpeg_4
@ -44,7 +43,6 @@ in stdenv.mkDerivation rec {
]; ];
buildInputs = [ buildInputs = [
libpulseaudio
pulseaudio pulseaudio
ffmpeg_4 ffmpeg_4
libtool libtool
@ -67,7 +65,7 @@ in stdenv.mkDerivation rec {
for so in $out/lib/pulse-${pulseaudio.version}/modules/*.so; do for so in $out/lib/pulse-${pulseaudio.version}/modules/*.so; do
orig_rpath=$(patchelf --print-rpath "$so") orig_rpath=$(patchelf --print-rpath "$so")
patchelf \ patchelf \
--set-rpath "$orig_rpath:${lib.getLib ffmpeg_4}/lib:$out/lib/pulse-${pulseaudio.version}/modules" \ --set-rpath "${lib.getLib ffmpeg_4}/lib:$out/lib/pulse-${pulseaudio.version}/modules:$orig_rpath" \
"$so" "$so"
done done
''; '';