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: