gnomes-session sources its environment from a login shell. But if the systemd
user environment already contains `__NIXOS_SET_ENVIRONMENT_DONE` the environment
setup won't happen correctly. Simply unset this variable to ensure a fresh
environment.
This was previously handled by a GDM patch, but it no longer works reliably with
gnome-sessions systemd session.
We still need the GDM patch to handle running other sessions (eg. plasma).
See https://github.com/NixOS/nixpkgs/issues/48255 for more info on the
underlying issue.
gnome-session inherits GDMS PATH, which is at the moment non-functional. In X11
this didn't matter as the `Xsession` wrapper would populate the environment
beforehand. Wayland sessions doesn't source `Xesssion` (duh), so we patch
`bin/gnome-session` to use absolute paths for `grep` and `bash`.
In addition `bin/gnome-session` is a simple wrapper around
`libexec/gnome-session-binary` mostly responsible for sourcing the users profile
before launching the binary. This made our wrapping of `bin/gnome-session`
ineffective on wayland as the profile would reset the environment. Simply wrap
`libexec/gnome-session-binary` instead.
TryExec needs absolute path too, otherwise the desktop file will be ignored
unless gnome-session is in PATH, in which case, we would not need to patch
Exec.