Skip to content
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

nixos/pipewire: add transparent ALSA/PulseAudio/JACK support #93725

Merged
merged 18 commits into from
Oct 23, 2020

Conversation

nglen
Copy link
Contributor

@nglen nglen commented Jul 23, 2020

Motivation for this change

This allows ALSA programs to interact through PipeWire.

The options are the same as in the JACK module for consistency. I enabled it by default since that is what JACK does and it seems less confusing for end users however this technically makes it backwards incompatible. If you prefer it off by default I can do that instead.

Things done
  • Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
  • Built on platform(s)
    • NixOS
    • macOS
    • other Linux distributions
  • Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
  • Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
  • Tested execution of all binary files (usually in ./result/bin/)
  • Determined the impact on package closure size (by running nix path-info -S before and after)
  • Ensured that relevant documentation is up to date
  • Fits CONTRIBUTING.md.

@ofborg ofborg bot added 6.topic: nixos Issues or PRs affecting NixOS modules, or package usability issues specific to NixOS 8.has: module (update) This PR changes an existing module in `nixos/` 10.rebuild-darwin: 0 This PR does not cause any packages to rebuild on Darwin 10.rebuild-linux: 1-10 10.rebuild-linux: 1 labels Jul 23, 2020
@nglen
Copy link
Contributor Author

nglen commented Jul 25, 2020

I just added both JACK and PulseAudio transparent emulation support. This allows running dependent programs using PipeWire as a backend instead. I also decided to set the ALSA support to false by default which not only is consistent with these new options but also makes it fully backwards compatible now.

@nglen nglen changed the title nixos/pipewire: add ALSA routing nixos/pipewire: add transparent ALSA/PulseAudio/JACK support Jul 25, 2020
@nixos-discourse
Copy link

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:

https://discourse.nixos.org/t/prs-ready-for-review/3032/244

@bbigras
Copy link
Contributor

bbigras commented Aug 4, 2020

If I use services.pipewire.enable = true; without enabling services.pipewire.alsa.enable = true; I get:

