{ 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 ]; }; }