Repository navigation
Conversation
Contributor
Try these scripts
bash -c "$(curl -fsSL https://raw.githubusercontent.com/Tomblarom/DevScripts/feat/debian-game-streaming/vm/moonlight-vm.sh)"
bash -c "$(curl -fsSL https://raw.githubusercontent.com/Tomblarom/DevScripts/feat/debian-game-streaming/vm/sunshine-vm.sh)"Against a core branch as wellAdd |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
✍️ Description
Prepare a Debian 13 game-streaming host and client as independently usable Proxmox VE VM scripts. Users currently have to assemble the desktop, streaming application, GPU assignment and frontend integration separately.
vm/sunshine-vm.sh: KDE Plasma Wayland, PipeWire, the upstream Sunshine Debian package, and optional Debian Steam/Dolphin packages. Optional Pegasus uses its upstream alpha build, adds a Sunshine launcher without replacing existing applications, and registers an initially empty, user-owned Dolphin collection.vm/moonlight-vm.sh: Xfce/LightDM, PipeWire and the upstream Moonlight AppImage, extracted without FUSE. Moonlight can start at graphical login; pairing stays in the normal application UI.The initial hardware path expects a monitor or suitable dummy, AMD/Intel Mesa drivers, and prepared host passthrough. NVIDIA needs a compatible driver installed inside the guest separately. Dummy-only server operation needs the explicit desktop-autologin option. 4K60 SDR is a validation target, not a tested performance claim; display mode, encoding, decoding and game rendering must all be checked on the actual hardware.
Host boot parameters, driver blacklists, initramfs and IOMMU overrides are not modified. LXC, virtual headless displays and automatic game/emulator library provisioning are outside this draft. Custom Pegasus launch commands can be added for other emulators.
Installation sources and runtime
These are upstream-built native C++/Qt applications, with no application database. Sunshine's Debian package supplies its runtime dependencies; Moonlight's AppImage bundles its application runtime. Desktop, graphics, audio, Steam/i386 and Dolphin packages come from Debian 13 repositories. Guest setup runs after Cloud-Init on the real guest kernel, including Sunshine's udev/module setup.
Release names and digests are resolved through
vm_release_assetand fetched withvm_fetch_image; the Debian image uses Core's vendor-checksum handling. Verified during development: Sunshinev2026.914.233613, Moonlightv6.2.0, and Pegasuscontinuous(0.16.109, explicitly opt-in). Production scripts resolve the release instead of hardcoding these versions.🔗 Related PR / Issue
No issue closure is claimed. Existing Sunshine and Moonlight requests/contributions were checked before implementation. This draft adds Debian VM entries; it does not depend on another unpublished GPU helper.
✅ Prerequisites
🏗️ arm64 Support
🖥️ Tested on
Automated QA
Checks used Core commit
af0fe772dd02bed10fd0124e3aacc86f2bc900d7. No install script was executed on the development machine and no real host, GPU binding or guest was changed.GitHub's script-requirements check has passed. The upstream VM metadata, Bash syntax and VM wizard workflow runs currently report
action_required; no successful upstream execution of those workflows is claimed. The local checks below passed against the submitted commit.Reproduce with Core checked out locally:
The ShellCheck exclusions cover the runtime Core import and globals consumed by Core; rendered guest scripts are checked without those exclusions. The device tests use synthetic sysfs/configuration trees and mocked
qm, never the host's devices. They cover conflicting and changing ownership, boot GPUs, missing IOMMU, unrelated group members, cancellation, unattended confirmation and USB exclusions. Guest tests render a non-default username, check shell syntax, preserve Sunshine app entries across repeated Pegasus merges, and verify Debian repository-component edits remain idempotent.The existing lifecycle fixtures were extended for the new assets and first-boot checks. One pre-existing HAOS channel fixture lacked the
hassos.generic-aarch64field already used by its script; the failure was reproduced against the unchanged base, then the fixture alone was corrected so the full suite runs.Hardware QA still needed: Debian guest bootstrap, graphical login/autologin, firmware after guest reboot, AMD/Intel/NVIDIA-specific behavior, physical display/USB/audio, PIN pairing, gamepad mapping, Steam and Dolphin launch/return, guest restart, and 4K60 encode/decode/frame pacing. No UI screenshots or successful hardware-test claims are supplied in place of those checks.
🛠️ Type of Change
🔍 Code & Security Review
CODE-AUDIT.md&CONTRIBUTING.mdguidelines, with the current VM-specific Core contract.vm/*.shand matching catalog entries.🤖 AI Assistance
AGENTS.mdand.github/agents/pve-script-creator.agent.mdwere read, with VM-specific guidance applied where CT-only rules do not apply. Output was reviewed and corrected against the project contracts.GPT-6.1-Sol (high reasoning) coordinated research, integration, review and validation. Muse 1.3 Contributor (max reasoning) researched public upstreams and drafted the two VM scripts. The automated checks above do not substitute for the pending real-platform tests.
📋 Additional Information
Optional settings:
VM_INSTALL_STEAM=yes|no,VM_INSTALL_DOLPHIN=yes|no,VM_INSTALL_PEGASUS=yes|no,VM_CLIENT_AUTOSTART=yes|noandVM_DESKTOP_AUTOLOGIN=yes|no. The interactive wizard offers these choices. Pegasus and desktop autologin default to no.For unattended device selection, use an explicit
VM_GPU_PCI=0000:01:00.0and/or clientVM_USB_PORTS=1-2,1-3.4, together withVM_PASSTHROUGH_CONFIRM=yes. These are examples, not automatically selected devices. Core's normal VM and Cloud-Init environment overrides remain available.📦 Application Requirements (for new scripts)
🌐 Source