-
-
Notifications
You must be signed in to change notification settings - Fork 346
Installing CKAN on Steam Deck
The Steam Deck's operating system features an immutable root filesystem, meaning Mono can't be installed. To get around this, we can use Distrobox to create a container in which we can install Mono and CKAN. We can also use Lutris to run it with Wine.
Open Konsole in desktop mode and run the following two commands:
curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sh -s -- --prefix ~/.local
curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/extras/install-podman | sh -s -- --prefix ~/.local
This will install Distrobox, as well as Podman, the container software that Distrobox is built on.
Then, open your /home/deck/.bashrc
file in a text editor such as KWrite and add the following lines at the end:
xhost +si:localuser:$USER
export PATH=$HOME/.local/bin:$PATH
export PATH=$HOME/.local/podman/bin:$PATH
The first line grants applications on Distrobox the required permissions to connect to the X server (and therefore open graphical windows). The last two lines add Distrobox and Podman to the PATH variable so we can actually run them.
In a new Konsole window, run distrobox create -i archlinux
. When asked if you want to pull the image, press enter at the Y/n prompt and select the top option. This will create a new container running Arch Linux, which we can install Mono into without requiring write access to the Deck's root filesystem.
Enter your new container with distrobox enter archlinux
.
In the container, run sudo pacman -S mono
to install Mono. Press enter at any y/n prompts. This will instalk Mono into the container.
Download the latest ckan.exe from GitHub Releases. Inside the container, run mono path/to/ckan.exe
(replacing path/to/ckan.exe
with the actual location of the file; this will usually be Downloads/ckan.exe
if you just downloaded it). CKAN should open, and KSP should be auto-detected if it has been installed via Steam.
To run CKAN from outside the container, you can use distrobox enter archlinux -- mono path/to/ckan.exe
.
To make it easier to launch CKAN, create a new text file called ckan.sh in the same folder as ckan.exe with the following contents:
#!/usr/bin/env sh
export PATH=/home/deck/.local/bin:$PATH # Import distrobox utilities
export PATH=/home/deck/.local/podman/bin:$PATH # Import distrobox utilities
xhost +si:localuser:$USER # To allow distrobox to open graphical applications
# rm -rf "/home/deck/.local/share/steam/steamapps/Kerbal Space Program/CKAN/registry.locked"
distrobox enter archlinux -- mono ckan.exe # Run the CKAN application
Set this file as executable in its properties (right click), and open it to run CKAN. You can also add this file to Steam as a non-Steam game to access CKAN from Gaming Mode.
Right click on ckan.sh and select Add to Steam
to add CKAN as a non-Steam game. Edit ckan.sh and remove the #
at the start of the rm -rf
line; we need to remove the lock file as Steam force-quits applications when you exit them in gaming mode. If your KSP install is not in the default Steam location you will need to change the file path here appropriately.
However, there are some graphical issues in gaming mode, so you may want to stick to running CKAN in desktop mode. You may want to create a .desktop file on your desktop that runs your ckan.sh file.
It's a good idea to keep the packages in your container up to date; you can do this with distrobox enter archlinux -- sudo pacman -Syu
.
Install Lutris via Discover. See Lutris downloads page for more info.
Download the latest ckan.exe from GitHub Releases. In Lutris, add a new windows game and select the CKAN exe. You will need to add dotnet45 to the wine prefix via Winetricks. Copy the ckan exe into the new "game" drive_c and set CKAN's Lutris config to point to the same file.
When selecting a new instance and you get to Z:\home\deck, you'll need to type .local
to continue on to Z:\home\deck\.local\share\Steam\steamapps\common\Kerbal Space Program
or wherever you have KSP installed.
Contact us on the KSP forum or on our Discord server