From 613d3bac86eebfeec082ee742b1706f2cc66c7c1 Mon Sep 17 00:00:00 2001 From: adisbladis Date: Thu, 18 Oct 2018 03:04:36 +0800 Subject: pulseaudio-modules-bt: Patched rpath takes precedence over original This fixes a segmentation fault when loaded via pulseaudio's dl-search-path --- pkgs/applications/audio/pulseaudio-modules-bt/default.nix | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pkgs/applications/audio/pulseaudio-modules-bt/default.nix b/pkgs/applications/audio/pulseaudio-modules-bt/default.nix index 6bb432b3fd88..b377db65c0c9 100644 --- a/pkgs/applications/audio/pulseaudio-modules-bt/default.nix +++ b/pkgs/applications/audio/pulseaudio-modules-bt/default.nix @@ -1,7 +1,6 @@ { stdenv , runCommand , fetchFromGitHub -, libpulseaudio , pulseaudio , pkgconfig , ffmpeg_4 @@ -44,7 +43,6 @@ in stdenv.mkDerivation rec { ]; buildInputs = [ - libpulseaudio pulseaudio ffmpeg_4 libtool @@ -67,7 +65,7 @@ in stdenv.mkDerivation rec { for so in $out/lib/pulse-${pulseaudio.version}/modules/*.so; do orig_rpath=$(patchelf --print-rpath "$so") 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" done ''; -- cgit 1.4.1 From 78c0e1aa11f6b93fcbbf473b0691f3dbf9bc6039 Mon Sep 17 00:00:00 2001 From: adisbladis Date: Thu, 18 Oct 2018 03:05:46 +0800 Subject: nixos/pulseaudio: Add extraModules config option --- nixos/modules/config/pulseaudio.nix | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/nixos/modules/config/pulseaudio.nix b/nixos/modules/config/pulseaudio.nix index e16a021ec20b..d4aa59506295 100644 --- a/nixos/modules/config/pulseaudio.nix +++ b/nixos/modules/config/pulseaudio.nix @@ -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 = { logLevel = mkOption { type = types.str; @@ -236,6 +248,18 @@ in { 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 { services.avahi.enable = true; }) -- cgit 1.4.1