summary refs log tree commit diff
path: root/nixos/modules/services/desktops/pipewire
diff options
context:
space:
mode:
authorJan Solanti <jhs@psonet.com>2021-03-05 00:41:02 +0200
committerJan Solanti <jhs@psonet.com>2021-03-05 00:41:02 +0200
commitb012ecaae7a273a9b09adbf608f7bf44374b8869 (patch)
treeae8af26ae67a6e460f91bc865cd6df4c3b7a0607 /nixos/modules/services/desktops/pipewire
parent78bfbdd77aa9e42302ed71072cf0b3110f350f46 (diff)
downloadnixpkgs-b012ecaae7a273a9b09adbf608f7bf44374b8869.tar
nixpkgs-b012ecaae7a273a9b09adbf608f7bf44374b8869.tar.gz
nixpkgs-b012ecaae7a273a9b09adbf608f7bf44374b8869.tar.bz2
nixpkgs-b012ecaae7a273a9b09adbf608f7bf44374b8869.tar.lz
nixpkgs-b012ecaae7a273a9b09adbf608f7bf44374b8869.tar.xz
nixpkgs-b012ecaae7a273a9b09adbf608f7bf44374b8869.tar.zst
nixpkgs-b012ecaae7a273a9b09adbf608f7bf44374b8869.zip
pipewire: 0.3.22 -> 0.3.23
Diffstat (limited to 'nixos/modules/services/desktops/pipewire')
-rw-r--r--nixos/modules/services/desktops/pipewire/alsa-monitor.conf.json46
-rw-r--r--nixos/modules/services/desktops/pipewire/bluez-monitor.conf.json34
-rw-r--r--nixos/modules/services/desktops/pipewire/client-rt.conf.json8
-rw-r--r--nixos/modules/services/desktops/pipewire/client.conf.json8
-rw-r--r--nixos/modules/services/desktops/pipewire/jack.conf.json4
-rw-r--r--nixos/modules/services/desktops/pipewire/media-session.conf.json30
-rw-r--r--nixos/modules/services/desktops/pipewire/pipewire-media-session.nix3
-rw-r--r--nixos/modules/services/desktops/pipewire/pipewire-pulse.conf.json3
-rw-r--r--nixos/modules/services/desktops/pipewire/pipewire.conf.json13
-rw-r--r--nixos/modules/services/desktops/pipewire/pipewire.nix41
-rw-r--r--nixos/modules/services/desktops/pipewire/v4l2-monitor.conf.json34
11 files changed, 101 insertions, 123 deletions
diff --git a/nixos/modules/services/desktops/pipewire/alsa-monitor.conf.json b/nixos/modules/services/desktops/pipewire/alsa-monitor.conf.json
index 5e8e1de6986..53fc9cc9634 100644
--- a/nixos/modules/services/desktops/pipewire/alsa-monitor.conf.json
+++ b/nixos/modules/services/desktops/pipewire/alsa-monitor.conf.json
@@ -2,47 +2,33 @@
   "properties": {},
   "rules": [
     {
-      "actions": {
-        "update-props": {
-          "api": {
-            "acp": {
-              "auto-port": false,
-              "auto-profile": false
-            },
-            "alsa": {
-              "use-acp": true
-            }
-          }
-        }
-      },
       "matches": [
         {
-          "device": {
-            "name": "~alsa_card.*"
-          }
+          "device.name": "~alsa_card.*"
         }
-      ]
-    },
-    {
+      ],
       "actions": {
         "update-props": {
-          "node": {
-            "pause-on-idle": false
-          }
+          "api.alsa.use-acp": true,
+          "api.acp.auto-profile": false,
+          "api.acp.auto-port": false
         }
-      },
+      }
+    },
+    {
       "matches": [
         {
-          "node": {
-            "name": "~alsa_input.*"
-          }
+          "node.name": "~alsa_input.*"
         },
         {
-          "node": {
-            "name": "~alsa_output.*"
-          }
+          "node.name": "~alsa_output.*"
+        }
+      ],
+      "actions": {
+        "update-props": {
+          "node.pause-on-idle": false
         }
-      ]
+      }
     }
   ]
 }
