Change:
<ins> { lib , stdenv , fetchFromGitHub , wrapQtAppsHook , cmake , pkg-config , qtbase , qtwebengine , qtwayland , pipewire , nix-update-script }: stdenv.mkDerivation rec { pname = "discord-screenaudio"; version = "1.9.2"; src = fetchFromGitHub { owner = "maltejur"; repo = "discord-screenaudio"; rev = "v${version}"; hash = "sha256-it7JSmiDz3k1j+qEZrrNhyAuoixiQuiEbXac7lbJmko="; fetchSubmodules = true; }; nativeBuildInputs = [ wrapQtAppsHook cmake pkg-config ]; buildInputs = [ qtbase qtwebengine qtwayland pipewire ]; preConfigure = '' # version.cmake either uses git tags or a version.txt file to get app version. # Since cmake can't access git tags, write the version to a version.txt ourselves. echo "${version}" > version.txt ''; passthru.updateScript = nix-update-script { }; meta = { description = "A custom discord client that supports streaming with audio on Linux"; homepage = "https://github.com/maltejur/discord-screenaudio"; downloadPage = "https://github.com/maltejur/discord-screenaudio/releases"; changelog = "https://github.com/maltejur/discord-screenaudio/releases/tag/v${version}"; license = lib.licenses.gpl3Only; maintainers = with lib.maintainers; [ huantian ]; platforms = lib.platforms.linux; }; } </ins>

Discussion:
I found this bug while trying to create a package for (mentioned in ), but it seems all qtwebengine-based browsers like Qutebrowser and Falkon have the same issue. These browsers are able to pick up my microphone just fine, but any virtual devices created via pipewire do not show up. discord-screenaudio creates a virtual source to pipe desktop audio through, which then is meant to be detected as an audio input inside a qtwebengine window linked to Creating virtual devices manually via (following ) also doesn't work, as they do not show up in Qutebrowser or Falkon. They do show up in Firefox, Chromium, and the native Discord client, however. pipewire running as the audio server a virtual audio device using to on Falkon or Qutebrowser and see that does not show up in the input list. does show up in Falkon or Qutebrowser One final difference I see is within the Helvum program, where I can see how audio devices are connected. When Firefox, Chromium and Discord use my microphone a connection is made in Helvum, but when Qutebrowser, Falkon, or discord-screenaudio do no connection is visible. To me it seems that qtwebengine-based browsers must not be connecting to pipewire or pipewire-pulse at all, but talking to the audio devices directly somehow. (qtwebengine) Please run and paste the result.
I'm unsure if I should also mention the maintainers of Falkon and Qutebrowser here since it seems the issue lies with qtwebengine
You should, I think it's safe to say qtwebengine is pretty much maintained for qutebrowser alone. I don't use pipewire/pulse but I think does.
Alright then: falkon's maintainer is other qutebrowser maintainers that have not been mentioned yet are
I do use pipewire, but not virtual audio devices. Have you ensured that you have xdg-desktop-portal-wlr setup correctly? I have to run this sequence of commands in order to get screensharing to work, for example: Where is set to Of course, if you are not using wayland then you'd want instead of
Weird. I'm on X11, not wayland.

I both wireplumber and xdg-desktop-portal via the nixos configuration options and it still doesn't make a difference, even when running those commands before running these browsers
Is xdg-desktop-portal required for pipewire audio support in qtwebengine?
I don't think so since the mic was working even when video capture is not (and the later does requre it). However there appears to have been a regression recently, I just bumped my pin just yesterday and now my mic is not working at all in qutebrowser.
Can you paste the code for creating the package you have so far?
This still seems like an issue, see further attempts at packaging discord-screenaudio in .
The issue has indeed been fixed!

Project description A custom discord client that supports streaming with audio on Linux Metadata homepage/source URL: license: GPL-3.0 platforms: linux