New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
pipewire: 0.3.16 -> 0.3.17 #105362
pipewire: 0.3.16 -> 0.3.17 #105362
Conversation
hsphfpd is packaged in nixpkgs now.
Changelog: https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/f5f5beb0ece64c7d08edb5413dde537ec5b6c3e2 We should probably start using |
Otherwise sound.extraConfig has no effect.
The nixos module now creates these files. I think this is only effects the pipewire-media-session daemon, so we don't need to change anything else. |
Ok, I've added some more stuff:
On the positive side, mSBC seems to work now. (It's really fragile and you have to restart hsphfpd a few times, but hopefully that'll get better over time.) I'm using the following configuration: { hardware.bluetooth.hsphfpd.enable = true;
services.pipewire = {
enable = true;
mediaSessionExtraArguments = [ "-p" "bluez5.msbc-support=true" ];
alsa.enable = true;
jack.enable = true;
pulse.enable = true;
}; } cc @collares (you were commenting on the pipewire bluetooth issue) |
|
||
create-object spa-node-factory factory.name=support.node.driver node.name=Dummy priority.driver=8000 | ||
|
||
exec ${cfg.package}/bin/pipewire-media-session ${lib.concatStringsSep " " cfg.mediaSessionExtraArguments} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe it would be better to make this whole line configurable? Wireplumber can replace pipewire-media-session
: https://pipewire.pages.freedesktop.org/wireplumber/daemon/running.html?gi-language=c
exec ${cfg.package}/bin/pipewire-media-session ${lib.concatStringsSep " " cfg.mediaSessionExtraArguments} | |
exec wireplumber |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sounds good, but then the whole compat setup thing should be changed a bit.
For pipewire.conf I guess exec ${cfg.sessionManager} ${lib.concatStringsSep " " cfg.sessionManagerArguments}
would do, but I don't know what the best way to handle /etc/pipewire/media-session.d
would be in that case?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe pipewire-media-session should be split into its own package? Then these options and the /etc/pipewire/media-session.d/
stuff could perhaps be done there? And switching the sessionManager package to wireplumber with whatever config setup that wants would maybe Just Work...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, I've added the sessionManager
and sessionManagerArguments
options. But yes, wireplumber support won't be as easy as setting sessionManager
; it needs its own configuration file.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmm should this be handled by something like Or, on second thought, maybe this should be handled entirely on the module level, like extraEtcFiles
?services.xserver.displayManager.*
? Something like services.pipewire.sessionManager.{pipewireMediaSession, wireplumber}
. Considering that displayManager is a pretty visible precedent maybe that's the best solution already for consistency reasons.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just want to mention that the exec
line could be dropped and session manager launched via systemd-user instead.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Something like services.pipewire.sessionManager.{pipewireMediaSession, wireplumber}
I think we should wait with designing such an elaborate system until wireplumber/pipewire stabilizes a bit. For now, the current options are enough to 1) enable optional features in pipewire-media-session, and 2) change/disable the session manager if you want to run wireplumber manually.
Anything beyond this should probably wait at least until we have a wireplumber package.
Just want to mention that the
exec
line could be dropped and session manager launched via systemd-user instead.
That seems like a neat idea. I'm surprised that upstream doesn't do that by default.
I'll merge this PR now. I don't have enough time right now to refactor the session manager part. I also think it'll be more productive to discuss this when/if somebody packages wireplumber. |
Motivation for this change
New upstream release.
Things done
sandbox
innix.conf
on non-NixOS linux)nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
./result/bin/
)nix path-info -S
before and after)