diff --git a/nixos/modules/services/desktops/pipewire/bluez-monitor.conf.json b/nixos/modules/services/desktops/pipewire/bluez-monitor.conf.json
index d8f74f32943..4d50cb9f1ad 100644
--- a/nixos/modules/services/desktops/pipewire/bluez-monitor.conf.json
+++ b/nixos/modules/services/desktops/pipewire/bluez-monitor.conf.json
@@ -2,37 +2,29 @@
   "properties": {},
   "rules": [
     {
-      "actions": {
-        "update-props": {}
-      },
       "matches": [
         {
-          "device": {
-            "name": "~bluez_card.*"
-          }
+          "device.name": "~bluez_card.*"
         }
-      ]
+      ],
+      "actions": {
+        "update-props": {}
+      }
     },
     {
-      "actions": {
-        "update-props": {
-          "node": {
-            "pause-on-idle": false
-          }
-        }
-      },
       "matches": [
         {
-          "node": {
-            "name": "~bluez_input.*"
-          }
+          "node.name": "~bluez_input.*"
         },
         {
-          "node": {
-            "name": "~bluez_output.*"
-          }
+          "node.name": "~bluez_output.*"
+        }
+      ],
+      "actions": {
+        "update-props": {
+          "node.pause-on-idle": false
         }
-      ]
+      }
     }
   ]
 }
diff --git a/nixos/modules/services/desktops/pipewire/client-rt.conf.json b/nixos/modules/services/desktops/pipewire/client-rt.conf.json
index 701b1916599..d294927b4f6 100644
--- a/nixos/modules/services/desktops/pipewire/client-rt.conf.json
+++ b/nixos/modules/services/desktops/pipewire/client-rt.conf.json
@@ -1,5 +1,7 @@
 {
-  "context.properties": {},
+  "context.properties": {
+    "log.level": 0
+  },
   "context.spa-libs": {
     "audio.convert.*": "audioconvert/libspa-audioconvert",
     "support.*": "support/libspa-support"
@@ -18,5 +20,7 @@
     "libpipewire-module-adapter": null,
     "libpipewire-module-metadata": null,
     "libpipewire-module-session-manager": null
-  }
+  },
+  "filter.properties": {},
+  "stream.properties": {}
 }
diff --git a/nixos/modules/services/desktops/pipewire/client.conf.json b/nixos/modules/services/desktops/pipewire/client.conf.json
index 24c10309329..224938abbbc 100644
--- a/nixos/modules/services/desktops/pipewire/client.conf.json
+++ b/nixos/modules/services/desktops/pipewire/client.conf.json
@@ -1,5 +1,7 @@
 {
-  "context.properties": {},
+  "context.properties": {
+    "log.level": 0
+  },
   "context.spa-libs": {
     "audio.convert.*": "audioconvert/libspa-audioconvert",
     "support.*": "support/libspa-support"
@@ -11,5 +13,7 @@
     "libpipewire-module-adapter": null,
     "libpipewire-module-metadata": null,
     "libpipewire-module-session-manager": null
-  }
+  },
+  "filter.properties": {},
+  "stream.properties": {}
 }
