nix-dotfiles/modules/software/system/mpv.nix
2026-06-09 21:10:21 -07:00

64 lines
1.8 KiB
Nix

{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.modules.software.system.mpv;
in {
options.modules.software.system.mpv = {
enable = mkEnableOption "Enable mpv, a lightweight video player";
};
config = mkIf cfg.enable {
hm.programs.mpv = {
enable = true;
config = {
hwdec = "auto";
keep-open = "yes";
no-keepaspect-window = ""; # tiling doesn't play nice..
osc = "no";
border = "no";
};
scriptOpts = {
visualizer = {
mode = "noalbumart";
};
modernz = with config.scheme.withHashtag; {
bottomhover = "no";
hover_effect = ""; # these are weird lookin
seekbarfg_color = "${base0D}"; # blue is a sane default
};
};
scripts = with pkgs.mpvScripts; [
mpris
modernz
thumbfast
visualizer
];
};
# https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/MIME_types/Common_types
hm.xdg.mimeApps.defaultApplications = {
"audio/3gpp" = [ "mpv.desktop" ]; # 3gp
"audio/3gpp2" = [ "mpv.desktop" ]; # 3g2
"audio/aac" = [ "mpv.desktop" ];
# `midi`: unsupported
"audio/mpeg" = [ "mpv.desktop" ]; # mp3
"audio/ogg" = [ "mpv.desktop" ];
"audio/wav" = [ "mpv.desktop" ];
"audio/webm" = [ "mpv.desktop" ]; # weba
"video/3gpp" = [ "mpv.desktop" ]; # 3gp
"video/3gpp2" = [ "mpv.desktop" ]; # 3g2
"video/x-msvideo" = [ "mpv.desktop" ]; # avi
"video/x-matroska" = [ "mpv.desktop" ]; # mkv
"video/quicktime" = [ "mpv.desktop" ]; # mov
"video/mp4" = [ "mpv.desktop" ];
"video/mpeg" = [ "mpv.desktop" ];
"video/ogg" = [ "mpv.desktop" ]; # ogv
# `ts`: not as commonly used as typescript
"video/webm" = [ "mpv.desktop" ];
};
};
}