{
  config,
  pkgs,
  lib,
  ...
}:
with lib;
{
  options.components.gui.steam.enable = mkOption {
    type = lib.types.bool;
    default = config.components.gui.enable;
  };

  config = mkIf (config.components.gui.steam.enable) {

    environment.systemPackages = [
      (pkgs.writeShellScriptBin "steam" ''
        /var/run/wrappers/bin/sudo -u steam -i ${pkgs.steam}/bin/steam $@
      '')
      pkgs.xorg.xhost
    ];

    users.users.steam = {
      isNormalUser = false;
      isSystemUser = true;
      home = "/home/steam";
      createHome = true;
      extraGroups = [
        "audio"
        "input"
        "video"
        "pipewire"
      ];
      group = "steam";
      shell = pkgs.bashInteractive;
    };
    users.groups.steam = { };

    # for steam
    # ---------
    hardware.graphics.enable = true;
    hardware.graphics.enable32Bit = true;

    security.sudo.extraConfig = ''
      ${config.users.extraUsers.mainUser.name} ALL=(steam) NOPASSWD: ALL
    '';
  };
}