feat: add offline install script#937
Conversation
Closes SteamDeckHomebrew#924 — provides a self-contained install_offline.sh that deploys a pre-downloaded PluginLoader binary without needing network access. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Resolve binary path to absolute before sudo re-exec - Defer service stop until after binary copy succeeds (prevents leaving Decky stopped on disk-full failures) - Quote ExecStart/WorkingDirectory in systemd heredoc for paths with spaces - Add sync comment referencing plugin_loader-release.service Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
Thanks for Implementing the offline installer. |
|
Thanks for testing , I will look into it . |
Systemd interprets quotes literally in unit file directives, causing "path is not a directory" errors on service start. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
@Sakurainy Good catch — the issue was that Just pushed a fix (4f281cb). If you get a chance to retest on your ROG Ally, that would be great — the script should now work on BazziteOS too since the home directory detection was already generic ( |
- Replace $UID (bashism) with $(id -u) for dash/ash compatibility - Fix privilege escalation: keep binary root-owned instead of chown -R - Validate USER_DIR is non-empty and exists before proceeding - Always attempt path resolution regardless of file existence check - Add rollback trap to restart service if install fails mid-way - Validate binary is ELF before installing (rejects zips/tarballs) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Summary
dist/install_offline.sh— a self-contained offline installer for users with limited internet accessCloses #924
Usage
User downloads the
PluginLoaderbinary from releases (via mirror, VPN, or patience), transfers it to the Steam Deck, and runs the script. No network required.What the script does
$SUDO_USER~/homebrew/{services,plugins,settings}directory structureplugin_loader.serviceTest plan
dist/uninstall.shstill works after offline install🤖 Generated with Claude Code