Installing Path of Exile 2 on Guix

2024-12-12
Forward links: related:Guix under:Blog Backward links:

Due to the region lock, I cannot play PoE2 Steam version directly. Below is how I managed to run the official website version with the nonguix containered Steam.

First we need to install the game. The manifest is simply

(use-modules (guix)
             (gnu packages)
             (gnu packages base))

(define-public poe2-locales
  (make-glibc-utf8-locales
   glibc
   #:locales (list "en_US" "ja_JP" "zh_CN" "zh_TW")
   #:name "poe2-locales"))

(concatenate-manifests
 (list
  (packages->manifest (list poe2-locales))
  (specifications->manifest
   '("coreutils"
     "wine64-staging"
     "winetricks"
     "sed"
     "gawk"
     "nss-certs"
     "grep"))))

Invoke it is as simple as

#!/usr/bin/env bash
set -ex

exec guix shell \
     --container --emulate-fhs \
     --network \
     --share=/dev/snd/seq \
     --preserve='^DISPLAY$' --preserve='^XAUTHORITY$' \
     --expose=$XAUTHORITY \
     --expose=/sys/class/input \
     --expose=/sys/devices \
     --expose=/sys/dev \
     --expose=/sys/bus/pci \
     --preserve='XDG_RUNTIME_DIR' \
     --expose="$XDG_RUNTIME_DIR/pulse" \
     --expose=/dev/dri \
     --share=$XDG_DATA_HOME/guix-sandbox-home=$HOME --no-cwd \
     -m manifest.scm

Note that I shared my guix-sandbox-home with it, because I'm using Steam's Proton Experimental to play it. Download the installer from the official website and put it under this directory.

Inside the container,

WINEARCH=win64 winecfg

To create prefix with 64-bit architecture (which is by default, but just in case). We don't have to change anything in the winecfg, and the window can be closed immediately.

According to (Lutris 2024) , we need riched20 and usp10 from winetricks. According to (PathOfExileWiki 2016), the former is "a library required for the launcher window to appear correctly", and the latter is "a library to fix Unicode symbols like the newlines not displaying correctly". I believe these libraries are only needed for the real launcher, so install them at any time you like, just before running the launcher (which start downloading things). Install them is as simple as winetricks <the-library-name>. Note that you can also put the libraries that winetricks is trying to download into the cache directory it was trying downloading to, if you happen to download them from other sources.

Then

wine PathOfExile2Installer.exe

It will pop up the installer, and if you click option it allows you to choose where to install the game. I'd recommend pick a directory path that contains no space and no parentheses. After that, it will unpack the game launcher into that path and probably start it.

The game launcher will start the actual downloading process after downloading a start-up chunk (around 20MB). That is around 80GB, but the CDN is really fast on my site.

A caveat I met is that if you restart the main executable again, it will somehow download things to the current directory, which is very likely not what you want. However, all downloaded stuff can be just moved into the actual game directory (or anywhere you want I believe), so It's not a big problem except re-download a little bit.

After the long-wait, the game downloading process finally finished. Don't launch the game immediately. As I said above, I recommend to use Steam's Proton Experimental to play the game.

Open Steam, and Click "Add a Game", "Add a Non-steam Game…" and choose the PoE2 shortcut to create a launch option.

The actual launch option is a little bit different though.

The last thing is, go to this launch option's "Compatibility" page, toggle on "Force the use of a specific Steam Play compatibility tool", and choose "Proton Experimental".

Reference

Lutris. 2024. “Installer Path-of-Exile-2-Standalone-W-Dxvk.” 2024. https://lutris.net/games/install/39016/view.
PathOfExileWiki. 2016. “Guide: Path of Exile on Wine.” 2016. https://www.poewiki.net/wiki/Guide:Path_of_Exile_on_Wine.