# # Gnome configuration # # flake.nix # ├─ ./hosts # │ └─ ./laptop # │ └─ default.nix # └─ ./modules # └─ ./desktop # └─ ./gnome # └─ default.nix * # { config, lib, user, pkgs, jovian-nixos, ... }: { imports = [ (jovian-nixos + "/modules") ]; jovian = { steam.enable = true; devices.steamdeck = { enable = true; }; }; hardware.pulseaudio.enable = lib.mkForce false; hardware.opengl = { enable = true; driSupport = true; driSupport32Bit = true; }; environment.systemPackages = with pkgs; [ gnome.gnome-terminal gnomeExtensions.dash-to-dock steamdeck-firmware rocm-opencl-icd rocm-opencl-runtime clinfo ]; services = { xserver = { enable = false; desktopManager.gnome.enable = true; displayManager = { gdm.wayland = true; # 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 ''; }; }