dot

NixOS dotfiles
git clone https://git.echoz.io/dot.git
Log | Files | Refs

gta-iv.nix (1852B)


      1 {
      2   lib,
      3   fetchzip,
      4   p7zip,
      5   runCommand,
      6   symlinkJoin,
      7   unrar-free,
      8   writeShellApplication,
      9   writeText,
     10 }:
     11 let
     12   fusion-fix = fetchzip {
     13     url = "https://github.com/ThirteenAG/GTAIV.EFLC.FusionFix/releases/download/v4.0.5/GTAIV.EFLC.FusionFix.zip";
     14     hash = "sha256-bi6/TteAsIciihzDHbhMt4+RrO1N0Dydd7ZI44xloUM=";
     15     stripRoot = false;
     16   };
     17 
     18   radio-restorer-release = fetchzip {
     19     url = "https://github.com/Tomasak/GTA-Downgraders/releases/download/iv-latest/Radio.Restoration.Mod.23-05-2025.rar";
     20     hash = "sha256-PpXXootagsYdFMR1EOoRS0PPijNlV6IJeFg1Ae5GLXs=";
     21     nativeBuildInputs = [ unrar-free ];
     22     stripRoot = false;
     23   };
     24 
     25   radio-restorer =
     26     runCommand "radio-restorer"
     27       {
     28         buildInputs = [ p7zip ];
     29       }
     30       ''
     31         mkdir $out && pushd $out
     32         7z x ${lib.escapeShellArg radio-restorer-release}/"Resources/Radio Restorer/data1.dat" -y
     33         7z x ${lib.escapeShellArg radio-restorer-release}/"Resources/Radio Restorer/opVANILLA.dat" -y
     34         7z x ${lib.escapeShellArg radio-restorer-release}/"Resources/Radio Restorer/opSPLITbase.dat" -y
     35         7z x ${lib.escapeShellArg radio-restorer-release}/"Resources/Radio Restorer/opSPLITVANILLA.dat" -y
     36       '';
     37 
     38   mods = symlinkJoin {
     39     name = "gta-iv-mods";
     40     paths = [
     41       fusion-fix
     42       radio-restorer
     43     ];
     44   };
     45 
     46   help = writeText "gta-iv-mods-info" ''
     47     Remember to add to launch options:
     48 
     49     WINEDLLOVERRIDES="dinput8=n,b" %command%
     50   '';
     51 in
     52 writeShellApplication {
     53   name = "install-mods-gta-iv";
     54   runtimeInputs = [
     55     p7zip
     56   ];
     57   text = ''
     58     out="''${1:-}"
     59     if [ -z "$out" ]; then
     60       out="$HOME/.var/app/com.valvesoftware.Steam/data/Steam/steamapps/common/Grand Theft Auto IV/GTAIV"
     61       printf "Defaulting to: %s\n" "$out" >&2
     62     fi
     63     pushd "$out"
     64     cp -vriL --no-preserve=mode ${mods}/. .
     65     cat ${help}
     66   '';
     67 }