Skip to content

Instantly share code, notes, and snippets.

@Lucus16
Created September 3, 2025 15:37
Show Gist options
  • Select an option

  • Save Lucus16/0e2baa6c2d97bf1578e4dc5865ee2dfb to your computer and use it in GitHub Desktop.

Select an option

Save Lucus16/0e2baa6c2d97bf1578e4dc5865ee2dfb to your computer and use it in GitHub Desktop.
Heroes of the Storm on linux
# Instructions:
# 1. Put this file in a new directory.
# 2. nix-shell
# 3. Download the battle.net installer from the website.
# 4. wine installer.exe
# 5. Install battle.net and then Heroes of the Storm, then shut it down.
# 6. While in the nix-shell, run fixdlls
# 7. Run hots in the nix-shell to start
{ pkgs ? import <nixpkgs> { } }:
let
# Yes, 32 and 64 bit are reversed because Windows~~
fixdlls = pkgs.writeShellScriptBin "fixdlls" ''
set -euxo pipefail
if [ -e "$WINEPREFIX/drive_c/Program Files (x86)/Heroes of the Storm/Support64" ]; then
cp "$WINEPREFIX/drive_c/Program Files (x86)/Heroes of the Storm/Support64/"*.dll "$WINEPREFIX/drive_c/windows/system32/"
fi
cp ${pkgs.dxvk.bin}/x32/*.dll "$WINEPREFIX/drive_c/windows/syswow64/"
cp ${pkgs.dxvk.bin}/x64/*.dll "$WINEPREFIX/drive_c/windows/system32/"
for dll in $(ls ${pkgs.dxvk.bin}/x32); do
wine reg add 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v "$(basename "$dll" .dll)" /d native /f
done
'';
hots = pkgs.writeShellScriptBin "hots" ''
wine "$WINEPREFIX/drive_c/Program Files (x86)/Battle.net/Battle.net.exe" --exec="launch Hero"
'';
in pkgs.mkShell {
buildInputs = with pkgs; [
fixdlls
hots
wineWowPackages.stagingFull
];
WINEPREFIX = toString ./wine;
DXVK_STATE_CACHE_PATH = toString ./wine;
STAGING_SHARED_MEMORY = true;
__GL_SHADER_DISK_CACHE = true;
__GL_SHADER_DISK_CACHE_PATH = toString ./wine;
__GL_SHADER_DISK_CACHE_SKIP_CLEANUP = true;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment