Você deve ser capaz de colocar a maior parte do aplicativo que você normalmente colocaria no xinitrc também em services.xserver.desktopManager.xfce.extraSessionCommands
como variáveis de ambiente importantes, como $DISPLAY
e $DBUS_SESSION_BUS_ADDRESS
, estão definidas.
De fato, na maioria dos xinitrc's, inicie o gerenciador de janelas como o último processo.
Aqui está um snippet como extraSessionCommands
é implementado, retirado de xfce.nix :
services.xserver.desktopManager.session = [{
name = "xfce";
bgSupport = true;
start = ''
${cfg.extraSessionCommands}
# Set GTK_PATH so that GTK+ can find the theme engines.
export GTK_PATH="${config.system.path}/lib/gtk-2.0:${config.system.path}/lib/gtk-3.0"
# Set GTK_DATA_PREFIX so that GTK+ can find the Xfce themes.
export GTK_DATA_PREFIX=${config.system.path}
${pkgs.runtimeShell} ${pkgs.xfce.xinitrc} &
waitPID=$!
'';
}];