Change:
Describe the bug The recent update of sway and wlroots seems to have broken screen sharing as well as gnome3 pinentry popups. To Reproduce Steps to reproduce the behavior: I've built a system on (current nixos-unstable, there neither of the mentioned things works). But if I build a system on (previous unstable, there both of the mentioned things works.). I've then checked out and copied the folders and from master into my checkout and built a system based on the old unstable but with only those two packages updated. Then it's still broken. So it's at least isolated to those two packages. Expected behavior I expect screen sharing to work. I also expect to be able to unlock my security key from places where the ncurses interface doesn't work (like within Emacs). Additional context Here's my complete sway setup: Notify maintainers cc Metadata system: host os: multi-user?: sandbox: version: channels(root): nixpkgs: Maintainer information:
Related: .
I can confirm the gnome3 pinentry () issue (wasn't aware of it but can reproduce it). I'm not using screen sharing on Wayland (yet) so unfortunately I cannot have a look into that. cc (): FYI, in case you use Sway and can reproduce this. Edit: Might be unrelated but yesterday I've also had a crash: Another thing that changed with Sway 1.6: now "defaults" to () while it was previously . This shouldn't matter (edit: nope, turns out that it does really matter :o :D) but I didn't reboot my system and noticed that at least the still has (if the environment from that process is inherited to start then that would certainly seem like a problem but only then). That's all I can say for today.
fails to start for me on nixos-unstable; presumably this is why screen sharing doesn't work. This appears in :
I've have the same errors on latest unstable, may be related to as mentioned.
I've just noticed that on sway 1.6 my firefox launches in XWayland and not in Wayland mode. Something seems to be very fishy with how environment variables are handled here. EDIT: I may have started that instance of Firefox by cliking a link from something running in Xwayland (slack). So I wouldn't care about that for now.
Ok, so I've had a closer look at this and all of my issues where surprisingly related to the change. I've executed and now the Gnome3 Pinentry () works again. I guess that should fix the screen sharing issues too. There are two things that surprised me: 1) I'd assume some of you did reboot and in my case should've had the correct due to our (which should've caused my to be "restarted" as well) 2) My systemd unit for swaylock uses neither D-Bus nor does it hard-code So I wondered where the comes from so I had a quick look at the Wayland source-code and, indeed, it's the default if isn't set: So it seems like Sway's change is much more severe than I though and causes (all of) these regressions (but the change makes sense as this reveals that it was basically always "broken" as it worked with a default value instead of properly via ). For a quick fix it should be enough to add to your (I already had in there, which is useful as well). However, to fix this properly we need to find a nice solution for Nixpkgs.
This issue has been mentioned on NixOS Discourse. There might be relevant details there:
I've looked into that and opened as a potential fix (though it will only work for new users / when using the default as we've unfortunately removed until now). Feedback is welcome.

Discussion:
extraOptions = cfg.extraOptions; withBaseWrapper = cfg.wrapperFeatures.base; withGtkWrapper = cfg.wrapperFeatures.gtk; <ins> isNixOS = true; </ins> }; in { options.programs.sway = {

systemPackages = [ swayPackage ] ++ cfg.extraPackages; etc = { "sway/config".source = mkOptionDefault "${swayPackage}/etc/sway/config"; <del> #"sway/security.d".source = mkOptionDefault "${swayPackage}/etc/sway/security.d/"; #"sway/config.d".source = mkOptionDefault "${swayPackage}/etc/sway/config.d/"; </del> <ins> "sway/config.d/nixos.conf".source = pkgs.writeText "nixos.conf" '' # Import the most important environment variables into the D-Bus and systemd # user environments (e.g. required for screen sharing and Pinentry prompts): exec dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK ''; </ins> }; }; security.pam.services.swaylock = {};

, pango, cairo, libinput, libcap, pam, gdk-pixbuf, librsvg , wlroots, wayland-protocols, libdrm , nixosTests <ins> # Used by the NixOS module: , isNixOS ? false </ins> }: stdenv.mkDerivation rec {

}) ]; <ins> postPatch = lib.optionalString isNixOS '' echo -e 'ninclude /etc/sway/config.d/*' >> config.in ''; </ins> nativeBuildInputs = [ meson ninja pkg-config wayland scdoc ];

, withBaseWrapper ? true, extraSessionCommands ? "", dbus , withGtkWrapper ? false, wrapGAppsHook, gdk-pixbuf, glib, gtk3 , extraOptions ? [] # E.g.: [ "--verbose" ] <ins> # Used by the NixOS module: , isNixOS ? false </ins> }: assert extraSessionCommands != "" -> withBaseWrapper;

with lib; let <ins> sway = sway-unwrapped.override { inherit isNixOS; }; </ins> baseWrapper = writeShellScriptBin "sway" '' set -o errexit if [ ! "$_SWAY_WRAPPER_ALREADY_EXECUTED" ]; then

fi if [ "$DBUS_SESSION_BUS_ADDRESS" ]; then export DBUS_SESSION_BUS_ADDRESS <del> exec ${sway-unwrapped}/bin/sway "$@" </del> <ins> exec ${sway}/bin/sway "$@" </ins> else <del> exec ${dbus}/bin/dbus-run-session ${sway-unwrapped}/bin/sway "$@" </del> <ins> exec ${dbus}/bin/dbus-run-session ${sway}/bin/sway "$@" </ins> fi ''; in symlinkJoin { <del> name = "sway-${sway-unwrapped.version}"; </del> <ins> name = "sway-${sway.version}"; </ins> paths = (optional withBaseWrapper baseWrapper) <del> ++ [ sway-unwrapped ]; </del> <ins> ++ [ sway ]; </ins> nativeBuildInputs = [ makeWrapper ] ++ (optional withGtkWrapper wrapGAppsHook);

passthru.providedSessions = [ "sway" ]; <del> inherit (sway-unwrapped) meta; </del> <ins> inherit (sway) meta; </ins> }