mirror of
https://github.com/starr-dusT/dotfiles.git
synced 2025-02-19 19:27:31 -08:00
132 lines
3.6 KiB
Nix
132 lines
3.6 KiB
Nix
{ config, lib, pkgs, pkgs-unstable, user, jovian-nixos, home-manager, ... }:
|
|
|
|
let
|
|
cfg = config.modules.gaming.steam-deck;
|
|
in {
|
|
imports = [
|
|
(jovian-nixos + "/modules")
|
|
home-manager.nixosModule
|
|
];
|
|
options.modules.gaming.steam-deck.enable = lib.mkEnableOption "steam-deck";
|
|
config = lib.mkIf cfg.enable {
|
|
|
|
|
|
jovian = {
|
|
steam.enable = true;
|
|
steam.autoStart = true;
|
|
steam.user = "${user}";
|
|
devices.steamdeck = {
|
|
enable = false;
|
|
};
|
|
};
|
|
|
|
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}";
|
|
|
|
# Enable GNOME
|
|
sound.enable = true;
|
|
hardware.pulseaudio.enable = lib.mkForce false;
|
|
|
|
services.xserver.desktopManager.gnome = {
|
|
enable = true;
|
|
};
|
|
|
|
# Create user
|
|
users.users.${user} = {
|
|
isNormalUser = true;
|
|
};
|
|
|
|
systemd.services.gamescope-switcher = {
|
|
wantedBy = [ "graphical.target" ];
|
|
serviceConfig = {
|
|
User = 1000;
|
|
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
|
|
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
|
|
'';
|
|
};
|
|
|
|
environment.systemPackages = with pkgs; [
|
|
gnome.gnome-terminal
|
|
gnomeExtensions.dash-to-dock
|
|
jupiter-dock-updater-bin
|
|
steamdeck-firmware
|
|
];
|
|
|
|
# GNOME settings through home
|
|
home-manager.users.${user} = {
|
|
dconf.settings = {
|
|
# Enable on-screen keyboard
|
|
"org/gnome/desktop/a11y/applications" = {
|
|
screen-keyboard-enabled = true;
|
|
};
|
|
"org/gnome/shell" = {
|
|
enabled-extensions = [
|
|
"dash-to-dock@micxgx.gmail.com"
|
|
];
|
|
favorite-apps = ["steam.desktop"];
|
|
};
|
|
# Dash to Dock settings for a better touch screen experience
|
|
"org/gnome/shell/extensions/dash-to-dock" = {
|
|
background-opacity = 0.80000000000000004;
|
|
custom-theme-shrink = true;
|
|
dash-max-icon-size = 48;
|
|
dock-fixed = true;
|
|
dock-position = "LEFT";
|
|
extend-height = true;
|
|
height-fraction = 0.60999999999999999;
|
|
hot-keys = false;
|
|
preferred-monitor = -2;
|
|
preferred-monitor-by-connector = "eDP-1";
|
|
scroll-to-focused-application = true;
|
|
show-apps-at-top = true;
|
|
show-mounts = true;
|
|
show-show-apps-button = true;
|
|
show-trash = false;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|