diff --git a/modules/desktop-game-mods.nix b/modules/desktop-game-mods.nix index 9ce8ee7..75560da 100644 --- a/modules/desktop-game-mods.nix +++ b/modules/desktop-game-mods.nix @@ -21,6 +21,12 @@ # location = "install" (default, steamapps/common/) | "prefix" # (steamapps/compatdata//pfx — for user-storage mods) # +# Each mod can also declare `launchOptions = [ "FOO=bar" ]`. Lists from +# every mod targeting the same Steam App ID are concatenated (mod-name +# alphabetical), joined with spaces, and `%command%` is appended once. +# The result is written into Steam's per-app block in localconfig.vdf +# so it persists across Steam restarts. +# # Example: stub the cold-start intro video, plus drop a sound mod XML into # the Wine prefix's user storage. # services.gameMods.mods."fh5" = { @@ -195,6 +201,7 @@ let MOD_DATA = json.loads(${lib.escapeShellArg modData}) LAUNCH_OPTIONS_DATA = json.loads(${lib.escapeShellArg launchOptionsData}) + BACKUP_SUFFIX = ".nix-backup" def find_steam_root(): @@ -327,8 +334,6 @@ let print(f"game-mods: {verb} {target}", file=sys.stderr) - - def apply_launch_options(): """Write declarative launch options into Steam's localconfig.vdf. @@ -403,6 +408,8 @@ let ) print("game-mods: launch options done", file=sys.stderr) + + def main(): if MOD_DATA: for entry in MOD_DATA: