summary refs log tree commit diff
path: root/nixos/modules/config/pulseaudio.nix
diff options
context:
space:
mode:
authoradisbladis <adisbladis@gmail.com>2018-10-18 03:05:46 +0800
committeradisbladis <adisbladis@gmail.com>2018-10-18 16:27:43 +0800
commit78c0e1aa11f6b93fcbbf473b0691f3dbf9bc6039 (patch)
tree8a0a4ebb31cf854a513bd10311181331c52076db /nixos/modules/config/pulseaudio.nix
parent613d3bac86eebfeec082ee742b1706f2cc66c7c1 (diff)
downloadnixpkgs-78c0e1aa11f6b93fcbbf473b0691f3dbf9bc6039.tar
nixpkgs-78c0e1aa11f6b93fcbbf473b0691f3dbf9bc6039.tar.gz
nixpkgs-78c0e1aa11f6b93fcbbf473b0691f3dbf9bc6039.tar.bz2
nixpkgs-78c0e1aa11f6b93fcbbf473b0691f3dbf9bc6039.tar.lz
nixpkgs-78c0e1aa11f6b93fcbbf473b0691f3dbf9bc6039.tar.xz
nixpkgs-78c0e1aa11f6b93fcbbf473b0691f3dbf9bc6039.tar.zst
nixpkgs-78c0e1aa11f6b93fcbbf473b0691f3dbf9bc6039.zip
nixos/pulseaudio: Add extraModules config option
Diffstat (limited to 'nixos/modules/config/pulseaudio.nix')
-rw-r--r--nixos/modules/config/pulseaudio.nix24
1 files changed, 24 insertions, 0 deletions
diff --git a/nixos/modules/config/pulseaudio.nix b/nixos/modules/config/pulseaudio.nix
index e16a021ec20..d4aa5950629 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;
     })