diff --git a/nixos/modules/services/desktops/pipewire/jack.conf.json b/nixos/modules/services/desktops/pipewire/jack.conf.json
index 0219269f615..2de04036b31 100644
--- a/nixos/modules/services/desktops/pipewire/jack.conf.json
+++ b/nixos/modules/services/desktops/pipewire/jack.conf.json
@@ -1,5 +1,7 @@
 {
-  "context.properties": {},
+  "context.properties": {
+    "log.level": 0
+  },
   "context.spa-libs": {
     "support.*": "support/libspa-support"
   },
diff --git a/nixos/modules/services/desktops/pipewire/media-session.conf.json b/nixos/modules/services/desktops/pipewire/media-session.conf.json
index a8fc2d93fb0..4b2505ff816 100644
--- a/nixos/modules/services/desktops/pipewire/media-session.conf.json
+++ b/nixos/modules/services/desktops/pipewire/media-session.conf.json
@@ -1,10 +1,12 @@
 {
+  "context.properties": {},
+  "context.spa-libs": {
+    "api.bluez5.*": "bluez5/libspa-bluez5",
+    "api.alsa.*": "alsa/libspa-alsa",
+    "api.v4l2.*": "v4l2/libspa-v4l2",
+    "api.libcamera.*": "libcamera/libspa-libcamera"
+  },
   "context.modules": {
-    "libpipewire-module-protocol-native": null,
-    "libpipewire-module-adapter": null,
-    "libpipewire-module-client-device": null,
-    "libpipewire-module-client-node": null,
-    "libpipewire-module-metadata": null,
     "libpipewire-module-rtkit": {
       "args": {},
       "flags": [
@@ -12,15 +14,13 @@
         "nofail"
       ]
     },
+    "libpipewire-module-protocol-native": null,
+    "libpipewire-module-client-node": null,
+    "libpipewire-module-client-device": null,
+    "libpipewire-module-adapter": null,
+    "libpipewire-module-metadata": null,
     "libpipewire-module-session-manager": null
   },
-  "context.properties": {},
-  "context.spa-libs": {
-    "api.alsa.*": "alsa/libspa-alsa",
-    "api.bluez5.*": "bluez5/libspa-bluez5",
-    "api.libcamera.*": "libcamera/libspa-libcamera",
-    "api.v4l2.*": "v4l2/libspa-v4l2"
-  },
   "session.modules": {
     "default": [
       "flatpak",
@@ -29,9 +29,6 @@
       "suspend-node",
       "policy-node"
     ],
-    "with-alsa": [
-      "with-audio"
-    ],
     "with-audio": [
       "metadata",
       "default-nodes",
@@ -40,6 +37,9 @@
       "alsa-seq",
       "alsa-monitor"
     ],
+    "with-alsa": [
+      "with-audio"
+    ],
     "with-jack": [
       "with-audio"
     ],
diff --git a/nixos/modules/services/desktops/pipewire/pipewire-media-session.nix b/nixos/modules/services/desktops/pipewire/pipewire-media-session.nix
index b324bfa1b74..b41ea349fb8 100644
--- a/nixos/modules/services/desktops/pipewire/pipewire-media-session.nix
+++ b/nixos/modules/services/desktops/pipewire/pipewire-media-session.nix
@@ -112,7 +112,8 @@ in {
   ###### implementation
   config = mkIf cfg.enable {
     environment.systemPackages = [ cfg.package ];
-    services.pipewire.sessionManagerExecutable = builtins.unsafeDiscardStringContext "${cfg.package}/bin/pipewire-media-session";
+    systemd.packages = [ cfg.package ];
+    systemd.user.services.pipewire-media-session.wantedBy = [ "pipewire.service" ];
 
     environment.etc."pipewire/media-session.d/media-session.conf" = { text = toSPAJSON (recursiveUpdate defaults.media-session cfg.config.media-session); };
     environment.etc."pipewire/media-session.d/v4l2-monitor.conf" = { text = toSPAJSON (recursiveUpdate defaults.v4l2-monitor cfg.config.v4l2-monitor); };
diff --git a/nixos/modules/services/desktops/pipewire/pipewire-pulse.conf.json b/nixos/modules/services/desktops/pipewire/pipewire-pulse.conf.json
index 5fe6ec2b064..da08bcea2c9 100644
--- a/nixos/modules/services/desktops/pipewire/pipewire-pulse.conf.json
+++ b/nixos/modules/services/desktops/pipewire/pipewire-pulse.conf.json
@@ -23,5 +23,6 @@
         ]
       }
     }
-  }
+  },
+  "stream.properties": {}
 }
diff --git a/nixos/modules/services/desktops/pipewire/pipewire.conf.json b/nixos/modules/services/desktops/pipewire/pipewire.conf.json
index b8e23e04c8a..59e2afca093 100644
--- a/nixos/modules/services/desktops/pipewire/pipewire.conf.json
+++ b/nixos/modules/services/desktops/pipewire/pipewire.conf.json
@@ -29,7 +29,12 @@
     "libpipewire-module-spa-node-factory": null,
     "libpipewire-module-client-node": null,
     "libpipewire-module-client-device": null,
-    "libpipewire-module-portal": null,
+    "libpipewire-module-portal": {
+      "flags": [
+        "ifexists",
+        "nofail"
+      ]
+    },
     "libpipewire-module-access": {
       "args": {}
     },
@@ -46,9 +51,5 @@
       }
     }
   },
-  "context.exec": {
-    "/nix/store/1q65a09arb7r4sdfz657p473kn3lqknk-pipewire-0.3.22/bin/pipewire-media-session": {
-      "args": ""
-    }
-  }
+  "context.exec": {}
 }