error: The option `nodes.desktop.configuration.environment.etc.alsa/conf.d/50-pipewire.conf.source' is used but not defined.
(use '--show-trace' to show detailed location information)

@ashkitten
Copy link
Contributor

can you give more info for how to test this? i was not able to get any kind of audio output with any of aplay, paplay, or jack_simple_session with this. qjackctl saw a jack server running, but jack_simple_session was not able to connect to it and neither was cadence. pavucontrol listed a number of devices in the "configuration" tab, but the only setting for any of them was "off".

@bbigras
Copy link
Contributor

bbigras commented Aug 4, 2020

Similar thing to me. Devices are off.

Having hardware.pulseaudio.enable = false should be fine, right?

pipewire log:

-- Logs begin at Mon 2020-05-18 13:42:44 EDT, end at Tue 2020-08-04 14:37:37 EDT. --
aoû 04 14:34:43 desktop systemd[1811]: Started Multimedia Service.
aoû 04 14:34:48 desktop pipewire[2016]: [E][000000038.312224][bluez5-dbus.c:1436 get_managed_objects_reply()] GetManagedObjects() failed: org.freedesktop.DBus.Error.TimedOut
aoû 04 14:34:55 desktop pipewire[2016]: [W][000000045.395758][policy-node.c:549 rescan_node()] no node found for 41
aoû 04 14:34:55 desktop pipewire[2016]: [W][000000045.401733][policy-node.c:549 rescan_node()] no node found for 41
aoû 04 14:34:55 desktop pipewire[2016]: [W][000000045.404457][policy-node.c:549 rescan_node()] no node found for 41
aoû 04 14:34:55 desktop pipewire[2016]: [W][000000045.407094][policy-node.c:549 rescan_node()] no node found for 41
aoû 04 14:34:55 desktop pipewire[2016]: [W][000000045.415894][policy-node.c:549 rescan_node()] no node found for 41
aoû 04 14:34:55 desktop pipewire[2016]: [W][000000045.418918][policy-node.c:549 rescan_node()] no node found for 41
aoû 04 14:34:55 desktop pipewire[2014]: [E][000000045.421218][private.h:241 pw_core_resource_errorv()] resource 0x15173f0: id:0 seq:130 res:-22 (Invalid argument) msg:"unknown resource 26 op:1"
aoû 04 14:34:55 desktop pipewire[2016]: [W][000000045.422063][policy-node.c:549 rescan_node()] no node found for 41
aoû 04 14:34:55 desktop pipewire[2016]: [W][000000045.425590][policy-node.c:549 rescan_node()] no node found for 41
aoû 04 14:34:55 desktop pipewire[2016]: [W][000000045.428402][policy-node.c:549 rescan_node()] no node found for 41
aoû 04 14:34:55 desktop pipewire[2014]: [E][000000045.433018][private.h:241 pw_core_resource_errorv()] resource 0x15173f0: id:0 seq:144 res:-22 (Invalid argument) msg:"unknown resource 26 op:1"
aoû 04 14:34:55 desktop pipewire[2016]: [W][000000045.434648][policy-node.c:549 rescan_node()] no node found for 41
aoû 04 14:34:55 desktop pipewire[2016]: [W][000000045.436970][policy-node.c:549 rescan_node()] no node found for 41
aoû 04 14:34:55 desktop pipewire[2016]: [W][000000045.439274][policy-node.c:549 rescan_node()] no node found for 41
aoû 04 14:34:55 desktop pipewire[2016]: [W][000000045.441689][policy-node.c:549 rescan_node()] no node found for 41
aoû 04 14:34:55 desktop pipewire[2016]: [W][000000045.444313][policy-node.c:549 rescan_node()] no node found for 41
aoû 04 14:34:55 desktop pipewire[2014]: [E][000000045.446197][private.h:241 pw_core_resource_errorv()] resource 0x15173f0: id:26 seq:146 res:-2 (No such file or directory) msg:"no global 41"
aoû 04 14:34:55 desktop pipewire[2014]: [E][000000045.446211][private.h:241 pw_core_resource_errorv()] resource 0x15173f0: id:0 seq:148 res:-22 (Invalid argument) msg:"unknown resource 26 op:7"
aoû 04 14:34:55 desktop pipewire[2016]: [W][000000045.453788][policy-node.c:549 rescan_node()] no node found for 41
aoû 04 14:34:55 desktop pipewire[2016]: [W][000000045.458266][policy-node.c:549 rescan_node()] no node found for 41
aoû 04 14:34:55 desktop pipewire[2016]: [W][000000045.460643][policy-node.c:549 rescan_node()] no node found for 41
aoû 04 14:34:55 desktop pipewire[2016]: [W][000000045.463019][policy-node.c:549 rescan_node()] no node found for 41
aoû 04 14:34:55 desktop pipewire[2016]: [W][000000045.465516][policy-node.c:549 rescan_node()] no node found for 41
aoû 04 14:34:55 desktop pipewire[2016]: [W][000000045.467776][policy-node.c:549 rescan_node()] no node found for 41
aoû 04 14:34:55 desktop pipewire[2016]: [W][000000045.470177][policy-node.c:549 rescan_node()] no node found for 41
aoû 04 14:34:55 desktop pipewire[2016]: [W][000000045.472528][policy-node.c:549 rescan_node()] no node found for 41
aoû 04 14:34:55 desktop pipewire[2016]: [W][000000045.474867][policy-node.c:549 rescan_node()] no node found for 41
aoû 04 14:34:55 desktop pipewire[2016]: [W][000000045.477521][policy-node.c:549 rescan_node()] no node found for 41
aoû 04 14:34:55 desktop pipewire[2016]: [W][000000045.480291][policy-node.c:549 rescan_node()] no node found for 41
aoû 04 14:34:55 desktop pipewire[2016]: [W][000000045.483935][policy-node.c:549 rescan_node()] no node found for 41
aoû 04 14:34:55 desktop pipewire[2016]: [W][000000045.487254][policy-node.c:549 rescan_node()] no node found for 41
aoû 04 14:34:55 desktop pipewire[2016]: [W][000000045.489755][policy-node.c:549 rescan_node()] no node found for 41
aoû 04 14:34:55 desktop pipewire[2016]: [W][000000045.492359][policy-node.c:549 rescan_node()] no node found for 41
aoû 04 14:34:55 desktop pipewire[2014]: [E][000000045.502975][private.h:241 pw_core_resource_errorv()] resource 0x15173f0: id:26 seq:166 res:-2 (No such file or directory) msg:"no global 41"
aoû 04 14:34:55 desktop pipewire[2014]: [E][000000045.503020][private.h:241 pw_core_resource_errorv()] resource 0x15173f0: id:0 seq:168 res:-22 (Invalid argument) msg:"unknown resource 26 op:7"
aoû 04 14:34:55 desktop pipewire[2014]: [E][000000045.503026][private.h:241 pw_core_resource_errorv()] resource 0x15173f0: id:30 seq:169 res:-2 (No such file or directory) msg:"no global 41"
aoû 04 14:34:55 desktop pipewire[2014]: [E][000000045.503030][private.h:241 pw_core_resource_errorv()] resource 0x15173f0: id:0 seq:171 res:-22 (Invalid argument) msg:"unknown resource 30 op:7"
aoû 04 14:34:55 desktop pipewire[2014]: [E][000000045.503058][private.h:241 pw_core_resource_errorv()] resource 0x15173f0: id:29 seq:172 res:-2 (No such file or directory) msg:"no global 41"
aoû 04 14:34:55 desktop pipewire[2014]: [E][000000045.503063][private.h:241 pw_core_resource_errorv()] resource 0x15173f0: id:0 seq:174 res:-22 (Invalid argument) msg:"unknown resource 29 op:7"
aoû 04 14:34:55 desktop pipewire[2014]: [E][000000045.503066][private.h:241 pw_core_resource_errorv()] resource 0x15173f0: id:28 seq:175 res:-2 (No such file or directory) msg:"no global 41"
aoû 04 14:34:55 desktop pipewire[2014]: [E][000000045.503094][private.h:241 pw_core_resource_errorv()] resource 0x15173f0: id:0 seq:177 res:-22 (Invalid argument) msg:"unknown resource 28 op:7"
aoû 04 14:34:55 desktop pipewire[2014]: [E][000000045.503100][private.h:241 pw_core_resource_errorv()] resource 0x15173f0: id:27 seq:178 res:-2 (No such file or directory) msg:"no global 41"
aoû 04 14:34:55 desktop pipewire[2014]: [E][000000045.503103][private.h:241 pw_core_resource_errorv()] resource 0x15173f0: id:0 seq:180 res:-22 (Invalid argument) msg:"unknown resource 27 op:7"

@nglen
Copy link
Contributor Author

nglen commented Aug 4, 2020

If I use services.pipewire.enable = true; without enabling services.pipewire.alsa.enable = true; I get:

error: The option `nodes.desktop.configuration.environment.etc.alsa/conf.d/50-pipewire.conf.source' is used but not defined.
(use '--show-trace' to show detailed location information)

