Want to quickly test your Godot builds on a Steam Deck without copying files over USB or fiddling with SSH? Here’s a simple CIFS/Windows share setup that lets you export directly to your Deck over LAN.
TL;DR:
On Windows, run the PowerShell script to create user/share
On Steam Deck (Desktop Mode) install cifs-utils, creategodot-share, and mount with:
sudo mount -t cifs //<windows ip>/GodotDeploy /home/deck/godot-share \
-o username=SteamDeck,password=steamdeck123,uid=1000,gid=1000
Result: export straight from Godot to your Steam Deck over LAN — no USB sticks, no SSH hassle ![]()
Disclaimer
The steps below disable SteamOS read-only mode temporarily and (in the quick setup) store your password in plain text. Do this only if you know the risks. Adjust usernames/paths, and for security use a credentials file.
Prerequisites
- Set deck user password if you havent: passwd
- SteamOS in Desktop Mode
Simple Windows Share Setup for SteamDeck
adjust to your needs, launch powershell in admin mode and paste the script.
# Configuration variables - adjust these to your needs
$username = "SteamDeck" # Username for SteamDeck to connect with
$password = "steamdeck123" # Password (change to something more secure)
$sharePath = "C:\Godot\Deploy" # Local folder to share
$shareName = "GodotDeploy" # Network share name
# Create the shared folder if it doesn't exist
if (!(Test-Path $sharePath)) { New-Item -ItemType Directory -Path $sharePath -Force }
# Create the SteamDeck user account with password
try {
$securePassword = ConvertTo-SecureString $password -AsPlainText -Force
New-LocalUser -Name $username -Password $securePassword -PasswordNeverExpires
} catch {} # Silently continue if user already exists
# Remove any existing share with the same name
Remove-SmbShare -Name $shareName -Force -ErrorAction SilentlyContinue
# Create the SMB network share with full access permissions
New-SmbShare -Name $shareName -Path $sharePath -FullAccess $username,"Everyone"
# Enable Windows firewall rules for file and printer sharing
netsh advfirewall firewall set rule group="File and Printer Sharing" new enable=Yes
# Enable Windows firewall rules for network discovery (helps with finding the PC)
netsh advfirewall firewall set rule group="Network Discovery" new enable=Yes
Steam Deck (SteamOS) Setup - One-time prep
Disable read-only filesystem
# Disable read-only filesystem to allow package installation
sudo steamos-readonly disable
(Optional) Fix package manager if needed
# Clear corrupted package cache AND sync database
sudo rm -rf /var/cache/pacman/pkg/*
sudo rm -rf /var/lib/pacman/sync/*
# Initialize package manager cryptographic keys (takes several minutes)
sudo pacman-key --init
sudo pacman-key --populate archlinux
sudo pacman-key --refresh-keys # This will take some time.
# Refresh package database
sudo pacman -Syy
Install cifs-utils (manual download worked for me)
# Manual download of cifs-utils package (if standard install fails)
wget https://archlinux.org/packages/extra/x86_64/cifs-utils/download/ -O cifs-utils.pkg.tar.zst
# Install the downloaded package manually
sudo pacman -U cifs-utils.pkg.tar.zst
Re-enable read-only
# Re-enable read-only filesystem protection
sudo steamos-readonly enable
Mount the share
# Make sharefolder on steamdeck
sudo mkdir -p /home/deck/godot-share
# mount the share
sudo mount -t cifs //<your windows ip>/GodotDeploy /home/deck/godot-share \ -o username=SteamDeck,password=steamdeck123,uid=1000,gid=1000,iocharset=utf8
Now /home/deck/godot-shareshould be accessible.
Make Permanent (Optional)
# Edit fstab
sudo nano /etc/fstab
# Add line:
[//<your windows ip>/GodotDeploy /home/deck/godot-share cifs username=SteamDeck,password=st](//192.168.2.3/GodotDeploy)
# Add line:
//<your windows ip>/GodotDeploy /home/deck/godot-share cifs username=SteamDeck,password=steamdeck123,uid=1000,gid=1000,iocharset=utf8 0 0
After deploying.. “Add a Non-Steam Game to My Library” - Pick your executable, ready to rumble.
That’s it!
With this setup you can export straight from Godot to your Steam Deck, launch it as a Non-Steam game, and test instantly, no USB drives, no SSH, just smooth iteration. ![]()
-Robert

