aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/pkgs/misc/scrcpy
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/misc/scrcpy')
-rw-r--r--nixpkgs/pkgs/misc/scrcpy/default.nix64
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 ];
+ };
+}