{ user, home }: { config, lib, pkgs, ... }: { environment.persistence."/persist/state" = { "${home}/.steam" = { }; "${home}/.local/share/Steam" = { }; }; programs.steam = { enable = true; localNetworkGameTransfers.openFirewall = true; extest.enable = true; protontricks.enable = true; extraCompatPackages = with pkgs; [ proton-ge-bin ]; }; home-manager.users.${user}.systemd.user = { services.steam-ln = let steamLn = lib.meta.getExe ( pkgs.writeShellApplication { name = "steam-ln"; runtimeInputs = with pkgs; [ coreutils ]; text = builtins.readFile ./steam-ln.sh; } ); in { Unit = { Description = "Sync Steam games with Games directory"; After = [ config.environment.persistence."/persist/state"."${home}/.local/share/Steam".mount config.environment.persistence."/persist/user"."${home}/Games".mount ]; DefaultDependencies = false; }; Service = { ExecStart = steamLn; Type = "oneshot"; }; Install.WantedBy = [ "default.target" ]; }; paths.steam-ln = { Unit = { Description = "Monitor Steam games directory for changes"; After = [ config.environment.persistence."/persist/state"."${home}/.local/share/Steam".mount config.environment.persistence."/persist/user"."${home}/Games".mount ]; }; Path.PathChanged = "${home}/.local/share/Steam/steamapps/common"; Install.WantedBy = [ "default.target" ]; }; }; }