12 KiB
Docker Build Environment Plan for VitaSDK (PS Vita)
Status: Planning / Research
Last Updated: 2026-01-27
Overview
PS Vita homebrew development uses VitaSDK, a completely separate toolchain from devkitPro. This requires a different container approach but follows similar principles: extend official base images and install all available packages for a complete development environment.
Key Differences from devkitPro:
- Separate ecosystem with its own toolchain (vita-toolchain)
- Different package manager:
vdpm(shell-based) instead ofdkp-pacman - Different build system: CMake with Vita-specific macros
- Official Docker images:
vitasdk/vitasdk(not on devkitPro organization) - Output formats: SELF (executable), VPK (installable package archive)
PS Vita Platform Capabilities
Hardware Features
- Networking: ✅ Built-in Wi-Fi (802.11 b/g/n)
- Optional 3G modem (discontinued in 2013, limited availability)
- Bluetooth 2.1+EDR
- Screenshots: ✅ Native system-level screenshot capability
- Cameras: ✅ Dual 0.3MP cameras (front and back)
- VGA resolution (640×480 @ 60fps)
- Can capture photos and videos
- Display: 5-inch OLED touchscreen (original) or LCD (slim)
- CPU: Quad-core ARM Cortex-A9 MPCore
- GPU: Quad-core PowerVR SGX543MP4+
- RAM: 512 MB system RAM, 128 MB VRAM
Project Fit Assessment
✅ Networking: Yes - Wi-Fi built-in, suitable for Nextcloud uploads
✅ Screenshots: Yes - native system capability for game captures
✅ Cameras: Yes - can take photos with built-in cameras
✅ Homebrew Scene: Active community with VitaSDK
✅ Container Support: Official Docker images available
Priority: HIGH - Meets all requirements (networking + screenshots + cameras)
VitaSDK Ecosystem
Official Resources
- Website: https://vitasdk.org/
- GitHub Organization: https://github.com/vitasdk (15 repositories)
- Docker Repository: https://github.com/vitasdk/docker
- Package Repository: https://github.com/vitasdk/packages (updated frequently)
- Samples Repository: https://github.com/vitasdk/samples (335 stars)
- Documentation: https://docs.vitasdk.org/
Toolchain Components
- vita-toolchain: ARM-based cross-compiler (MIT license)
- newlib: PS Vita port of C library (GPL-2.0)
- vita-headers: System headers (233 stars, 94 forks)
- buildscripts: CMake-based build system (65 stars)
- taihen: Plugin framework
- libvita2d: 2D graphics library
Package Management
- Tool: vdpm (Vita SDK Package Manager)
- Type: Shell-based installer scripts
- Repository: https://github.com/vitasdk/packages
- Installation: Bootstrap with
./install-all.shfrom vdpm repo - Build Format: vita-makepkg (similar to Arch Linux makepkg)
Build System
- Primary: CMake with Vita-specific macros
vita_create_self()- Creates SELF executablevita_create_vpk()- Creates VPK package
- Output Formats:
- SELF: Signed ELF executable format
- VPK: Installable package archive (SELF + data + metadata)
Official Docker Images
Available on Docker Hub
# Search results show multiple official images
docker.io/vitasdk/vitasdk # Main official image
docker.io/vitasdk/vitasdk-softfp # Soft float variant
docker.io/vitasdk/buildscripts # Build tools base image
Base Image Structure
From github.com/vitasdk/docker:
Main Dockerfile:
- Base:
vitasdk/buildscripts:latest - Installs: git, curl, bash, make, pkgconf, cmake, sudo
- Uses multi-stage build to clone and install vdpm
- Installs all packages via
vdpm/install-all.sh - Environment:
VITASDK=/usr/local/vitasdk
Non-root Dockerfile:
- Same base, but creates unprivileged user
- Adds sudo access for package installation
- Better for local development (matches host UID)
Container Strategy
Approach
Unlike devkitPro platforms, VitaSDK already provides comprehensive official images with all packages pre-installed. Our strategy should be:
Option 1: Use Official Images Directly (Recommended)
- Use
vitasdk/vitasdk:latestas-is - No custom Dockerfile needed
- Pull official image when needed
- Simplest approach, maintained by VitaSDK team
Option 2: Extend Official Images (If customization needed)
- Base:
FROM vitasdk/vitasdk:latest - Add project-specific tools or scripts
- Pin to specific tag for reproducibility
- Only if we need additional packages
Tagging Strategy
If we publish custom images:
- Format:
tomusan/vitasdk-vita:<date>ortomusan/vitasdk-vita:<date>-v<semver> - Example:
tomusan/vitasdk-vita:20251231ortomusan/vitasdk-vita:20251231-v1.0.0 - Follow same conventions as devkitPro containers
Package Ecosystem Research
Known Libraries (from vdpm)
- zlib: Compression library
- freetype: Font rendering
- libvita2d: 2D graphics library (Vita-specific)
- taihen: Plugin framework (Vita-specific)
Additional Research Needed
- Query vdpm package list for available networking libraries
- Check for curl, libcurl support
- Verify SSL/TLS libraries (mbedtls, openssl, etc.)
- Check for image format libraries (PNG, JPEG)
- Verify XML/JSON parsing libraries
- Document complete package list similar to devkitPro research
How to Query Packages
# Run official container and list packages
podman run --rm vitasdk/vitasdk:latest bash -c "cd /usr/local/vitasdk && find . -name '*.a' -o -name '*.so'"
# Or check vdpm repository
# Clone https://github.com/vitasdk/packages and inspect package definitions
Hardware Requirements
Hacked Console Required
PS Vita homebrew requires modified firmware:
- HENkaku: Firmware 3.60
- h-encore: Firmware 3.65-3.68
- Trinity: Firmware 3.69-3.70
This is similar to 3DS requiring custom firmware (CFW). Not a blocker for development, but users need hacked consoles to run homebrew.
Implementation Plan
Phase 1: Research & Validation
- Test official
vitasdk/vitasdkimage locally - Create simple "Hello World" program
- Build VPK package and test on hardware/emulator
- Document build process
- Query complete package list from vdpm
- Verify networking library availability (curl, SSL/TLS)
Phase 2: Integration Planning
- Determine if custom Dockerfile is needed (likely not)
- Create build scripts for Vita platform
scripts/build-vita.sh- Build project using containerscripts/container-shell-vita.sh- Interactive development shell
- Update main
scripts/build-container.shto handle VitaSDK - Document Vita-specific build flags and configuration
Phase 3: Project Integration
- Create Vita source directory structure
- Implement Nextcloud client for Vita
- Test screenshot upload functionality
- Test camera photo upload functionality
- Integrate with main project build system
Platform Priority Assessment
Priority: HIGH
Justification:
- ✅ Full networking support (Wi-Fi built-in)
- ✅ Native screenshot capability for game captures
- ✅ Dual cameras for photo capture
- ✅ Active homebrew community and toolchain
- ✅ Official Docker images available
- ✅ Similar form factor to 3DS (handheld gaming device)
- ✅ Fits project goals perfectly
Recommendation: Add PS Vita alongside 3DS, Switch, and Wii U as HIGH priority platform.
Differences from devkitPro Platforms
| Aspect | devkitPro | VitaSDK |
|---|---|---|
| Organization | devkitPro | vita-dev (separate) |
| Toolchain | devkitARM/A64/PPC | vita-toolchain (ARM) |
| Package Manager | dkp-pacman (Arch-style) | vdpm (shell scripts) |
| Build System | Native makefiles + CMake | CMake with Vita macros |
| Docker Hub | devkitpro/* | vitasdk/* |
| Package Format | .pkg.tar.xz | vita-makepkg scripts |
| Output Format | .elf, .nro, .rpx | .self, .vpk |
| Install Path | /opt/devkitpro | /usr/local/vitasdk |
Container Usage Examples
Using Official Image Directly
# Pull official image
podman pull vitasdk/vitasdk:latest
# Build project
podman run --rm -v .:/project:z -w /project/vita \
vitasdk/vitasdk:latest \
cmake -B build && cmake --build build
# Interactive shell for development
podman run --rm -it -v .:/project:z -w /project \
vitasdk/vitasdk:latest \
bash
If Custom Image Needed
# vita.Dockerfile
FROM vitasdk/vitasdk:latest
# Add any project-specific tools
RUN apk add --no-cache \
vim \
tree \
htop
# Set working directory
WORKDIR /project
Community & Support
Official Channels
- Discord: Active VitaSDK community server
- Matrix: Bridge to Discord
- IRC: #vitasdk on libera.chat
- Forums: Various homebrew forums
Related Projects
- VitaShell: File manager (reference for file operations)
- Adrenaline: PSP emulator (advanced homebrew example)
- RetroArch: Multi-emulator (networking reference)
- Various homebrew games and apps using VitaSDK
Hardware Specifications
| Component | Specification |
|---|---|
| CPU | Quad-core ARM Cortex-A9 MPCore |
| GPU | Quad-core PowerVR SGX543MP4+ |
| RAM | 512 MB + 128 MB VRAM |
| Display | 5" OLED/LCD touchscreen, 960×544 (qHD) |
| Storage | Proprietary memory cards (4-64 GB) |
| Cameras | Front/back 0.3MP (VGA @ 60fps) |
| Connectivity | Wi-Fi b/g/n, Bluetooth 2.1+EDR, (3G optional) |
| Battery | 2210 mAh (3-5 hours gameplay) |
| Input | Touchscreen, rear touchpad, dual analog sticks, buttons, Sixaxis motion |
References
Official Documentation
- VitaSDK Website - Main landing page
- VitaSDK GitHub - Organization with all repos
- VitaSDK Docker - Official Dockerfile source
- VitaSDK Packages - Available libraries
- VitaSDK Samples - Example code
- VitaSDK Documentation - API reference
Docker Images
Hardware Information
- PlayStation Vita - Wikipedia - Comprehensive hardware specs
- PS Vita Dev Wiki - Homebrew development wiki
Community Resources
- VitaSDK Discord Server - Active developer community
- /r/vitahacks - Reddit community
Next Steps
When ready to implement PS Vita support:
-
Test Official Image:
podman pull vitasdk/vitasdk:latest podman run --rm -it vitasdk/vitasdk:latest bash -
Create Hello World:
- Simple CMakeLists.txt
- Basic main.c with vita2d graphics
- Build VPK package
-
Research Networking Libraries:
- Query vdpm for available packages
- Test curl/libcurl availability
- Verify SSL/TLS support
-
Determine Custom Dockerfile Need:
- If official image has everything → use directly
- If missing tools → create custom Dockerfile extending official image
-
Update Main Plan:
- Add PS Vita to DockerForDevkitARM.md platform summary
- Note it uses separate VitaSDK ecosystem
- Include in Phase 3 implementation alongside Wii U
Notes
- VitaSDK is completely independent from devkitPro - different organization, different toolchain
- Official images already include most/all packages via vdpm install-all
- May not need custom Dockerfile at all - official image might be sufficient
- PS Vita was discontinued in 2019, but homebrew scene remains active
- Estimated 15-16 million units sold worldwide (smaller than 3DS but larger than Wii U)
- Active indie game development continues as of 2026