summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--system/settings/gaming.nix51
-rw-r--r--system/settings/services/airplay-sink.nix2
2 files changed, 41 insertions, 12 deletions
diff --git a/system/settings/gaming.nix b/system/settings/gaming.nix
index 1ad07470..493a201e 100644
--- a/system/settings/gaming.nix
+++ b/system/settings/gaming.nix
@@ -25,6 +25,7 @@
       "link.max-buffers" = 16;
       "log.level" = 2;
       "default.clock.rate" = 44100;
+      "default.clock.allowed_rates" = [ 44100 48000 88200 96000 ];
       "default.clock.quantum" = 32;
       "default.clock.min-quantum" = 32;
       "default.clock.max-quantum" = 32;
@@ -45,17 +46,6 @@
       { name = "libpipewire-module-protocol-native"; }
       { name = "libpipewire-module-profiler"; }
       { name = "libpipewire-module-metadata"; }
-      {
-        name = "libpipewire-module-protocol-pulse";
-        args = {
-          "pulse.min.req" = "32/44100";
-          "pulse.default.req" = "32/44100";
-          "pulse.max.req" = "32/44100";
-          "pulse.min.quantum" = "32/44100";
-          "pulse.max.quantum" = "32/44100";
-          "server.address" = [ "unix:native" ];
-        };
-      }
       { name = "libpipewire-module-spa-device-factory"; }
       { name = "libpipewire-module-spa-node-factory"; }
       { name = "libpipewire-module-client-node"; }
@@ -77,6 +67,45 @@
       "resample.quality" = 1;
     };
   };
+  services.pipewire.config.pipewire-pulse = {
+    "context.properties" = {
+      "log.level" = 2;
+    };
+    "context.modules" = [
+      {
+        name = "libpipewire-module-rtkit";
+        args = {
+          "nice.level" = -15;
+          "rt.prio" = 88;
+          "rt.time.soft" = 200000;
+          "rt.time.hard" = 200000;
+        };
+        flags = [ "ifexists" "nofail" ];
+      }
+      { name = "libpipewire-module-protocol-native"; }
+      { name = "libpipewire-module-client-node"; }
+      { name = "libpipewire-module-adapter"; }
+      { name = "libpipewire-module-metadata"; }
+      {
+        name = "libpipewire-module-protocol-pulse";
+        args = {
+          "pulse.min.req" = "32/48000";
+          "pulse.default.req" = "32/48000";
+          "pulse.max.req" = "32/48000";
+          "pulse.min.quantum" = "32/48000";
+          "pulse.max.quantum" = "32/48000";
+          "server.address" = [
+            "unix:native"
+            "tcp:[::1]:4713"
+          ];
+        };
+      }
+    ];
+    "stream.properties" = {
+      "node.latency" = "32/48000";
+      "resample.quality" = 1;
+    };
+  };
 
   systemd = {
     extraConfig = ''
diff --git a/system/settings/services/airplay-sink.nix b/system/settings/services/airplay-sink.nix
index 5e8c147a..36fde9b4 100644
--- a/system/settings/services/airplay-sink.nix
+++ b/system/settings/services/airplay-sink.nix
@@ -1,7 +1,7 @@
 { config, pkgs, ... }:
 
 {
-  services.pipewire.systemWide = true;
+  services.pipewire.systemWide = false;
   services.shairport-sync = {
     enable = true;
     group = "pipewire";