2023-08-21 22:44:19 -07:00
{ config , lib , pkgs , pkgs-unstable , user , jovian-nixos , home-manager , . . . }:
2023-08-21 21:05:02 -07:00
let
cfg = config . modules . gaming . steam-deck ;
in {
2023-08-21 22:44:19 -07:00
imports = [
( jovian-nixos + " / m o d u l e s " )
home-manager . nixosModule
] ;
2023-08-21 21:05:02 -07:00
options . modules . gaming . steam-deck . enable = lib . mkEnableOption " s t e a m - d e c k " ;
config = lib . mkIf cfg . enable {
2023-08-21 22:44:19 -07:00
2023-08-21 21:05:02 -07:00
jovian = {
2023-08-30 20:26:55 -07:00
steam . desktopSession = " g n o m e - x o r g " ;
2023-08-21 21:05:02 -07:00
steam . enable = true ;
2023-08-21 22:44:19 -07:00
steam . autoStart = true ;
steam . user = " ${ user } " ;
2023-08-21 21:05:02 -07:00
devices . steamdeck = {
2023-08-30 20:26:55 -07:00
enable = true ;
2023-08-21 21:05:02 -07:00
} ;
} ;
2023-08-30 20:26:55 -07:00
#services.xserver.displayManager.gdm.wayland = lib.mkForce true; # lib.mkForce is only required on my setup because I'm using some other NixOS configs that conflict with this value
#services.xserver.displayManager.defaultSession = "steam-wayland";
#services.xserver.displayManager.autoLogin.enable = true;
#services.xserver.displayManager.autoLogin.user = "${user}";
services . xserver . enable = true ;
services . xserver . displayManager . gdm . enable = false ;
services . xserver . desktopManager . gnome . enable = true ;
2023-08-21 21:05:02 -07:00
# Enable GNOME
sound . enable = true ;
2023-08-21 22:44:19 -07:00
hardware . pulseaudio . enable = lib . mkForce false ;
2023-08-21 21:05:02 -07:00
# Create user
users . users . ${ user } = {
isNormalUser = true ;
} ;
2023-08-30 20:26:55 -07:00
#systemd.services.gamescope-switcher = {
# wantedBy = [ "graphical.target" ];
# serviceConfig = {
# User = 1000;
# PAMName = "login";
# WorkingDirectory = "~";
2023-08-21 21:05:02 -07:00
2023-08-30 20:26:55 -07:00
# TTYPath = "/dev/tty7";
# TTYReset = "yes";
# TTYVHangup = "yes";
# TTYVTDisallocate = "yes";
2023-08-21 21:05:02 -07:00
2023-08-30 20:26:55 -07:00
# StandardInput = "tty-fail";
# StandardOutput = "journal";
# StandardError = "journal";
2023-08-21 21:05:02 -07:00
2023-08-30 20:26:55 -07:00
# UtmpIdentifier = "tty7";
# UtmpMode = "user";
2023-08-21 21:05:02 -07:00
2023-08-30 20:26:55 -07:00
# Restart = "always";
# };
2023-08-21 21:05:02 -07:00
2023-08-30 20:26:55 -07:00
# 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
# else58 closure
# 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
# '';
#};
2023-08-21 21:05:02 -07:00
environment . systemPackages = with pkgs ; [
gnome . gnome-terminal
gnomeExtensions . dash-to-dock
jupiter-dock-updater-bin
steamdeck-firmware
] ;
2023-08-21 22:44:19 -07:00
# GNOME settings through home
2023-08-21 21:05:02 -07:00
home-manager . users . ${ user } = {
dconf . settings = {
# Enable on-screen keyboard
" o r g / g n o m e / d e s k t o p / a 1 1 y / a p p l i c a t i o n s " = {
screen-keyboard-enabled = true ;
} ;
" o r g / g n o m e / s h e l l " = {
enabled-extensions = [
" d a s h - t o - d o c k @ m i c x g x . g m a i l . c o m "
] ;
favorite-apps = [ " s t e a m . d e s k t o p " ] ;
} ;
# Dash to Dock settings for a better touch screen experience
" o r g / g n o m e / s h e l l / e x t e n s i o n s / d a s h - t o - d o c k " = {
background-opacity = 0 .80000000000000004 ;
custom-theme-shrink = true ;
dash-max-icon-size = 48 ;
dock-fixed = true ;
dock-position = " L E F T " ;
extend-height = true ;
height-fraction = 0 .60999999999999999 ;
hot-keys = false ;
preferred-monitor = -2 ;
preferred-monitor-by-connector = " e D P - 1 " ;
scroll-to-focused-application = true ;
show-apps-at-top = true ;
show-mounts = true ;
show-show-apps-button = true ;
show-trash = false ;
} ;
} ;
} ;
2023-08-21 22:44:19 -07:00
} ;
2023-08-21 21:05:02 -07:00
}