diff --git a/modules/desktop/gnome/default.nix b/modules/desktop/gnome/default.nix index fb6d93e..104d886 100644 --- a/modules/desktop/gnome/default.nix +++ b/modules/desktop/gnome/default.nix @@ -43,15 +43,63 @@ services = { xserver = { - enable = true; + enable = false; desktopManager.gnome.enable = true; displayManager = { gdm.wayland = true; - defaultSession = "steam-wayland"; + # defaultSession = "steam-wayland"; autoLogin.enable = true; autoLogin.user = "kabbone"; }; }; }; + systemd.services.gamescope-switcher = { + wantedBy = [ "graphical.target" ]; + serviceConfig = { + User = 2000; + PAMName = "login"; + WorkingDirectory = "~"; + + TTYPath = "/dev/tty7"; + TTYReset = "yes"; + TTYVHangup = "yes"; + TTYVTDisallocate = "yes"; + + StandardInput = "tty-fail"; + StandardOutput = "journal"; + StandardError = "journal"; + + UtmpIdentifier = "tty7"; + UtmpMode = "user"; + + Restart = "always"; + }; + + script = '' + set-session () { + mkdir -p ~/.local/state + >~/.local/state/steamos-session-select echo "$1" + } + consume-session () { + if [[ -e ~/.local/state/steamos-session-select ]]; then + cat ~/.local/state/steamos-session-select + rm ~/.local/state/steamos-session-select + else + echo "gamescope" + fi + } + while :; do + session=$(consume-session) + case "$session" in + plasma) + dbus-run-session -- gnome-shell --display-server --wayland + ;; + gamescope) + steam-session + ;; + esac + done + ''; + }; }