This repository packages the official OpenTubeX releases for NixOS, Linux, and macOS. It provides a Nix flake and overlay, using the release binaries with their bundled Electron runtime.
| Platform | Architectures |
|---|---|
| NixOS and Linux | x86_64-linux, aarch64-linux |
| macOS | x86_64-darwin for Intel, aarch64-darwin for Apple Silicon |
Install Nix and enable nix-command and
flakes. For a standalone Nix installation, add this to
~/.config/nix/nix.conf:
experimental-features = nix-command flakesThen install OpenTubeX in your user profile:
nix profile install github:OpenTubeX/nix#opentubex
opentubexTo run it without adding it to your profile:
nix run github:OpenTubeX/nix#opentubexThe Linux package includes desktop icons and the opentubex:// URL handler.
Its launcher supplies Nix-built FFmpeg, FFprobe, and yt-dlp. On macOS, the
package includes Applications/OpenTubeX.app and the opentubex command,
preserving the release's ad-hoc signature.
Add this input to your existing configuration flake:
inputs.opentubex.url = "github:OpenTubeX/nix";Pass your flake inputs to your NixOS or nix-darwin modules with
specialArgs = { inherit inputs; };, then add a module like this:
{ inputs, pkgs, ... }:
{
nix.settings.experimental-features = [ "nix-command" "flakes" ];
environment.systemPackages = [
inputs.opentubex.packages.${pkgs.stdenv.hostPlatform.system}.opentubex
];
}For standalone Home Manager, pass extraSpecialArgs = { inherit inputs; };
and use home.packages instead of environment.systemPackages.
An overlay is also available as inputs.opentubex.overlays.default. Adding it
to nixpkgs.overlays exposes pkgs.opentubex using your own Nixpkgs version.
The package outputs above use this repository's tested Nixpkgs pin.
For the profile installation above:
nix profile upgrade opentubexIf you installed the default output without #opentubex, check
nix profile list and use the name shown there.
For a declarative installation, update the input from your configuration directory and rebuild your NixOS, nix-darwin, or Home Manager configuration:
nix flake update opentubexNew releases are pinned automatically in this repository. Existing installations update when you run the commands above. There is currently no nightly package channel.
Intel Mac support uses Nixpkgs 26.05, the last Nixpkgs release supporting
x86_64-darwin. Keep that constraint in mind when overriding the Nixpkgs
input or using the overlay.
After an OpenTubeX release is published, the application repository sends an
opentubex-release repository dispatch containing the exact release tag.
The Build and update Nix packages workflow can also be run manually with
an optional releaseTag. Without a tag, it selects the latest published
release.
For a release update, the workflow:
- records the release version, asset names, and SHA-256 digests in
release.json; - builds the packages and checks the bundled runtime on native runners for all four platforms, verifying each downloaded asset against its digest;
- verifies both macOS bundle signatures;
- publishes the new pin in a GitHub-signed commit only after all builds and checks pass, provided the tested branch revision has not changed.
Enable GitHub Actions in this repository. The workflow uses the built-in
GITHUB_TOKEN, with write access limited to the publishing job. Manual
updates need no additional secrets, signing keys, or binary cache. The
OpenTubeX application repository uses its existing PUSH_TOKEN secret to
send cross-repository dispatches. That token needs write access to this
repository.
To prepare and check an update locally, install Python 3, the GitHub CLI, and Nix, then run:
python3 scripts/update.py
python3 -m unittest discover -s scripts -v
nix fmt -- --check flake.nix package.nix
nix flake check --no-build --all-systems
nix build .#opentubex --print-build-logsUse python3 scripts/update.py --tag v0.34.1-beta to select a particular
published release. The local build checks the host platform; CI checks all
four platforms before an automated release update is published.