diff --git a/doc/builders/packages/steam.xml b/doc/builders/packages/steam.xml
index 8dfede59ac1..59673328bac 100644
--- a/doc/builders/packages/steam.xml
+++ b/doc/builders/packages/steam.xml
@@ -45,13 +45,7 @@
How to play
- For 64-bit systems it's important to have
-hardware.opengl.driSupport32Bit = true;
- in your /etc/nixos/configuration.nix. You'll also need
-hardware.pulseaudio.support32Bit = true;
- if you are using PulseAudio - this will enable 32bit ALSA apps integration. To use the Steam controller or other Steam supported controllers such as the DualShock 4 or Nintendo Switch Pro, you need to add
-hardware.steam-hardware.enable = true;
- to your configuration.
+ Use programs.steam.enable = true; if you want to add steam to systemPackages and also enable a few workarrounds aswell as Steam controller support or other Steam supported controllers such as the DualShock 4 or Nintendo Switch Pr.
diff --git a/nixos/doc/manual/release-notes/rl-2009.xml b/nixos/doc/manual/release-notes/rl-2009.xml
index 7da1f502378..c7b3190a5da 100644
--- a/nixos/doc/manual/release-notes/rl-2009.xml
+++ b/nixos/doc/manual/release-notes/rl-2009.xml
@@ -130,6 +130,11 @@ systemd.services.mysql.serviceConfig.ReadWritePaths = [ "/var/data" ];
This will make container tools like Podman work as non-root users out of the box.
+
+
+ The various documented workarounds to use steam have been converted to a module. programs.steam.enable enables steam, controller support and the workarounds.
+
+
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index 585cef9b42e..08a5f32c4c9 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -156,6 +156,7 @@
./programs/ssmtp.nix
./programs/sysdig.nix
./programs/systemtap.nix
+ ./programs/steam.nix
./programs/sway.nix
./programs/system-config-printer.nix
./programs/thefuck.nix
diff --git a/nixos/modules/programs/steam.nix b/nixos/modules/programs/steam.nix
new file mode 100644
index 00000000000..3c919c47a0c
--- /dev/null
+++ b/nixos/modules/programs/steam.nix
@@ -0,0 +1,25 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+ cfg = config.programs.steam;
+in {
+ options.programs.steam.enable = mkEnableOption "steam";
+
+ config = mkIf cfg.enable {
+ hardware.opengl = { # this fixes the "glXChooseVisual failed" bug, context: https://github.com/NixOS/nixpkgs/issues/47932
+ enable = true;
+ driSupport32Bit = true;
+ };
+
+ # optionally enable 32bit pulseaudio support if pulseaudio is enabled
+ hardware.pulseaudio.support32Bit = config.hardware.pulseaudio.enable;
+
+ hardware.steam-hardware.enable = true;
+
+ environment.systemPackages = [ pkgs.steam ];
+ };
+
+ meta.maintainers = with maintainers; [ mkg20001 ];
+}