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

{
  imports = [ ];

  options.me.games = lib.mkOption {
    type = lib.types.bool;
    default = config.me.graphical;
    example = true;
    description = "Whether we want to install games.";
  };

  config = (
    lib.mkMerge [
      (lib.mkIf config.me.games {
        allowedUnfree = [
          "steam"
          "steam-original"
          "steam-unwrapped"
          "steam-run"
        ];

        programs.steam = {
          enable = true;
          remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
          # dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
          localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers
        };

        environment.persistence."/persist" = lib.mkIf (!config.me.buildingIso) {
          hideMounts = true;
          users.talexander = {
            directories = [
              ".local/share/Steam"
              ".steam"
              ".factorio"
            ];
          };
        };
      })
    ]
  );

}