{ pkgs, ... }@all: with all; { programs.mpv = { enable = true; package = pkgs.mpv; scrips = with pkgs.mpvScripts; [ mpris # use media keys thumbfast # thumbnails on timeline hover uosc # custom ui sponsorblock ]; bindings = { O = ''no-osd cycle-values glsl-shaders "~~/shaders/invert.glsl" ""; show-text "Invert Shader"''; }; scriptOpts = { thumbfast = { spawn_first = true; network = true; hwdec = true; }; uosc = { timeline_size = 25; timeline_persistency = "paused,audio"; progress = "always"; progress_size = 4; progress_line_width = 4; controls = "subtitles,audio,video,editions,stream-quality"; top_bar = "never"; refine = "text_width"; }; }; }; xdg.configfile."mpv/shaders/invert.glsl".text = /* glsl */ '' //!HOOK LUMA //!BIND HOOKED vec4 hook() { float luma = LUMA_texOff(0).x; return vec4(1.0 - luma); } ''; }