{
  config,
  pkgs,
  lib,
  ...
}: {
  options.niksos.games = lib.mkEnableOption "gaming related stuff.";
  config = lib.mkIf config.niksos.games {
    # nixpkgs.overlays = [
    #   (final: prev: let
    #     version = "1.4.2";
    #     hash = "sha256-xe0qlbtt06CUK8bXyaGDtCcHOXpSnkbuvcxaDJjeS/c=";
    #     npmHash = "sha256-/+NhlQydGS6+2jEjpbwycwKplVo/++wcdPiBNY3R3FI=";
    #     cargoHash = "sha256-VwzGbm34t7mg9ndmTkht6Ho32NQ+6uxuPTKi3+VrhYo=";
    #   in {
    #     gale = prev.gale.overrideAttrs (new: old: {
    #       src = prev.fetchFromGitHub {
    #         inherit version hash;
    #         owner = "Kesomannen";
    #         repo = "gale";
    #         rev = "1.4.2";
    #       };
    #       npmDeps = prev.fetchNpmDeps {
    #         hash = npmHash;
    #         name = "${new.pname}-${new.version}-npm-deps";
    #         inherit (new) src;
    #       };
    #       cargoDeps = prev.rustPlatform.fetchCargoVendor {
    #         inherit
    #           (new)
    #           pname
    #           version
    #           src
    #           cargoRoot
    #           ;
    #         hash = cargoHash;
    #       };
    #     });
    #   })
    # ];
    users.users.jsw.packages = [pkgs.gale];

    programs = {
      gamescope = {
        enable = true;
        capSysNice = true;
        args = [
          "--rt"
          "--expose-wayland"
        ];
      };

      steam = {
        enable = true;

        extraCompatPackages = [
          pkgs.proton-ge-bin
        ];

        gamescopeSession.enable = true;
      };
    };
    environment.variables = {
      "STEAM_FORCE_DESKTOP_UI_SCALING" = "1.5";
    };
  };
}
