game-mods: drop in-house launchOptions writer, hardcode FH5 ini
Replaces three handfuls of custom code with upstream / static data:
- Per-app Steam launch options now declared via different-name/steam-
config-nix's `programs.steam.config.apps.<n>` instead of a custom
~70-line `apply_launch_options` Python function. The dropped writer
was racy: it edited localconfig.vdf without checking for a running
Steam, so any timer firing while Steam was open would lose its
changes on the next Steam shutdown. steam-config-nix's `closeSteam`
flag closes that race.
Also moves the GE-Proton compat-tool pin to declarative config —
one fewer manual click in Steam UI to remember.
- `mods.<>.launchOptions` option, the `launchOptionsData` aggregation,
and `LAUNCH_OPTIONS_DATA` are removed from desktop-game-mods.nix.
The module now does file-drops only; Steam config lives in its own
`programs.steam.config` namespace, where it belongs.
fh5-vkd3d-no-hvv (which existed only to set VKD3D_CONFIG) collapses
into the FH5 launchOptions block in hosts/yarn/default.nix.
- `unitConfig.X-ConfigHash` on game-mods.service is replaced with
`restartTriggers`. NixOS already emits `X-Restart-Triggers=<hash>`
on the unit; the workaround was redundant. The Type=oneshot,
RemainAfterExit=no semantics make `systemctl restart` re-run
ExecStart cleanly on hash change.
- The awk pipeline that patched OptiScaler's stock OptiScaler.ini at
build time is replaced with a hand-written hosts/yarn/optiscaler-
fh5-rdna3.ini containing only the keys we override (5 of them).
OptiScaler's Config::readString defaults missing keys to "auto"
(Config.cpp:1568), so a minimal file is sufficient. Side benefits:
one upstream-source dependency removed, a key-rename in upstream
becomes a behavior change rather than a silent awk-no-match.
Override values + sources:
Fsr4Update=true FH5 wiki, FSR4 Linux Setup
DlssReactiveMaskBias=0.65 FH5 wiki, "Known Issues"
FsrNonLinearColorSpace=true FSR4 wiki, "Image Quality"
EnableFsr2Inputs=false FH5 wiki, "Known Issues"
Dxgi=false FH5 wiki
- forza-trigger's three custom Python derivations (pydualsense,
hidapi-usb, fdp) factored out of default.nix into a sibling
python-packages.nix. Same logic, single-purpose file. Bumping a
version is now a one-place hash roll.
- pkgs.dualsensectl removed from the daemon's environment.system-
Packages. Single-shot writes from the CLI get clobbered by the BG
sendReport thread within ~4ms anyway, so the tool is only useful
with the daemon stopped — not worth the unconditional install.
Bring it in ad-hoc with `nix-shell -p dualsensectl`.
This commit is contained in:
39
hosts/yarn/optiscaler-fh5-rdna3.ini
Normal file
39
hosts/yarn/optiscaler-fh5-rdna3.ini
Normal file
@@ -0,0 +1,39 @@
|
||||
; OptiScaler.ini overrides for Forza Horizon 5 on RDNA 3 (Navi 32) under
|
||||
; Linux/Proton with FSR 4 INT8 enabled. Tested on OptiScaler 0.9.1.
|
||||
;
|
||||
; Keys not listed here fall through to OptiScaler's "auto" defaults
|
||||
; (Config.cpp: missing keys silently resolve to std::nullopt -> _defaultValue).
|
||||
;
|
||||
; Sources:
|
||||
; - https://github.com/optiscaler/OptiScaler/wiki/Forza-Horizon-5
|
||||
; - https://github.com/optiscaler/OptiScaler/wiki/FSR4-Compatibility-List
|
||||
;
|
||||
; Companion launch-option env vars (set via programs.steam.config in
|
||||
; hosts/yarn/default.nix):
|
||||
; PROTON_FSR4_UPGRADE=1
|
||||
; DXIL_SPIRV_CONFIG=wmma_rdna3_workaround (RDNA 3 INT8 visuals fix)
|
||||
; VKD3D_CONFIG=no_upload_hvv (vkd3d-proton stutter workaround)
|
||||
|
||||
[Inputs]
|
||||
; FSR2 inputs are buggy in FH5; OptiScaler 0.7.8+ auto-disables them per game
|
||||
; but explicit is safer across version bumps. Source: FH5 wiki ("Known Issues").
|
||||
EnableFsr2Inputs=false
|
||||
|
||||
[FSR]
|
||||
; DirectX 12 Agility SDK upgrade. Required for the FSR 4 path on RDNA 3 INT8
|
||||
; under Proton (the FFX SDK shipped with the game predates FSR 4). Source:
|
||||
; FSR4 Compatibility wiki, "Linux Setup" section.
|
||||
Fsr4Update=true
|
||||
|
||||
; FH5 wiki: 0.65 fixes flickering lights and reduces car ghosting with FSR-FG.
|
||||
DlssReactiveMaskBias=0.65
|
||||
|
||||
; FSR 4 on RDNA 3 IQ recommendation; mitigates white flashes and artifacting
|
||||
; from the INT8 emulation path. Source: FSR4 Compatibility wiki, "Image Quality".
|
||||
FsrNonLinearColorSpace=true
|
||||
|
||||
[Spoofing]
|
||||
; FH5 wiki recommendation. The auto default on AMD spoofs to NVIDIA, which
|
||||
; OptiScaler 0.9 deliberately drops for FH5; pinning false here makes the
|
||||
; behavior version-proof.
|
||||
Dxgi=false
|
||||
Reference in New Issue
Block a user