nixos-config/modules/applications/youtube-to-mpv.nix
2019-09-22 01:32:26 +04:00

39 lines
1.5 KiB
Nix

{ stdenv, pkgs, isLaptop ? false }:
# TODO: отвязать от urxvt
let
myScript = if isLaptop then
pkgs.writeShellScriptBin "yt-mpv" ''
if [[ "$1" != "--no-video" ]]; then
BATTERY="`${pkgs.acpi}/bin/acpi -b | grep --invert-match unavailable | head -1`"
STATUS=`awk -F'[,:] ' '{print $2}' <<< "$BATTERY"`
${pkgs.libnotify}/bin/notify-send -t 3000 --icon=video-television "Playing Video" "$(xclip -o)"
if [[ "$STATUS" == "Discharging" ]]; then
${pkgs.mpv}/bin/mpv --fs --ytdl-format="bestvideo[height<=?1080][fps<=?30][vcodec!=?vp9]+bestaudio/best" "$(xclip -o)"
else
${pkgs.mpv}/bin/mpv --fs "$(xclip -o)"
fi
else
${pkgs.libnotify}/bin/notify-send -t 3000 --icon=video-television "Playing Audio" "$(xclip -o)"
${pkgs.rxvt_unicode}/bin/urxvt -e ${pkgs.mpv}/bin/mpv --no-video "$(xclip -o)"
fi
''
else
pkgs.writeShellScriptBin "yt-mpv" ''
if [[ "$1" != "--no-video" ]]; then
${pkgs.libnotify}/bin/notify-send -t 3000 --icon=video-television "Playing Video" "$(xclip -o)"
${pkgs.mpv}/bin/mpv --fs "$(xclip -o)"
else
${pkgs.libnotify}/bin/notify-send -t 3000 --icon=video-television "Playing Audio" "$(xclip -o)"
${pkgs.rxvt_unicode}/bin/urxvt -e ${pkgs.mpv}/bin/mpv --no-video "$(xclip -o)"
fi
'';
in
stdenv.mkDerivation rec {
name = "youtube-to-mpv";
src = myScript;
installPhase = ''
mkdir -p $out/bin
cp ./bin/yt-mpv $out/bin/yt-mpv
'';
}