strictDeps breaks `withGtkWrapper` as, it seems, the setup hook does not
run and `GSETTINGS_SCHEMA_PATH` does not get set so `XDG_DATA_DIRS` is
not updated. Probably other things are broken by it as well. See also
probably related https://github.com/NixOS/nixpkgs/issues/56943
(mentioned from `doc/languages-frameworks/gnome.section.md`).
This partially reverts commit da4707d636.
Sway can be compiled with or without systemd(-logind) and dbus. This
commit exposes that support via the global systemdSupport and
dbusSupport arguments, which are understood by many other nixpkgs
expressions and can be set globally in ~/.config/nixpkgs/config.nix.
This commit also adds a third argument, trayEnabled, which allows to
disable sway's tray. The tray requires dbusSupport and
systemdSupport.
Reviewers of this commit asked for potential use cases. There are
many of them; a very non-exhaustive list includes:
* Use of nixpkgs on operating systems which systemd does not support,
such as MacOS/Darwin, FreeBSD, OpenBSD, or Alpine Linux.
* Use of nixpkgs on *-musl platforms, which systemd does not
officially support (out-of-tree patches to support musl exist for a
few systemd versions).
* Use of sway in situations where dbus is inappropriate, such as
sway's "kiosk mode".
* High-security environments, where the additional attack surface
exposed by dbus outweighs any features it may offer.
This is a very non-exhaustive list.
This seems like a good idea in general and will at least make it easier
to get screen sharing to work (but still requires a proper NixOS
configuration including xdg-desktop-portal-wlr).
Note: It isn't necessary to set XDG_SESSION_TYPE=wayland as wlroots
already takes care of it (currently at least for the logind and libseat
session backends, the next wlroots release will require libseat):
4839664a92/backend/session/session.c (L80)
The default config.in template contains
"include @sysconfdir@/sway/config.d/*" but we've dropped it to better
support non-NixOS (which seems like a mistake in retrospect).
This restores that behaviour and extends the default configuration via
nixos.conf to fix#119445.
Note: The security configurations (security.d) where dropped entirely
(but maybe they'll return).
This is useful for use-cases like this (logging to journald):
```
programs.sway.extraSessionCommands = ''
if [ -z "$_SWAY_DID_SYSTEMD_CAT" ]; then
export _SWAY_DID_SYSTEMD_CAT=1
exec ${config.systemd.package}/bin/systemd-cat -t sway "$0" "$@"
fi
# ... (potentially also another exec)
'';
```
Without this change the rest of the extraSessionCommands won't be
executed after the exec since the whole extraSessionCommands block would
be skipped during the re-execution (_SWAY_WRAPPER_ALREADY_EXECUTED is
already set).