diff --git a/modules/programs/mpv.nix b/modules/programs/mpv.nix index 5901f9d08..938435f35 100644 --- a/modules/programs/mpv.nix +++ b/modules/programs/mpv.nix @@ -12,6 +12,7 @@ let mpvOptions = with types; attrsOf mpvOptionDup; mpvProfiles = with types; attrsOf mpvOptions; mpvBindings = with types; attrsOf str; + mpvDefaultProfiles = with types; listOf str; renderOption = option: rec { @@ -45,6 +46,9 @@ let concatStringsSep "\n" (mapAttrsToList (name: value: "${name} ${value}") bindings); + renderDefaultProfiles = profiles: + renderOptions { profile = concatStringsSep "," profiles; }; + mpvPackage = if cfg.scripts == [ ] then pkgs.mpv else @@ -115,6 +119,16 @@ in { ''; }; + defaultProfiles = mkOption { + description = '' + Profiles to be applied by default. Options set by them are overridden + by options set in . + ''; + type = mpvDefaultProfiles; + default = [ ]; + example = [ "gpu-hq" ]; + }; + bindings = mkOption { description = '' Input configuration written to @@ -145,6 +159,8 @@ in { } (mkIf (cfg.config != { } || cfg.profiles != { }) { xdg.configFile."mpv/mpv.conf".text = '' + ${optionalString (cfg.defaultProfiles != [ ]) + (renderDefaultProfiles cfg.defaultProfiles)} ${optionalString (cfg.config != { }) (renderOptions cfg.config)} ${optionalString (cfg.profiles != { }) (renderProfiles cfg.profiles)} '';