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

let cfg = config.sydnix.steam;
in {
  options.sydnix.steam = {
    enable = lib.mkEnableOption "Steam";
  };

  config = lib.mkIf cfg.enable {
    # Steam is quite buggy and doesn't play too nicely with Impermanence:
    #  1. We must use symlinks, rather than bind-mounts.
    #  2. The symlinks *must not be present* during Steam's first launch
    #     (i.e. when it installs itself).  Horrible bugs ensue.
    sydnix.impermanence.directories = [
      # Steam has a number of mysterious issues when its state directories are
      # symlinks.  Most bizarrely, I've experienced complementory issues;
      # everything breaks when I use bind-mounts, but not
      # symlinks.  Thanks, Valve!
      #
      # https://github.com/ValveSoftware/steam-for-linux/issues/10552
      # https://github.com/nix-community/impermanence/issues/165
      # { directory = ".local/share/Steam"; method = "symlink"; }
      { directory = ".steam"; method = "symlink"; }
    ];

    home.packages = [
      pkgs.protonup-qt
    ];
  };
}
