summary refs log tree commit diff
path: root/nixos
diff options
context:
space:
mode:
authorNathaniel Glen <njag2202@gmail.com>2020-07-24 23:28:07 -0400
committerNathaniel Glen <njag2202@gmail.com>2020-09-19 16:33:00 -0400
commitccefdd9dae70fd4ed1a6e6df5cf490b174efeb11 (patch)
treefb14970eeb04079b49ddc315748e7dd579dc2bad /nixos
parentcd81d4043e108c8d932605eac2130a82787e20b9 (diff)
downloadnixpkgs-ccefdd9dae70fd4ed1a6e6df5cf490b174efeb11.tar
nixpkgs-ccefdd9dae70fd4ed1a6e6df5cf490b174efeb11.tar.gz
nixpkgs-ccefdd9dae70fd4ed1a6e6df5cf490b174efeb11.tar.bz2
nixpkgs-ccefdd9dae70fd4ed1a6e6df5cf490b174efeb11.tar.lz
nixpkgs-ccefdd9dae70fd4ed1a6e6df5cf490b174efeb11.tar.xz
nixpkgs-ccefdd9dae70fd4ed1a6e6df5cf490b174efeb11.tar.zst
nixpkgs-ccefdd9dae70fd4ed1a6e6df5cf490b174efeb11.zip
nixos/pipewire: add jack/pulse emulation
This allows for transparent JACK and PulseAudio emulation. With this you
can essentially replace your entire audio framework with just PipeWire
for almost no configuration.
Diffstat (limited to 'nixos')
-rw-r--r--nixos/modules/services/desktops/pipewire.nix33
1 files changed, 32 insertions, 1 deletions
diff --git a/nixos/modules/services/desktops/pipewire.nix b/nixos/modules/services/desktops/pipewire.nix
index ed2f1c36016..c9c23593ce7 100644
--- a/nixos/modules/services/desktops/pipewire.nix
+++ b/nixos/modules/services/desktops/pipewire.nix
@@ -9,6 +9,14 @@ let
                            && pkgs.stdenv.isx86_64
                            && pkgs.pkgsi686Linux.pipewire != null;
 
+  jack-libs = pkgs.runCommand "jack-libs" {} ''
+    mkdir -p "$out/lib"
+    ln -s "${pkgs.pipewire.lib}/lib/pipewire-0.3/jack" "$out/lib/pipewire"
+  '';
+  pulse-libs = pkgs.runCommand "pulse-libs" {} ''
+    mkdir -p "$out/lib"
+    ln -s "${pkgs.pipewire.lib}/lib/pipewire-0.3/pulse" "$out/lib/pipewire"
+  '';
 in {
 
   meta = {
@@ -45,13 +53,35 @@ in {
           '';
         };
       };
+
+      jack = {
+        enable = mkOption {
+          default = false;
+          type = types.bool;
+          description = ''
+            Enable transparent JACK audio emulation using LD_LIBRARY_PATH.
+          '';
+        };
+      };
+
+      pulse = {
+        enable = mkOption {
+          default = false;
+          type = types.bool;
+          description = ''
+            Enable transparent PulseAudio emulation using LD_LIBRARY_PATH.
+          '';
+        };
+      };
     };
   };
 
 
   ###### implementation
   config = mkIf cfg.enable {
-    environment.systemPackages = [ pkgs.pipewire ];
+    environment.systemPackages = [ pkgs.pipewire ]
+                                 ++ lib.optional cfg.jack.enable jack-libs
+                                 ++ lib.optional cfg.pulse.enable pulse-libs;
 
     systemd.packages = [ pkgs.pipewire ];
 
@@ -74,5 +104,6 @@ in {
     environment.etc."alsa/conf.d/50-pipewire.conf" = mkIf cfg.alsa.enable {
       source = "${pkgs.pipewire}/share/alsa/alsa.conf.d/50-pipewire.conf";
     };
+    environment.sessionVariables.LD_LIBRARY_PATH = "/run/current-system/sw/lib/pipewire";
   };
 }