about summary refs log tree commit diff
diff options
context:
space:
mode:
authoradisbladis <adisbladis@gmail.com>2018-10-18 16:46:10 +0800
committerGitHub <noreply@github.com>2018-10-18 16:46:10 +0800
commit3026f55a0c0461e94cbbcc431cf2384efbf4bcfa (patch)
treed99219b2739b65c838e50e93d1feb7bbf76245ec
parent1c7d38bcfbf5a27fe3df9cefa1dac5864e492075 (diff)
parent78c0e1aa11f6b93fcbbf473b0691f3dbf9bc6039 (diff)
downloadnixlib-3026f55a0c0461e94cbbcc431cf2384efbf4bcfa.tar
nixlib-3026f55a0c0461e94cbbcc431cf2384efbf4bcfa.tar.gz
nixlib-3026f55a0c0461e94cbbcc431cf2384efbf4bcfa.tar.bz2
nixlib-3026f55a0c0461e94cbbcc431cf2384efbf4bcfa.tar.lz
nixlib-3026f55a0c0461e94cbbcc431cf2384efbf4bcfa.tar.xz
nixlib-3026f55a0c0461e94cbbcc431cf2384efbf4bcfa.tar.zst
nixlib-3026f55a0c0461e94cbbcc431cf2384efbf4bcfa.zip
Merge pull request #48639 from adisbladis/pulseaudio/extra-modules
nixos/pulseaudio: Add extraModules config option 
-rw-r--r--nixos/modules/config/pulseaudio.nix24
-rw-r--r--pkgs/applications/audio/pulseaudio-modules-bt/default.nix4
2 files changed, 25 insertions, 3 deletions
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;
     })
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
   '';