HydraOS

Gentoo-based host for concurrent virtual desktops. Its default session shows one VM fullscreen and switches between guests with keyboard shortcuts. Other host desktops may use the same independent VM manager and viewers.

Status

Under active development, not yet an installation-ready distribution. The target is an installable UEFI ISO, first validated on ASUS TUF Dash F15 FX517ZC. Existing NixOS and VM disks are not installation or test targets.

  1. Independent QEMU/KVM lifecycle with private QMP control.
  2. Minimal labwc session and fullscreen SPICE viewers.
  3. Gentoo rootfs, live ISO, explicit disk installer.
  4. Disposable-disk installation/reboot tests, then physical live-boot checks.

Shared clipboard and directories are opt-in. VM processes survive viewer and compositor exits. GPU passthrough and graphics performance require hardware tests; a refresh-rate setting does not prove delivered FPS.

Build outputs, VM disks, runtime state and credentials stay outside Git.

Run the prototype

python3 -m unittest discover -s tests -v
nix-shell dev/tools.nix
bin/hydra add guest --iso /absolute/path/installer.iso
bin/hydra start guest
bin/hydra view guest
# From a dedicated graphical login; --nested uses the current graphical display.
bin/hydra session --nested

After installation, shut the guest down and run bin/hydra media guest --detach to boot its existing disk without installation media. add also supports disk-only profiles, --width, --height, and --refresh-millihz. Distribution preferences in /etc/hydra/defaults.toml affect only new profiles; explicit CLI options win.

nix-shell dev/tools.nix --run 'python3 dev/smoke.py' checks two disposable KVM counter guests and private headless viewers, including manual USB selection, reserved switching under inhibition, recovery and reconnect. See verification commands and physical checks still pending.

An empty session opens local recovery. Enter :shell, create and start guests with hydra add / hydra start, then leave the shell and enter :refresh. Refresh rebuilds workspaces and reconnects viewers for the current profiles; running VMs keep their processes and disks. Use it after adding or removing profiles. New profiles save an individual MAC address; legacy profiles obtain a stable address from their owner and disk path, including on the shared bridge.

S
Description
No description provided
Readme
1.3 MiB
Languages
Python 98.8%
Shell 0.5%
C 0.4%
Nix 0.2%