Files
sydnix/modules/nixos/steam.nix
2025-04-12 18:19:12 -06:00

52 lines
1.4 KiB
Nix

{ config, pkgs, lib, inputs, system, ... }:
let cfg = config.sydnix.steam;
in {
options.sydnix.steam = {
enable = lib.mkEnableOption "Steam";
impermanenceUsers = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [];
description = ''
A list of users for which ~/.local/share/Steam shall be persisted. This
is a disgusting hack to get around an issue with Impermanence's
home-manager module.
https://github.com/nix-community/impermanence/issues/165#issuecomment-2537723929
'';
};
};
config = lib.mkIf cfg.enable {
programs.steam = {
enable = true;
remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true;
gamescopeSession.enable = true;
extraPackages = with pkgs; [
mono gtk3 gtk3-x11 libgdiplus zlib
];
};
programs.gamemode = {
enable = true;
enableRenice = true;
};
# This fixes the "glXChooseVisual failed" bug, see:
# https://github.com/NixOS/nixpkgs/issues/47932.
hardware.graphics = {
enable = true;
enable32Bit = true;
};
environment.persistence.${config.sydnix.impermanence.persistDirectory}.users =
builtins.listToAttrs
(builtins.map
(user: {
name = user;
value.directories = [".local/share/Steam"];
})
cfg.impermanenceUsers);
};
}