diff options
Diffstat (limited to 'nixpkgs/pkgs/misc/scrcpy')
-rw-r--r-- | nixpkgs/pkgs/misc/scrcpy/default.nix | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/misc/scrcpy/default.nix b/nixpkgs/pkgs/misc/scrcpy/default.nix new file mode 100644 index 00000000000..a93f7e6aeaf --- /dev/null +++ b/nixpkgs/pkgs/misc/scrcpy/default.nix @@ -0,0 +1,64 @@ +{ stdenv, fetchurl, fetchFromGitHub, makeWrapper +, meson +, ninja +, pkgconfig +, fetchpatch + +, platform-tools +, ffmpeg +, SDL2 +}: + +let + version = "1.13"; + prebuilt_server = fetchurl { + url = "https://github.com/Genymobile/scrcpy/releases/download/v${version}/scrcpy-server-v${version}"; + sha256 = "11gqsl2x18hgwdjajag9q8qdxqvdqr9m67zka22z7hnd3k569vjz"; + }; +in +stdenv.mkDerivation rec { + pname = "scrcpy"; + inherit version; + + src = fetchFromGitHub { + owner = "Genymobile"; + repo = pname; + rev = "v${version}"; + sha256 = "1zc73l5vm4hca8niaa3y76kpk7i9vj89wv4gbxmf1yjmixb71hby"; + }; + + # postPatch: + # screen.c: When run without a hardware accelerator, this allows the command to continue working rather than failing unexpectedly. + # This can happen when running on non-NixOS because then scrcpy seems to have a hard time using the host OpenGL-supporting hardware. + # It would be better to fix the OpenGL problem, but that seems much more intrusive. + postPatch = '' + substituteInPlace app/src/screen.c \ + --replace "SDL_RENDERER_ACCELERATED" "SDL_RENDERER_ACCELERATED || SDL_RENDERER_SOFTWARE" + ''; + + nativeBuildInputs = [ makeWrapper meson ninja pkgconfig ]; + + buildInputs = [ ffmpeg SDL2 ]; + + # Manually install the server jar to prevent Meson from "fixing" it + preConfigure = '' + echo -n > server/meson.build + ''; + + mesonFlags = [ "-Doverride_server_path=${prebuilt_server}" ]; + postInstall = '' + mkdir -p "$out/share/scrcpy" + ln -s "${prebuilt_server}" "$out/share/scrcpy/scrcpy-server" + + # runtime dep on `adb` to push the server + wrapProgram "$out/bin/scrcpy" --prefix PATH : "${platform-tools}/bin" + ''; + + meta = with stdenv.lib; { + description = "Display and control Android devices over USB or TCP/IP"; + homepage = "https://github.com/Genymobile/scrcpy"; + license = licenses.asl20; + platforms = platforms.unix; + maintainers = with maintainers; [ deltaevo lukeadams ]; + }; +} |