Add steamos role
This commit is contained in:
93
roles/steamos.nix
Normal file
93
roles/steamos.nix
Normal file
@@ -0,0 +1,93 @@
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
options = {
|
||||
steamos = {
|
||||
amdvlk = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
users.users.steam = {
|
||||
isNormalUser = true;
|
||||
uid = 1010;
|
||||
password = "steam";
|
||||
extraGroups = [
|
||||
"video"
|
||||
"input"
|
||||
"audio"
|
||||
"networkmanager"
|
||||
];
|
||||
shell = pkgs.bash;
|
||||
};
|
||||
|
||||
services.xserver.enable = false;
|
||||
|
||||
# Современные видеодрайверы
|
||||
hardware = {
|
||||
graphics = {
|
||||
enable = true;
|
||||
enable32Bit = true;
|
||||
};
|
||||
|
||||
amdgpu.amdvlk = lib.mkIf config.steamos.amdvlk {
|
||||
enable = true;
|
||||
support32Bit.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
programs = {
|
||||
gamescope = {
|
||||
enable = true;
|
||||
capSysNice = true;
|
||||
};
|
||||
steam = {
|
||||
enable = true;
|
||||
gamescopeSession.enable = true;
|
||||
|
||||
remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
|
||||
dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
|
||||
localNetworkGameTransfers.openFirewall = true;
|
||||
};
|
||||
};
|
||||
services.getty.autologinUser = "steam";
|
||||
environment = {
|
||||
loginShellInit = ''
|
||||
[[ "$(tty)" = "/dev/tty1" ]] && ./gs.sh
|
||||
'';
|
||||
};
|
||||
|
||||
home-manager.users.steam = {
|
||||
home.file."gs.sh" = {
|
||||
text = ''
|
||||
#!/usr/bin/env bash
|
||||
set -xeuo pipefail
|
||||
|
||||
gamescopeArgs=(
|
||||
--adaptive-sync # VRR support
|
||||
--hdr-enabled
|
||||
--rt
|
||||
--steam
|
||||
-S DP-1
|
||||
)
|
||||
steamArgs=(
|
||||
-pipewire-dmabuf
|
||||
-tenfoot
|
||||
--console
|
||||
)
|
||||
|
||||
exec gamescope "$${gamescopeArgs[@]}" -- steam "$${steamArgs[@]}"
|
||||
'';
|
||||
executable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user