From 4f57f67555e22fa77a7166762fa081130e32b69f Mon Sep 17 00:00:00 2001 From: Wroclaw Date: Sun, 3 Nov 2024 16:27:36 +0100 Subject: [PATCH] nixos/core-desktop: declaratively configure mpv --- nix-os/core-desktop.nix | 74 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 73 insertions(+), 1 deletion(-) diff --git a/nix-os/core-desktop.nix b/nix-os/core-desktop.nix index 3158287..617b79a 100644 --- a/nix-os/core-desktop.nix +++ b/nix-os/core-desktop.nix @@ -1,6 +1,9 @@ {config, lib, pkgs, ... }: { + imports = [ + ./generic/mpv.nix + ]; config = { services.printing.enable = true; @@ -19,10 +22,79 @@ environment.systemPackages = with pkgs; [ kdePackages.kdeconnect-kde - mpv pcmanfm ]; + programs.mpv = let + fetchMpvScript = {url, hash, scriptName}: pkgs.fetchurl { + inherit url hash; + name = "mpv-script-${scriptName}"; + recursiveHash = true; + downloadToTemp = true; + postFetch = '' + mkdir -p $out/share/mpv/scripts + mv $downloadedFile $out/share/mpv/scripts/${scriptName} + ''; + passthru.scriptName = scriptName; + }; + in { + enable = true; + scripts = [ + pkgs.mpvScripts.sponsorblock + pkgs.mpvScripts.mpris + ] ++ lib.map (script: fetchMpvScript { + url = "https://raw.githubusercontent.com/occivink/mpv-scripts/d0390c8e802c2e888ff4a2e1d5e4fb040f855b89/scripts/${script.name}"; + hash = script.hash; + scriptName = script.name; + }) [ + { name = "crop.lua"; hash = "sha256-/uaTCtV8Aanvnxrt8afBbO4uu2xp8Ec6DxApMb+fg2s="; } + { name = "encode.lua"; hash = "sha256-yK/DV0cpGhl4Uobl7xA1myZiECJpsShrHnsJftBqzAY="; } + ]; + settings = { + mpv = { + keep-open = "yes"; + volume = "40"; + osd-fractions = "yes"; + background = "0.0/1.0"; + alpha = "yes"; + }; + input = lib.mkMerge [ + # mpv core + '' + Alt+1 set window-scale 0.125 + Alt+2 set window-scale 0.25 + Alt+3 set window-scale 0.5 + Alt+4 set window-scale 1 + Alt+5 set window-scale 2 + '' + # crop.lua + '' + c script-message-to crop start-crop hard + alt+c script-message-to crop start-crop soft + ctrl+shift+c script-message-to crop start-crop delogo + C script-message-to crop toggle-crop hard + '' + # encode.lua + '' + b script-message-to encode encode_default + alt+b script-message-to encode set-timestamp encode_default + '' + ]; + script-opts = { + "encode_default.conf" = { + only_active_tracks = "no"; + preserve_filters = "yes"; + append_filder = ""; + codec = ""; + output_format = "$f_$n.$x"; + output_dir = "/tmp"; + detached = "no"; + ffmpeg_command = lib.getExe pkgs.ffmpeg; + }; + }; + }; + }; + services.openssh.extraConfig = '' X11Forwarding yes '';