diff --git a/nixos/modules/services/desktops/pipewire/pipewire.nix b/nixos/modules/services/desktops/pipewire/pipewire.nix
index 77aa7043ee4..2577e77c4a1 100644
--- a/nixos/modules/services/desktops/pipewire/pipewire.nix
+++ b/nixos/modules/services/desktops/pipewire/pipewire.nix
@@ -20,6 +20,7 @@ let
 
   prioritizeNativeProtocol = {
     "context.modules" = {
+      # Most other modules depend on this, so put it first
       "libpipewire-module-protocol-native" = {
         _priority = -100;
         _content = null;
@@ -27,10 +28,22 @@ let
     };
   };
 
-  sessionManagerInvocation = {
-    "context.exec" = {
-      "${cfg.sessionManagerExecutable}" = {
-        args = "${lib.concatStringsSep " " cfg.sessionManagerArguments}";
+  fixDaemonModulePriorities = {
+    "context.modules" = {
+      # Most other modules depend on thism so put it first
+      "libpipewire-module-protocol-native" = {
+        _priority = -100;
+        _content = null;
+      };
+      # Needs to be before libpipewire-module-access
+      "libpipewire-module-portal" = {
+        _priority = -50;
+        _content = {
+          flags = [
+            "ifexists"
+            "nofail"
+          ];
+        };
       };
     };
   };
@@ -42,7 +55,7 @@ let
     client-rt = recursiveUpdate (builtins.fromJSON (builtins.readFile ./client-rt.conf.json)) prioritizeNativeProtocol;
     jack = recursiveUpdate (builtins.fromJSON (builtins.readFile ./jack.conf.json)) prioritizeNativeProtocol;
     # Remove session manager invocation from the upstream generated file, it points to the wrong path
-    pipewire = recursiveUpdate ((removeAttrs (builtins.fromJSON (builtins.readFile ./pipewire.conf.json)) ["context.exec"]) // sessionManagerInvocation) prioritizeNativeProtocol;
+    pipewire = recursiveUpdate (builtins.fromJSON (builtins.readFile ./pipewire.conf.json)) fixDaemonModulePriorities;
     pipewire-pulse = recursiveUpdate (builtins.fromJSON (builtins.readFile ./pipewire-pulse.conf.json)) prioritizeNativeProtocol;
   };
 
@@ -140,24 +153,6 @@ in {
         };
       };
 
-      sessionManagerExecutable = mkOption {
-        type = types.str;
-        default = "";
-        example = literalExample ''${pkgs.pipewire.mediaSession}/bin/pipewire-media-session'';
-        description = ''
-          Path to the session manager executable.
-        '';
-      };
-
-      sessionManagerArguments = mkOption {
-        type = types.listOf types.str;
-        default = [];
-        example = literalExample ''["-p" "bluez5.msbc-support=true"]'';
-        description = ''
-          Arguments passed to the pipewire session manager.
-        '';
-      };
-
       alsa = {
         enable = mkEnableOption "ALSA support";
         support32Bit = mkEnableOption "32-bit ALSA support on 64-bit systems";
diff --git a/nixos/modules/services/desktops/pipewire/v4l2-monitor.conf.json b/nixos/modules/services/desktops/pipewire/v4l2-monitor.conf.json
index ca404fabbfc..b08cba1b604 100644
--- a/nixos/modules/services/desktops/pipewire/v4l2-monitor.conf.json
+++ b/nixos/modules/services/desktops/pipewire/v4l2-monitor.conf.json
@@ -2,37 +2,29 @@
   "properties": {},
   "rules": [
     {
-      "actions": {
-        "update-props": {}
-      },
       "matches": [
         {
-          "device": {
-            "name": "~v4l2_device.*"
-          }
+          "device.name": "~v4l2_device.*"
         }
-      ]
+      ],
+      "actions": {
+        "update-props": {}
+      }
     },
     {
-      "actions": {
-        "update-props": {
-          "node": {
-            "pause-on-idle": false
-          }
-        }
-      },
       "matches": [
         {
-          "node": {
-            "name": "~v4l2_input.*"
-          }
+          "node.name": "~v4l2_input.*"
         },
         {
-          "node": {
-            "name": "~v4l2_output.*"
-          }
+          "node.name": "~v4l2_output.*"
+        }
+      ],
+      "actions": {
+        "update-props": {
+          "node.pause-on-idle": false
         }
-      ]
+      }
     }
   ]
 }