explainroo
explainroo is a free, open source tool that lets your AI agent make explainer videos with a voice. It runs on your own computer and needs no API key.
翻訳待ち
Headless streaming server for Moonlight clients, written in Rust.
翻訳待ち
メディアRust · NixGitHub @hgaiser自分でインストール所有者未確認
Paste into Claude or ChatGPT for installation instructions suited to your environment.
Have you tried it? One tap is enough. No sign-in needed.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Moonshine lets you stream games from your PC to any device running Moonlight. Your keyboard, mouse, and controller inputs are sent back to the host so you can play games remotely as if you were sitting in front of it.
.deb, .rpm, Nix, AUR, and an install script for SteamOS. Tested on Arch Linux, but reported to work on other distributions too.The recommended method is to install through the AUR using:
yay -S moonshine-bin
After installing, follow the distro-agnostic Enable the service steps below.
Download the latest .deb from the releases page and install it:
sudo apt install ./moonshine_*.deb
After installing, follow the Enable the service steps below.
Download the latest .rpm from the releases page and install it:
sudo dnf install ./moonshine-*.rpm
The package's post-install scripts set up udev rules, kernel modules, and the moonshine group automatically.
After installing, follow the Enable the service steps below.
On NixOS, use the services.moonshine module. It installs the package and handles everything in Enable the service, so skip those steps.
Moonshine and its module are in nixpkgs:
services.moonshine = {
enable = true;
user = "alice"; # must be declared in users.users
# Required: the default application points at /usr/bin/steam, which doesn't exist on NixOS.
settings.application = [
{
title = "Steam";
command = [ "/run/current-system/sw/bin/steam" "steam://open/bigpicture" ];
}
];
# Opens the ports on these interfaces only; see Security below.
# firewallInterfaces = [ "tailscale0" ];
};
See all options at search.nixos.org.
This repository is also a flake that builds from the latest commit. Add it to your system flake's inputs and import its module. See nix/README.md for details.
The flake module replaces the nixpkgs one, and its options are slightly different: openFirewall instead of firewallInterfaces, a uid option you may need to set if the user's uid isn't declared in your config, and the user isn't added to input for you.
The flake package (nix profile install github:hgaiser/moonshine) has only the binary, udev rules and Vulkan layer. It doesn't include the systemd unit, so on other distros use one of the native packages above.
On Fedora Atomic distros, download the .rpm from the releases page and layer it:
sudo rpm-ostree install ./moonshine-*.rpm
sudo systemctl reboot
After reboot, follow the Enable the service steps below.
Use the installer script:
curl -fsSL https://github.com/hgaiser/moonshine/releases/latest/download/moonshine-install.sh | bash
This deploys moonshine to /opt/moonshine/ and configuration drop-ins to /etc/. The installer registers these files with SteamOS so they persist across atomic updates.
These steps apply to every installation method above (the service is a systemd unit).
Enable user lingering:
sudo loginctl enable-linger $USER
This allows Moonshine to run applications in the user's session even when the user is not logged in (when running headless).
If your user is always logged in when you want to stream, you can skip this step.
Enable the service to start on boot and run immediately:
sudo systemctl enable --now moonshine@$USER
Gamepad support when streaming headless (no active desktop session): add your user to the input group, then log out and back in (or reboot) for it to take effect:
sudo usermod -aG input $USER
Moonshine creates a virtual gamepad per streamed controller, and the streamed game must be able to read it. When streaming while a desktop session is active, your user is already granted access to input devices as the active seat, so this step is not needed there. Run moonshine healthcheck to verify — it reports an input group warning if the group is missing.
The following dependencies are required to build and run:
# Build dependencies
sudo pacman -S --asdeps \
clang \
cmake \
jq \
libc++ \
rust
# Runtime dependencies
sudo pacman -S \
gcc-libs \
glibc \
libevdev \
libxkbcommon \
mesa \
opus \
wayland \
xorg-xwayland
Then build:
This is the beginning of the README. Read the rest at the original. Read the full README ↗