diff --git a/pkgs/by-name/op/open-stage-control-headless/package.nix b/pkgs/by-name/op/open-stage-control-headless/package.nix new file mode 100644 index 000000000000..5e862b509196 --- /dev/null +++ b/pkgs/by-name/op/open-stage-control-headless/package.nix @@ -0,0 +1,56 @@ +{ + lib, + stdenv, + fetchzip, + unzip, + makeWrapper, + nodejs, + python3, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "open-stage-control-headless"; + version = "1.30.3"; + + src = fetchzip { + url = "https://openstagecontrol.ammd.net/packages/open-stage-control_${finalAttrs.version}_node.zip"; + hash = "sha256-ef9433pG+eMFc+7pReE2qA3hK27y5KyiRTPQ2h6Ir8A="; + }; + + __structuredAttrs = true; + strictDeps = true; + + nativeBuildInputs = [ makeWrapper ]; + + buildInputs = [ + python3.pkgs.python-rtmidi + ]; + + dontConfigure = true; + dontBuild = true; + sourceRoot = "."; + + installPhase = '' + runHook preInstall + + mkdir -p "$out/lib/open-stage-control" + cp -r ./source/* "$out/lib/open-stage-control/" + + mkdir -p "$out/bin" + makeWrapper ${nodejs}/bin/node "$out/bin/open-stage-control" \ + --prefix PYTHONPATH : "$PYTHONPATH" \ + --prefix PATH : ${lib.makeBinPath [ python3 ]} \ + --add-flags "$out/lib/open-stage-control" + + runHook postInstall + ''; + + meta = { + description = "Libre and modular OSC / MIDI controller"; + homepage = "https://openstagecontrol.ammd.net/"; + license = lib.licenses.gpl3Only; + maintainers = with lib.maintainers; [ eymeric ]; + platforms = nodejs.meta.platforms; + mainProgram = "open-stage-control"; + }; +}) diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index f8623d3b89d7..c2381b0bc640 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -1682,7 +1682,7 @@ mapAliases { onscripter-en = throw "onscripter-en has been removed due to lack of maintenance in both upstream and Nixpkgs; onscripter is available instead"; # Added 2025-10-17 onthespot = throw "onethespot has been removed due to lack of upstream maintenance"; # Added 2025-09-26 opae = throw "opae has been removed because it has been marked as broken since June 2023."; # Added 2025-10-11 - open-stage-control = throw "'open-stage-control' has been removed due to being broken for more than a year; see RFC 180"; # Added 2026-05-04 + open-stage-control = throw "'open-stage-control' has been removed due to being broken for more than a year; see RFC 180. Consider using open-stage-control-headless instead."; # Added 2026-05-04 open-timeline-io = warnAlias "'open-timeline-io' has been renamed to 'opentimelineio'" opentimelineio; # Added 2025-08-10 openafs_1_8 = throw "'openafs_1_8' has been renamed to/replaced by 'openafs'"; # Converted to throw 2025-10-27 openai = throw "'openai' has been removed, since upstream removed the legacy CLI in v2.35.0; use 'python3Packages.openai' instead"; # Added 2026-06-10