From 5c32f2a0bd542f76add45f96de53d68d3acc1c4d Mon Sep 17 00:00:00 2001 From: Tristan Druyen Date: Mon, 24 Mar 2025 22:20:08 +0100 Subject: [PATCH] Add updated miraclecast --- home-mods/desktop/default.nix | 2 +- pkgs/miraclecast.nix | 91 +++++++++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 pkgs/miraclecast.nix diff --git a/home-mods/desktop/default.nix b/home-mods/desktop/default.nix index b49b6ea..f78aaea 100644 --- a/home-mods/desktop/default.nix +++ b/home-mods/desktop/default.nix @@ -140,7 +140,7 @@ # freecad-wayland # dbeaver-bin # blender - # miraclecast + my.miraclecast # rustdesk # deadbeef-with-plugins # flightgear diff --git a/pkgs/miraclecast.nix b/pkgs/miraclecast.nix new file mode 100644 index 0000000..681a386 --- /dev/null +++ b/pkgs/miraclecast.nix @@ -0,0 +1,91 @@ +{ + lib, + fetchFromGitHub, + glib, + gst_all_1, + iproute2, + libtool, + makeBinaryWrapper, + meson, + miraclecast, + ninja, + pkg-config, + readline, + stdenv, + systemdLibs, + testers, + udev, + wpa_supplicant, + relyUdev ? true, +}: + +let + gstreamerPluginPaths = lib.concatMapStrings (pth: pth + "/lib/gstreamer-1.0:") [ + (lib.getLib gst_all_1.gstreamer) + gst_all_1.gst-libav + gst_all_1.gst-plugins-bad + gst_all_1.gst-plugins-base + gst_all_1.gst-plugins-good + ]; +in +stdenv.mkDerivation { + pname = "miraclecast"; + version = "1.0-unstable-2024-07-13"; + + src = fetchFromGitHub { + owner = "albfan"; + repo = "miraclecast"; + rev = "937747fd4de64a33bccf5adb73924c435ceb821b"; + hash = "sha256-y37+AOz8xYjtDk9ITxMB7UeWeMpDH+b6HQBczv+x5zo="; + }; + + nativeBuildInputs = [ + makeBinaryWrapper + meson + ninja + pkg-config + ]; + + buildInputs = [ + glib + gst_all_1.gstreamer + iproute2 + libtool + readline + systemdLibs + udev + wpa_supplicant + ]; + + mesonFlags = + [ + "-Dbuild-tests=true" + "-Dip-binary=${iproute2}/bin/ip" + ] + ++ lib.optionals relyUdev [ + "-Drely-udev=true" + ]; + + postPatch = '' + substituteInPlace res/miracle-gst \ + --replace-fail "/usr/bin/gst-launch-1.0" "${gst_all_1.gstreamer}/bin/gst-launch-1.0" + ''; + + postInstall = '' + wrapProgram $out/bin/miracle-gst --set GST_PLUGIN_SYSTEM_PATH_1_0 ${gstreamerPluginPaths} + ''; + + passthru.tests.version = testers.testVersion { + package = miraclecast; + command = "miracled --version"; + version = "Miraclecast 1"; + }; + + meta = with lib; { + description = "Connect external monitors to your system via Wifi-Display specification also known as Miracast"; + homepage = "https://github.com/albfan/miraclecast"; + license = licenses.lgpl21Plus; + maintainers = [ maintainers.wizardlink ]; + platforms = platforms.linux; + }; +}