helm/modules/desktop/gaming/steam.nix
Henrik Lissner a75c64d04a
Rewrite to use flakes
This puts a hard dependency on 20.09, but that's to be expected.
2020-10-11 01:31:33 -04:00

54 lines
1.6 KiB
Nix

{ options, config, lib, pkgs, ... }:
with lib;
with lib.my;
let cfg = config.modules.desktop.gaming.steam;
in {
options.modules.desktop.gaming.steam = with types; {
enable = mkBoolOpt false;
hardware.enable = mkBoolOpt false;
libDir = mkOpt str "$XDG_DATA_HOME/steamlib";
};
config = mkIf cfg.enable (mkMerge [
{
# I avoid programs.steam.enable because it installs another steam binary,
# which the xdesktop package invokes, instead of my steam shims below.
hardware.opengl.enable = true;
hardware.opengl.driSupport32Bit = true;
hardware.pulseaudio.support32Bit = config.hardware.pulseaudio.enable;
user.packages = with pkgs; [
# Get steam to keep its garbage out of $HOME
(writeScriptBin "steam" ''
#!${stdenv.shell}
HOME="${cfg.libDir}" exec ${steam}/bin/steam "$@"
'')
# for running GOG and humble bundle games
(writeScriptBin "steam-run" ''
#!${stdenv.shell}
HOME="${cfg.libDir}" exec ${steam-run-native}/bin/steam-run "$@"
'')
# So a rofi entry exists
(makeDesktopItem {
name = "steam";
desktopName = "Steam";
icon = "steam";
exec = "steam";
terminal = "false";
mimeType = "x-scheme-handler/steam";
categories = "Network;FileTransfer;Game";
})
];
system.userActivationScripts.setupSteamDir = ''mkdir -p "${cfg.libDir}"'';
# better for steam proton games
systemd.extraConfig = "DefaultLimitNOFILE=1048576";
}
(mkIf cfg.hardware.enable {
hardware.steam-hardware.enable = true;
})
]);
}