aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/pkgs/applications/networking/mkchromecast/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/applications/networking/mkchromecast/default.nix')
-rw-r--r--infra/libkookie/nixpkgs/pkgs/applications/networking/mkchromecast/default.nix84
1 files changed, 84 insertions, 0 deletions
diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/mkchromecast/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/mkchromecast/default.nix
new file mode 100644
index 000000000000..34f5be71ef35
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/mkchromecast/default.nix
@@ -0,0 +1,84 @@
+{ stdenv
+, fetchFromGitHub
+, python3Packages
+, sox
+, flac
+, lame
+, wrapQtAppsHook
+, ffmpeg
+, vorbis-tools
+, pulseaudio
+, nodejs
+, youtube-dl
+, opusTools
+, gst_all_1
+}:
+let packages = [
+ vorbis-tools
+ sox
+ flac
+ lame
+ opusTools
+ gst_all_1.gstreamer
+ nodejs
+ ffmpeg
+ youtube-dl
+] ++ stdenv.lib.optionals stdenv.isLinux [ pulseaudio ];
+
+in
+python3Packages.buildPythonApplication rec {
+ pname = "mkchromecast-unstable";
+ version = "2020-10-17";
+
+ src = fetchFromGitHub rec {
+ owner = "muammar";
+ repo = "mkchromecast";
+ rev = "eb9da74d887acd70ed179e6e4c0cbed4ff83de04";
+ sha256 = "1l565n3rmyghc4vzh80gazvdks1i97j1h94x33pkmxxlf9a9rncj";
+ };
+
+ propagatedBuildInputs = with python3Packages; [
+ PyChromecast
+ psutil
+ mutagen
+ flask
+ netifaces
+ requests
+ pyqt5
+ ];
+
+ postPatch = ''
+ substituteInPlace setup.py \
+ --replace 'platform.system() == "Darwin"' 'False' \
+ --replace 'platform.system() == "Linux"' 'True'
+ '';
+
+ nativeBuildInputs = [ wrapQtAppsHook ];
+
+ # Relies on an old version (0.7.7) of PyChromecast unavailable in Nixpkgs.
+ # Is also I/O bound and impure, testing an actual device, so we disable.
+ doCheck = false;
+
+ dontWrapQtApps = true;
+
+ makeWrapperArgs = [
+ "\${qtWrapperArgs[@]}"
+ "--prefix PATH : ${stdenv.lib.makeBinPath packages}"
+ ];
+
+ postInstall = ''
+ substituteInPlace $out/lib/${python3Packages.python.libPrefix}/site-packages/mkchromecast/video.py \
+ --replace '/usr/share/mkchromecast/nodejs/' '${placeholder "out"}/share/mkchromecast/nodejs/'
+ '' + stdenv.lib.optionalString stdenv.isDarwin ''
+ install -Dm 755 -t $out/bin bin/audiodevice
+ substituteInPlace $out/lib/${python3Packages.python.libPrefix}/site-packages/mkchromecast/audio_devices.py \
+ --replace './bin/audiodevice' '${placeholder "out"}/bin/audiodevice'
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = "https://mkchromecast.com/";
+ description = "Cast macOS and Linux Audio/Video to your Google Cast and Sonos Devices";
+ license = licenses.mit;
+ maintainers = with maintainers; [ shou ];
+ };
+}