steam-config-nix: move to my fork and drop gameMods
This commit is contained in:
@@ -16,7 +16,6 @@
|
||||
./lact.nix
|
||||
./vr.nix
|
||||
./forza-trigger
|
||||
../../modules/desktop-game-mods.nix
|
||||
|
||||
inputs.impermanence.nixosModules.impermanence
|
||||
];
|
||||
@@ -83,62 +82,81 @@
|
||||
# PS5 DualSense adaptive triggers in Forza Horizon 4 / 5.
|
||||
services.forzaTrigger.enable = true;
|
||||
|
||||
# Declarative game-file mods on top of Steam (file drops only; Steam launch
|
||||
# options live in `programs.steam.config.apps` below).
|
||||
# Steam per-app declarative config via steam-config-nix:
|
||||
# - launch-option env vars (PROTON_FSR4_UPGRADE et al)
|
||||
# - file drops into the install dir (FH5 intro stubs, OptiScaler DLLs +
|
||||
# hand-written FH5/RDNA3 INI). Backups land next to replaced files with
|
||||
# a `.steam-config-nix-backup` suffix on first apply.
|
||||
#
|
||||
# fh5-no-intro: stub the 40 MB T10/Microsoft Studios cold-start splash.
|
||||
# Two copies live in the install (SD + hires); engine picks one based on
|
||||
# the installed asset profile, so stub both. PCGamingWiki documents both
|
||||
# paths under "Skip intro video".
|
||||
# The patcher runs as a system oneshot at activation; closeSteam = true
|
||||
# ensures Steam is shut down before the localconfig.vdf write so Steam
|
||||
# can't clobber it on next exit. File drops happen in the same run but
|
||||
# don't share that concern \u2014 they only touch steamapps/common/<dir>
|
||||
# and steamapps/compatdata/<id>/pfx.
|
||||
#
|
||||
# fh5-optiscaler: drop OptiScaler v0.9.1 + a hand-written FH5/RDNA3 INI into
|
||||
# the install dir to enable FSR 4 INT8 on this Navi 32 box. OptiScaler
|
||||
# intercepts FH5's DLSS/XeSS calls and reroutes them through the bundled
|
||||
# FFX SDK. Override values + sources live in
|
||||
# ./optiscaler-fh5-rdna3.ini; keys not listed there fall through to
|
||||
# OptiScaler's "auto" defaults.
|
||||
# OptiScaler intercepts FH5's DLSS/XeSS calls and reroutes them through
|
||||
# the bundled FFX SDK. Override values + sources for the FH5/RDNA3 path
|
||||
# live in ./optiscaler-fh5-rdna3.ini; keys not listed there fall through
|
||||
# to OptiScaler's "auto" defaults.
|
||||
#
|
||||
# Required one-time per-game setup the user has to do in Steam (the
|
||||
# in-game upscaler picker has no public API):
|
||||
# - In-game: switch the Upscaling option from FSR 2.2 to DLSS or XeSS
|
||||
# (FSR 2 inputs aren't intercepted). Press Insert to open the Opti
|
||||
# overlay and set the FFX upscaler to FSR 4.
|
||||
# Required one-time per-game setup the user has to do in Steam (no API):
|
||||
# - Properties > Compatibility: pick the GE-Proton tool by hand. The
|
||||
# `compatTool` option is intentionally unset \u2014 nixpkgs registers
|
||||
# proton-ge-bin under its versioned id (e.g. GE-Proton10-34), and
|
||||
# writing the generic "GE-Proton" string silently falls back to
|
||||
# bundled Proton.
|
||||
# - In-game: switch the Upscaling option from FSR 2.2 to DLSS or XeSS
|
||||
# (FSR 2 inputs aren't intercepted). Press Insert to open the Opti
|
||||
# overlay and set the FFX upscaler to FSR 4.
|
||||
#
|
||||
# Caveats:
|
||||
# - OptiScaler.ini is dropped with mode = "init" so in-game overlay edits
|
||||
# persist. The hand-written template is only written on first apply (or
|
||||
# after manual deletion). To push a new default into an existing
|
||||
# install: rm OptiScaler.ini in the FH5 dir, then `systemctl start
|
||||
# game-mods`. The DLLs and other static assets stay mode = "create" so
|
||||
# they're updated on every OptiScaler version bump.
|
||||
# - OptiScaler's installation page warns against use with online games.
|
||||
# FH5 has no kernel-mode anti-cheat but Playground does server-side
|
||||
# telemetry. Use at your own risk.
|
||||
services.gameMods =
|
||||
# OptiScaler.ini is dropped with mode = "init" so in-game overlay edits
|
||||
# persist; the hand-written template is only written on first apply (or
|
||||
# after manual deletion). To push a new default into an existing install:
|
||||
# `rm OptiScaler.ini` in the FH5 dir, then trigger a redeploy. The DLLs
|
||||
# and other static assets stay mode = "create" so they're updated on
|
||||
# every OptiScaler version bump.
|
||||
#
|
||||
# OptiScaler's installation page warns against use with online games.
|
||||
# FH5 has no kernel-mode anti-cheat but Playground does server-side
|
||||
# telemetry. Use at your own risk.
|
||||
programs.steam.config =
|
||||
let
|
||||
optiPkg = pkgs.optiscaler;
|
||||
fromOpti = relpath: {
|
||||
source = "${optiPkg}/${relpath}";
|
||||
source = "${pkgs.optiscaler}/${relpath}";
|
||||
mode = "create";
|
||||
};
|
||||
in
|
||||
{
|
||||
enable = true;
|
||||
mods."fh5-no-intro" = {
|
||||
steamAppId = 1551360;
|
||||
files."media/UI/Videos/T10_MS_Combined.bk2".empty = true;
|
||||
files."media/UI/Videos/hires/T10_MS_Combined.bk2".empty = true;
|
||||
};
|
||||
mods."fh5-optiscaler" = {
|
||||
steamAppId = 1551360;
|
||||
closeSteam = true;
|
||||
apps."fh5" = {
|
||||
id = 1551360;
|
||||
launchOptions.env = {
|
||||
# OptiScaler FSR 4 INT8 path on this RDNA 3 (Navi 32) box.
|
||||
# PROTON_FSR4_UPGRADE opts FH5 into Proton's FSR 4 DLL upgrade;
|
||||
# DXIL_SPIRV_CONFIG fixes the broken visuals the wmma RDNA3
|
||||
# emulation path otherwise produces. Source: OptiScaler FSR4 wiki
|
||||
# Linux Setup.
|
||||
PROTON_FSR4_UPGRADE = "1";
|
||||
DXIL_SPIRV_CONFIG = "wmma_rdna3_workaround";
|
||||
# vkd3d-proton stutter/crash workaround on this box; remove when a
|
||||
# future Proton release fixes the upload-hvv path upstream.
|
||||
VKD3D_CONFIG = "no_upload_hvv";
|
||||
};
|
||||
files = {
|
||||
# FH5 cold-start splash. Two copies live in the install (SD +
|
||||
# hires); the engine picks one based on the installed asset
|
||||
# profile, so stub both. PCGamingWiki documents both paths under
|
||||
# "Skip intro video".
|
||||
"media/UI/Videos/T10_MS_Combined.bk2".empty = true;
|
||||
"media/UI/Videos/hires/T10_MS_Combined.bk2".empty = true;
|
||||
|
||||
# OptiScaler.dll is renamed to dxgi.dll so FH5's DLL search order
|
||||
# picks it up as the dxgi shim per the OptiScaler FH5 wiki page.
|
||||
"dxgi.dll" = fromOpti "OptiScaler.dll";
|
||||
|
||||
"OptiScaler.ini" = {
|
||||
source = ./optiscaler-fh5-rdna3.ini;
|
||||
# init: drop the template once, then leave it alone so the in-game
|
||||
# overlay can persist user tweaks.
|
||||
mode = "init";
|
||||
};
|
||||
}
|
||||
@@ -158,33 +176,4 @@
|
||||
] fromOpti;
|
||||
};
|
||||
};
|
||||
|
||||
# Steam launch options via steam-config-nix (different-name/steam-config-
|
||||
# nix). The patcher runs as a system oneshot at activation; closeSteam =
|
||||
# true ensures Steam is shut down before the localconfig.vdf write so Steam
|
||||
# can't clobber it on its next exit.
|
||||
#
|
||||
# No declarative compat-tool pin: nixpkgs' proton-ge-bin registers under
|
||||
# its versioned tool id (e.g. GE-Proton10-34), not the generic "GE-Proton"
|
||||
# string steam-config-nix's README assumes, so writing the latter resolved
|
||||
# to no installed tool and silently fell back to bundled Proton. Pick the
|
||||
# tool in Steam UI > Properties > Compatibility instead.
|
||||
programs.steam.config = {
|
||||
enable = true;
|
||||
closeSteam = true;
|
||||
apps."fh5" = {
|
||||
id = 1551360;
|
||||
launchOptions.env = {
|
||||
# OptiScaler FSR 4 INT8 path on this RDNA 3 (Navi 32) box.
|
||||
# PROTON_FSR4_UPGRADE opts FH5 into Proton's FSR 4 DLL upgrade;
|
||||
# DXIL_SPIRV_CONFIG fixes the broken visuals the wmma RDNA3 emulation
|
||||
# path otherwise produces. Source: OptiScaler FSR4 wiki Linux Setup.
|
||||
PROTON_FSR4_UPGRADE = "1";
|
||||
DXIL_SPIRV_CONFIG = "wmma_rdna3_workaround";
|
||||
# vkd3d-proton stutter/crash workaround on this box; remove when a
|
||||
# future Proton release fixes the upload-hvv path upstream.
|
||||
VKD3D_CONFIG = "no_upload_hvv";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user