ROG Ally PowerShell Modules¶
Bootible uses a modular PowerShell architecture to configure your ROG Ally. Each module handles a specific aspect of the setup.
Module Overview¶
| Module | Depends On | Description |
|---|---|---|
| validate | - | Dry-run package validation |
| base | - | Hostname, network, winget setup |
| apps | base | Desktop applications |
| gaming | base | Game platforms & launchers |
| streaming | base | Game streaming clients |
| remote_access | base | VPN & remote desktop |
| ssh | base | SSH server configuration |
| emulation | base | EmuDeck setup |
| rog_ally | base | Device-specific tools |
| optimization | base, gaming | Gaming tweaks |
| debloat | all | Privacy & performance |
All modules are idempotent and safe to re-run.
Dependency Graph¶
graph TD
subgraph Foundation
H[helpers.ps1<br/>Pure functions]
R[Run.ps1<br/>Orchestrator]
end
subgraph Modules
V[validate<br/>Dry-run only]
B[base<br/>Foundation]
A[apps<br/>Desktop apps]
G[gaming<br/>Game platforms]
S[streaming<br/>Game streaming]
RA[remote_access<br/>VPN & RDP]
SSH[ssh<br/>SSH server]
E[emulation<br/>EmuDeck]
ROG[rog_ally<br/>Device-specific]
O[optimization<br/>Gaming tweaks]
D[debloat<br/>Privacy tweaks]
end
R --> H
R --> V
R --> B
B --> A
B --> G
B --> S
B --> RA
B --> SSH
B --> E
B --> ROG
A --> O
G --> O
A --> D
O --> D
style H fill:#e1f5fe
style B fill:#fff3e0
style D fill:#fce4ec Load Order¶
Modules execute in this fixed order:
1. helpers.ps1 # Library - always loaded first
2. validate # Dry-run only - package validation
3. base # Foundation - hostname, network, winget
4. apps # Desktop applications
5. gaming # Game platforms & launchers
6. streaming # Game streaming clients
7. remote_access # VPN & remote desktop
8. ssh # SSH server configuration
9. emulation # EmuDeck setup
10. rog_ally # Device-specific tools
11. optimization # Windows gaming tweaks
12. debloat # Privacy & performance tweaks
Why this order matters:
baseinitializes winget before any package installsappsinstalls PowerShell 7 whichsshanddebloatcan useoptimizationconfigures Steam settings (requires Steam fromgaming)debloatruns last to configure all installed applications
validate¶
Purpose: Pre-flight validation of all winget package IDs
Runs: Dry-run mode only
Validates that all package IDs in the configuration exist in winget sources. Reports which packages are available and which are missing.
Example Output:
Validating packages...
โ Discord.Discord
โ Spotify.Spotify
โ Invalid.PackageID - Not found in winget
base¶
Purpose: System foundation and prerequisites
Config Keys:
| Key | Type | Default | Description |
|---|---|---|---|
hostname | string | - | System hostname |
static_ip.enabled | bool | false | Enable static IP |
static_ip.interface | string | Ethernet | Network adapter |
static_ip.address | string | - | IP address |
static_ip.prefix_length | int | 24 | Subnet prefix |
static_ip.gateway | string | - | Default gateway |
static_ip.dns | list | - | DNS servers |
package_managers.chocolatey | bool | false | Install Chocolatey |
package_managers.scoop | bool | false | Install Scoop |
optimize_winget | bool | true | Optimize winget sources |
What It Does:
- Sets hostname if specified
- Configures static IP or DHCP
- Installs optional package managers (Chocolatey, Scoop)
- Optimizes winget source updates
- Installs essential utilities (7-Zip, Everything, PowerToys)
- Verifies Windows Terminal is installed
apps¶
Purpose: Desktop application installation
Master Key: install_apps (default: true)
Application Categories:
| Category | Config Keys |
|---|---|
| Utilities | install_7zip, install_everything, install_powertoys, install_pwsh |
| Communication | install_discord, install_signal |
| Media | install_vlc, install_spotify |
| Browsers | install_firefox, install_chrome, install_edge |
| Productivity | install_obs, install_vscode |
| VPN | install_tailscale, install_protonvpn |
| Password Managers | password_managers: list of 1password, bitwarden, keepassxc |
| Development | install_git, install_python, install_nodejs, install_java |
| System Utilities | install_revo, install_ccleaner, install_wiztree |
| Runtimes | install_dotnet, install_vcredist, install_directx |
Example:
install_apps: true
install_discord: true
install_spotify: true
password_managers:
- "1password"
install_pwsh: true # PowerShell 7
gaming¶
Purpose: Gaming platforms and utilities
Master Key: install_gaming (default: true)
Platforms:
| Key | Package |
|---|---|
install_steam | Valve.Steam |
install_gog_galaxy | GOG.Galaxy |
install_epic_games | EpicGames.EpicGamesLauncher |
install_ea_app | ElectronicArts.EADesktop |
install_ubisoft | Ubisoft.Connect |
install_amazon_games | Amazon.Games |
install_battlenet | (special handling) |
install_playnite | Playnite.Playnite |
install_ds4windows | Ryochan7.DS4Windows |
install_vortex | NexusMods.Vortex |
Battle.net Note:
Battle.net uses a non-standard installer. Bootible downloads and launches it; you complete installation manually.
streaming¶
Purpose: Game streaming clients
Master Key: install_streaming (default: true)
| Key | Package | Use Case |
|---|---|---|
install_moonlight | MoonlightGameStreamingProject.Moonlight | NVIDIA GameStream |
install_parsec | Parsec.Parsec | Low-latency streaming |
install_chiaki | streetpea.Chiaki4deck | PlayStation Remote Play |
install_steam_link | Valve.SteamLink | Steam streaming |
install_sunshine | LizardByte.Sunshine | Moonlight host |
install_geforcenow | (manual) | Cloud gaming |
remote_access¶
Purpose: VPN and remote desktop tools
Master Key: install_remote_access (default: true)
| Key | Package | Description |
|---|---|---|
install_tailscale | tailscale.tailscale | Mesh VPN |
install_anydesk | AnyDesk.AnyDesk | Remote desktop |
install_rustdesk | RustDesk.RustDesk | Open-source remote desktop |
enable_rdp | - | Windows Remote Desktop |
RDP Configuration:
When enable_rdp: true, Bootible:
- Enables Remote Desktop in registry
- Adds firewall rule
- Enables Network Level Authentication
ssh¶
Purpose: Windows OpenSSH server configuration
Master Key: install_ssh (default: true)
| Key | Type | Default | Description |
|---|---|---|---|
ssh_server_enable | bool | true | Enable SSH server |
ssh_import_authorized_keys | bool | false | Import keys from private repo |
ssh_authorized_keys | list | [] | Key files to import |
What It Does:
- Installs OpenSSH Client/Server Windows capability
- Sets sshd service to automatic start
- Imports authorized keys from
private/ssh-keys/ - Configures PSRemoting over SSH (if PowerShell 7 installed)
- Creates firewall rules for SSH and ICMP
Key Import:
Keys are read from private/ssh-keys/ and written to C:\ProgramData\ssh\administrators_authorized_keys.
emulation¶
Purpose: EmuDeck installation
Master Key: install_emulation (default: false)
What It Does:
- Checks for existing EmuDeck installation
- Uses EA (Patreon) installer from private repo if available
- Falls back to public installer
- Places shortcut for manual completion
Patreon Version:
rog_ally¶
Purpose: ASUS ROG Ally-specific tools
Master Key: install_rog_ally (default: true)
| Key | Package | Description |
|---|---|---|
install_handheld_companion | - | Alternative controller mapper |
install_rtss | Guru3D.RTSS | Frame limiter & OSD |
install_hwinfo | REALiX.HWiNFO | Hardware monitoring |
install_cpuz | CPUID.CPU-Z | CPU information |
install_gpuz | TechPowerUp.GPU-Z | GPU information |
install_afterburner | Guru3D.Afterburner | GPU overclocking |
Armoury Crate:
Bootible verifies Armoury Crate is present (usually pre-installed) but doesn't modify it.
optimization¶
Purpose: Windows gaming optimizations
Master Key: install_optimization (default: true)
| Key | Type | Default | Description |
|---|---|---|---|
enable_game_mode | bool | true | Windows Game Mode |
enable_hardware_gpu_scheduling | bool | true | HAGS |
disable_game_dvr | bool | true | Disable Game DVR |
disable_xbox_gamebar | bool | false | Disable Game Bar |
disable_core_isolation | bool | false | Security trade-off |
disable_vbs | bool | false | VBS setting |
disable_vari_bright | bool | false | AMD brightness |
configure_steam_autostart | bool | false | Auto-start Steam |
steam_big_picture_mode | bool | false | Big Picture on start |
steam_guide_button | bool | true | Use guide button |
Security Trade-offs:
Core Isolation & VBS
Disabling Core Isolation or VBS can improve gaming performance but reduces security. Only disable if you understand the implications.
debloat¶
Purpose: Privacy and performance tweaks
Master Key: install_debloat (default: true)
Privacy Settings¶
| Key | Default | Description |
|---|---|---|
disable_telemetry | true | Windows telemetry |
disable_activity_history | true | Activity tracking |
disable_location_tracking | false | Location services |
disable_copilot | true | Windows Copilot |
UI Settings¶
| Key | Default | Description |
|---|---|---|
classic_right_click_menu | true | Windows 10 context menu |
show_file_extensions | true | Show extensions |
disable_lock_screen_ads | true | Lock screen suggestions |
disable_bing_search | true | Bing in Start menu |
Edge Debloating¶
| Key | Default | Description |
|---|---|---|
disable_edge_sidebar | true | Edge sidebar |
disable_edge_shopping | true | Shopping features |
Network¶
| Key | Default | Description |
|---|---|---|
prefer_ipv4 | true | IPv4 over IPv6 |
disable_teredo | true | Teredo tunneling |
Personalization¶
| Key | Description |
|---|---|
wallpaper_path | Custom wallpaper image |
lockscreen_path | Custom lock screen |
Image Paths:
Reference images from your private repo:
Images are copied from private/device/rog-ally/<device>/Images/.
Selective Module Execution¶
Run Specific Modules¶
# Only base and apps
.\Run.ps1 -Tags base,apps
# Only gaming-related
.\Run.ps1 -Tags gaming,streaming,emulation
# Dry run specific modules
.\Run.ps1 -Tags optimization,debloat -DryRun
Skip Modules¶
Dependencies Not Auto-Included¶
Running -Tags apps without base may fail if winget sources aren't initialized. Include dependencies manually.
Disabling Modules¶
Disable modules via configuration:
install_apps: false
install_gaming: false
install_streaming: false
install_remote_access: false
install_ssh: false
install_emulation: false
install_rog_ally: false
install_optimization: false
install_debloat: false
Re-run Behavior¶
Always Safe¶
- Package installs (winget skips installed)
- Registry settings (same value = no change)
- Service configuration (checks state first)
- Firewall rules (checks existing rules)
Minor Effects on Re-run¶
- Wallpaper/lock screen: Re-copies images
- Desktop shortcuts: Re-cleans desktop
- UCPD scheduled task: Re-creates task
Checks Before Acting¶
- Hostname: Only changes if different
- Static IP: Only if not configured
- EmuDeck: Only if not detected
- OpenSSH: Only if capability not present
Troubleshooting¶
Module Didn't Run¶
- Check if enabled:
install_<module>: true - Check
-Tagsincludes module - Review transcript log for skip messages
Package Install Failed¶
- Run dry-run to validate:
.\Run.ps1 -DryRun - Check winget:
winget source list - Reset:
winget source reset --force
Registry Changes Not Applied¶
- Some HKCU keys need non-elevated context
debloatcreates scheduled task for UCPD keys- Log out/in to apply scheduled changes
SSH Not Working¶
- Check service:
Get-Service sshd - Check firewall:
Get-NetFirewallRule -DisplayName "*SSH*" - Check keys:
C:\ProgramData\ssh\administrators_authorized_keys