diff --git a/hosts/Infini-DESKTOP/default.nix b/hosts/Infini-DESKTOP/default.nix index de4f6b0..7ef7956 100644 --- a/hosts/Infini-DESKTOP/default.nix +++ b/hosts/Infini-DESKTOP/default.nix @@ -37,6 +37,9 @@ enable = true; btrfs.enable = true; }; + software = { + steam.enable = true; + }; }; networking.interfaces = { diff --git a/modules/modules/software/steam.nix b/modules/modules/software/steam.nix new file mode 100644 index 0000000..66083e7 --- /dev/null +++ b/modules/modules/software/steam.nix @@ -0,0 +1,60 @@ +{ config, lib, pkgs, ... }: +with lib; +with lib.hlissner; +let + cfg = config.modules.software.steam; + + hw = config.modules.hardware; + + steam = pkgs.steam.override { + extraLibraries = (pkgs: + (with config.hardware.opengl; + if pkgs.hostPlatform.is64bit + then [ package ] ++ extraPackages + else [ package32 ] ++ extraPackages32) + + ++ (with pkgs; [ pipewire ])); + + + extraProfile = mkIf hw.gpu.nvidia '' + unset VK_ICD_FILENAMES + export VK_ICD_FILENAMES=${config.hardware.nvidia.package}/share/vulkan/icd.d/nvidia_icd.json:${config.hardware.nvidia.package.lib32}/share/vulkan/icd.d/nvidia_icd32.json + ''; + }; +in +{ + options.modules.software.steam = { + enable = mkBoolOpt false; + }; + + config = mkMerge [ + { + assertions = [ + { + assertion = cfg.enable && !config.info.graphical; + message = "Steam cannot be enabled in a non-graphical environment"; + } + ]; + } + + (mkIf cfg.enable { + # Taken from the programs.steam option, reimplemented here to move software into userland + hardware.opengl = { + enable = true; + driSupport = true; + driSupport32Bit = true; + }; + + hardware.pulseaudio.support32Bit = config.hardware.pulseaudio.enable; + + hardware.steam-hardware.enable = true; + + home.home.packages = [ + steam + steam.run + + pkgs.protonup + ]; + }) + ]; +} diff --git a/users/infinidoge/default.nix b/users/infinidoge/default.nix index e6d302d..5a519b5 100644 --- a/users/infinidoge/default.nix +++ b/users/infinidoge/default.nix @@ -83,8 +83,6 @@ in programs = { dconf.enable = true; - - steam.enable = true; }; modules = { diff --git a/users/profiles/gaming/default.nix b/users/profiles/gaming/default.nix index 06404c3..2f6baca 100644 --- a/users/profiles/gaming/default.nix +++ b/users/profiles/gaming/default.nix @@ -1,6 +1,4 @@ { pkgs, ... }: { - imports = [ ./steam.nix ]; - home.packages = with pkgs; [ wineWowPackages.stable (multimc.override { msaClientID = "01524508-0110-46fc-b468-362d31ca41e6"; }) diff --git a/users/profiles/gaming/steam.nix b/users/profiles/gaming/steam.nix deleted file mode 100644 index 26a04ef..0000000 --- a/users/profiles/gaming/steam.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ pkgs, main, ... }: { - home.packages = with pkgs; [ - (steam.override { - extraLibraries = pkgs: with pkgs; [ pipewire ]; - extraProfile = '' - unset VK_ICD_FILENAMES - export VK_ICD_FILENAMES=${main.hardware.nvidia.package}/share/vulkan/icd.d/nvidia_icd.json:${main.hardware.nvidia.package.lib32}/share/vulkan/icd.d/nvidia_icd32.json - ''; - }) - - protonup - ]; -}