{ lib, config, pkgs, ... }:

with lib;
let
  cfg = config.modules.software.distractions.steam;
in {
  options.modules.software.distractions.steam = {
    enable = mkEnableOption "Enable Steam, the game distribution software";
  };

  config = mkIf cfg.enable {
    programs.steam.enable = true;

    # optimize linux system performance on demand
    # https://github.com/FeralInteractive/gamemode
    user.extraGroups = [ "gamemode" ];
    programs.gamemode = {
      enable = true;
      enableRenice = true;
      settings = {
        custom = {
          start = "${pkgs.libnotify}/bin/notify-send --app-name GameMode 'GameMode started'";
          end = "${pkgs.libnotify}/bin/notify-send --app-name GameMode 'GameMode ended'";
        };
      };
    };

    programs.gamescope = {
      enable = true;
      capSysNice = true;
    };
    programs.steam.gamescopeSession = {
      enable = true;
      args = [ "-W 1920" "-H 1080" "-r 60" "--expose-wayland" "-e" ];
    };

    user.packages = [ pkgs.protontricks pkgs.steam-run ];
  };
}