Thanks for noticing. I accidentally made a modification in refactoring which broke this without noticing. For files, mkIf needs to be placed on the attribute set and not on the source. I just pushed a fix.

@nglen
Copy link
Contributor Author

nglen commented Aug 4, 2020

@ashkitten

can you give more info for how to test this? i was not able to get any kind of audio output with any of aplay, paplay, or jack_simple_session with this. qjackctl saw a jack server running, but jack_simple_session was not able to connect to it and neither was cadence. pavucontrol listed a number of devices in the "configuration" tab, but the only setting for any of them was "off".

I tested with the following among others:

  • mpv --ao=alsa <filename>
  • mpv --ao=pulse <filename>
  • Chromium (PulseAudio, disable or set LD_LIBRARY_PATH="" to test ALSA)
  • Firefox (PulseAudio and ALSA through apulse)
  • jack_simple_client (JACK2)
  • alsamixer (You may have to switch sound cards)
  • amixer (You may have to manually specify your card with -c)
  • pavucontrol (It doesn't show JACK programs only ALSA and PulseAudio)
  • ncpamixer (same things as above)
  • qjackctl (It shows everything but only names JACK programs)

I will say that the PulseAudio library in particular still has some unimplemented functions and weird oddities but this is on the PipeWire side. Be careful with aplay and paplay as I believe that they only support raw audio streams and I never could get to test them.

@nglen
Copy link
Contributor Author

nglen commented Aug 4, 2020

@bbigras

Having hardware.pulseaudio.enable = false should be correct, that's what I'm doing. Do you know whether the errors occur when the service starts or when some program is run. If the latter I could try the program on my end.

@nglen
Copy link
Contributor Author

nglen commented Aug 5, 2020

I just realized where the problem is. I was using a slightly older version of nixpkgs than this pull request. Updating to this version breaks the daemon on my side. Reverting #93672 appears to fix the issues though I'm not sure why.

@nglen
Copy link
Contributor Author

nglen commented Aug 5, 2020

Just found the issue in upstream alsadatadir = join_paths('/usr', 'share', 'pulseaudio', 'alsa-mixer').

Since I can't reference GitLab, the commit is this.

I know this is the issue because manually symlinking the directory from pulseaudio "fixes" it.

@ashkitten
Copy link
Contributor

ashkitten commented Aug 5, 2020

confirmed paplay and pavucontrol appear to work after reverting pipewire to 0.3.6, but i wasn't able to make qjackctl or cadence work, they couldn't find the jack server. didn't try with alsa. will try 0.3.9 which seems to have at least changed that line...

@ashkitten
Copy link
Contributor

tried to build 0.3.9 but it gives this:

cycle detected in the references of '/nix/store/3r9gvywjzd8v671cb2bdh4a5afvbyllv-pipewire-0.3.9-lib' from '/nix/store/9y7fpwdr75f7fgka6afdmds82jif2sb9-pipewire-0.3.9'

bisected it down to PipeWire/pipewire@154f981 which is the same commit that changed alsadatadir from that absolute path with /usr to referencing pipewire_datadir. not sure what to do with that info...

@nglen
Copy link
Contributor Author

nglen commented Aug 5, 2020

I just checked the paths, it looks like we should just need to move $out/share/alsa-card-profile to $lib/share/alsa-card-profile.

@nglen
Copy link
Contributor Author

nglen commented Aug 5, 2020

On second thought, we might have to move the entirety of $out/share somehow since it's all referenced by the same variable.

@ashkitten
Copy link
Contributor

can we just change it to reference pipewire_libdir instead of pipewire_datadir? not sure if that's correct but it lets it build for me.

@nglen
Copy link
Contributor Author

nglen commented Aug 5, 2020

I'm not sure either, but if it works it works.

@ashkitten
Copy link
Contributor

ashkitten commented Aug 5, 2020

so here are all the things i've gotten working on my setup with 0.3.9, in no particular order:

  • paplay
  • pavucontrol
  • qjackctl
  • jack_simple_client
  • aplay (requires -D pipewire, it does not seem to set itself as the default alsa device)
  • firefox

cadence still appears broken. can you test on your end?

@nglen
Copy link
Contributor Author

nglen commented Aug 5, 2020

It's broken on my end as well.

@nglen
Copy link
Contributor Author

nglen commented Sep 19, 2020

@jchv Thanks for noticing that. I accidentally used a string instead of a list, both are valid values but only lists merge. The commit I just pushed should fix it.

@jchv
Copy link
Contributor

jchv commented Sep 19, 2020

Thanks, that worked like a charm. Now onto the next problem... the wrappers still don't work. I can't help but feel the problem for me must be PEBCAK.

From within my GNOME/Wayland session:

$ echo $LD_LIBRARY_PATH 

...oddly, LD_LIBRARY_PATH is empty?

I checked to make sure I wasn't doing anything weird, but nothing that's currently active in my configuration twiddles with LD_LIBRARY_PATH or even sessionVariables. Hmm. Looking into how to debug this. (I did reboot already.)


edit: Still not really sure. Looks like it is getting set in pam-env as expected. Things mysteriously drop off as they nest.

$ nix run -I nixpkgs=/home/john/Sources/nixpkgs nixos.pstree -c pstree
-+= 00001 root systemd 
 |--= 03001 root /nix/store/sh66n2h1gp8z000vns63s14xsydpwyab-udisks-2.8.4/libexec/udisks2/udisksd 
 |--- 02791 john /nix/store/makb548mgn93zcangybi92w00w6fcwdc-gnome-keyring-3.36.0/bin/gnome-keyring-daemon --daemonize --login 
 |-+= 02781 john /nix/store/f6r3yar1zx1zrll52wmf300h8k8gibk8-systemd-246/lib/systemd/systemd --user 
 | |--= 05950 john /nix/store/ay77qbffrr7wy1vxy0xv95dggzzpr959-gvfs-1.44.1/libexec/gvfsd-metadata 
 | |-+= 05566 john /nix/store/gjyrwkmqii17g9fkm7pn5gql7k5n7dv4-vscode-1.48.2/lib/vscode/code --no-sandbox 
...
$ grep -q LD_LIBRARY_PATH /proc/1/environ && echo match # systemd
$ grep -q LD_LIBRARY_PATH /proc/3001/environ && echo match # udisksd
$ grep -q LD_LIBRARY_PATH /proc/2791/environ && echo match # gnome-keyring-daemon
match
$ grep -q LD_LIBRARY_PATH /proc/2781/environ && echo match # systemd --user
match
$ grep -q LD_LIBRARY_PATH /proc/5950/environ && echo match # gvfsd-metadata
match
$ grep -q LD_LIBRARY_PATH /proc/5566/environ && echo match # vscode

So for VSCode, it looks like it drops at gvfsd-metadata, which has the LD_LIBRARY_PATH but it doesn't seem to nest down.

Meanwhile...

$ nix run -I nixpkgs=/home/john/Sources/nixpkgs nixos.pstree -c pstree -p "$(pgrep gnome-shell)"
-+= 00001 root systemd 
 \-+= 02781 john /nix/store/f6r3yar1zx1zrll52wmf300h8k8gibk8-systemd-246/lib/systemd/systemd --user 
   \-+= 02851 john /nix/store/srahkjz60sc04218zvgxlywv8pjifbsm-gnome-shell-rt/bin/gnome-shell
$ grep -q LD_LIBRARY_PATH /proc/2781/environ && echo match # systemd --user
match
$ grep -q LD_LIBRARY_PATH /proc/2851/environ && echo match # systemd --user

So it seems it gets lost in gnome-shell.

I am pretty convinced my problem with the wrappers must somehow be on my end. If I jump into a VT, the environment variables are all there as expected. Something is clobbering LD_LIBRARY_PATH.

The volume controls inside gdm after boot are also broken, so I don't think it has to do with my per-user GNOME settings, unless it is expected that the pipewire wrappers won't (currently) activate over there.


edit 2: OK. I think I found the problem: #90201 - and with that, I can conclude it really doesn't have anything to do with this PR. However, I suspect it will be a problem for a reasonable subset of users. Though I am ordinarily running SwayWM, I would guess GNOME + Wayland is a pretty standard configuration, and as it is this is fairly broken right now.

@jchv
Copy link
Contributor

jchv commented Sep 20, 2020

One last note. I tried applying the patch in #90201 (comment) and now everything works largely as expected. So for future readers, if you want to use this on GNOME 3 + Wayland, you will probably need to patch this for now. It would be nice if there could be a generalized workaround that just finds a way to pipe LD_LIBRARY_PATH through explicitly so we can at least unbreak stuff... maybe I can try a couple of things and see if anything is possible.

With all that being said, this is not too related to this PR specifically although I have a feeling it will have an impact on it for sure.

@bbigras
Copy link
Contributor

bbigras commented Sep 21, 2020

Upstream updated to 0.3.12 with more pulse compatibility fixes, might help with vlc.

@jansol thanks! I tried pipewire 0.3.12 with 59cbf97 and vlc's volume is still super quiet.

EDIT: issue filed at https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/307

EDIT 2: the issue is fixed in master

@jansol
Copy link
Contributor

jansol commented Oct 1, 2020

Sooo.... wait for next week's (presumably) 0.3.14 and then merge unless there are big regressions?

Having the nixos module merged would make further testing easier anyway...

@worldofpeace worldofpeace requested a review from a team October 3, 2020 19:38
@worldofpeace
Copy link
Contributor

I would only like to see this merged after us from @NixOS/gnome approve on this. The service is default enabled in GNOME and we maintain it. (will should change the maintainers to teams.gnome)

@jchv
Copy link
Contributor

jchv commented Oct 3, 2020

As far as I can tell this will not work in GNOME+Wayland at all, because of #90201. Am I missing something?

edit: To be clear I still eagerly await this PR to be merged, I just also suspect it may be unwise to make it a default in GNOME until that problem can be worked around.

@worldofpeace
Copy link
Contributor

As far as I can tell this will not work in GNOME+Wayland at all, because of #90201. Am I missing something?

edit: To be clear I still eagerly await this PR to be merged, I just also suspect it may be unwise to make it a default in GNOME until that problem can be worked around.

Yeah, I believe GNOME is only at the phase of "try this feature out" and not "let's use this now".
We're actually going to do #99147 (review), and turn it off by default. So #90201 won't be an issue in the default configuration.

@ashkitten
Copy link
Contributor

how can we make this work with fhsenv applications like steam and lutris? steam games work fine with pw-pulse %command% as the launch args, but not by default.

Copy link
Member

@jtojnar jtojnar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only few edges to polish but I do not foresee any compatibility issues with GNOME, as long as the shims are off by default. GNOME team can work on fixing the conflict with disabled-by-default rt-scheduling (#90201) later.

I also checked the changelogs up to 0.3.13 and we will want to update for the crash fixes but other than that, I did not see anything interesting. Well, 0.3.11 introduced rudimentary hsphfpd (packaging status tracked in #87910) but according to pali’s comments in pipewire/pipewire!295 it is not ready to be enabled by default yet.

Comment on lines +12 to +19
jack-libs = pkgs.runCommand "jack-libs" {} ''
mkdir -p "$out/lib"
ln -s "${pkgs.pipewire.jack}/lib" "$out/lib/pipewire"
'';
pulse-libs = pkgs.runCommand "pulse-libs" {} ''
mkdir -p "$out/lib"
ln -s "${pkgs.pipewire.pulse}/lib" "$out/lib/pipewire"
'';
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why not just have the meson flags include /pipewire and use the outputs directly?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are two reasons I didn't do that. One is that I don't like the package output should depend on module internals. That seems like a potential backwards compatibility issue in the future. We probably want to change the module eventually to avoid using LD_LIBRARY_PATH once a way is setup (and the inevitable mass recompilation acceptable). The second is that currently the output can be used as an override on FHS and wrapper style packages, the exact ones that tend to cause problems with this setup. For example the following works:

pkgs.tor-browser-bundle-bin.override { libpulseaudio = pkgs.pipewire.pulse; }

This is, of course, only valid when development information like headers aren't required.

nixos/modules/services/desktops/pipewire.nix Outdated Show resolved Hide resolved
nixos/modules/services/desktops/pipewire.nix Show resolved Hide resolved
nixos/modules/services/desktops/pipewire.nix Outdated Show resolved Hide resolved
spa_plugindir = join_paths(pipewire_libdir, spa_name)

-alsadatadir = join_paths(pipewire_datadir, 'alsa-card-profile', 'mixer')
+alsadatadir = join_paths(pipewire_libdir, '..', 'share', 'alsa-card-profile', 'mixer')
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should not this go to alsa output?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This directory is actually used by the SPA plugin and not the compatibility layer. The reason it was moved to pipewire_libdir is that there is a direct dependency link to which was causing cyclic dependencies. It might make more since to move it to $lib/lib/spa-0.2/alsa/mixer to make it more obvious.

The compatibility layer directories are $lib/lib/alsa-lib and $out/share/alsa. These could be moved to a separate output but are quite small and wouldn't remove the dependency on alsaLib due to the previously mentioned SPA plugin. I am open to this if it is preferred though.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess this is fine for now, thanks for the explanation.

pkgs/development/libraries/pipewire/default.nix Outdated Show resolved Hide resolved
pkgs/development/libraries/pipewire/default.nix Outdated Show resolved Hide resolved
pkgs/development/libraries/pipewire/default.nix Outdated Show resolved Hide resolved
pkgs/development/libraries/pipewire/test-paths.nix Outdated Show resolved Hide resolved
@L-as
Copy link
Member

L-as commented Oct 23, 2020

FWIW I've been using this and noticed that switching from pulseaudio to pipewire with nixos-rebuild switch doesn't work at all.

@jtojnar
Copy link
Member

jtojnar commented Oct 23, 2020

@L-as You need to log-in again as you cannot modify the environment of running session.

This replaces the temporary RPATH fix with the new upstream patch  from
jtojnar. It also removes the reference to the dev output.
@ofborg ofborg bot requested a review from jtojnar October 23, 2020 18:18
@ofborg ofborg bot added 10.rebuild-darwin: 1-10 and removed 10.rebuild-darwin: 0 This PR does not cause any packages to rebuild on Darwin labels Oct 23, 2020
@jtojnar
Copy link
Member

jtojnar commented Oct 23, 2020

Why not update directly to 0.3.13? Otherwise looks good to me.

@nglen
Copy link
Contributor Author

nglen commented Oct 23, 2020

Sorry, that was a mistake on my part. Just updated.

@ofborg ofborg bot requested a review from jtojnar October 23, 2020 20:48
@jtojnar
Copy link
Member

jtojnar commented Oct 23, 2020

Verified that screen recording works in GNOME Shell and pipewire.tests succeeds.

Thanks.

@jtojnar jtojnar merged commit 3a73543 into NixOS:master Oct 23, 2020
@bbigras
Copy link
Contributor

bbigras commented Oct 23, 2020

Thanks everybody! 🎉

@Janik-Haag Janik-Haag added the 12. first-time contribution This PR is the author's first one; please be gentle! label Jun 12, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
6.topic: nixos Issues or PRs affecting NixOS modules, or package usability issues specific to NixOS 8.has: module (update) This PR changes an existing module in `nixos/` 10.rebuild-darwin: 1-10 10.rebuild-linux: 11-100 12. first-time contribution This PR is the author's first one; please be gentle!
Projects
None yet
Development

Successfully merging this pull request may close these issues.