1
0
Fork 0
mirror of https://github.com/nix-community/home-manager synced 2024-11-23 11:39:46 +01:00

yt-dlp: add settings option

This commit is contained in:
Loïc Reynier 2022-09-09 09:56:07 +02:00 committed by Robert Helgesson
parent 41790ba656
commit f5e4614c11
No known key found for this signature in database
GPG key ID: 36BDAA14C2797E89
6 changed files with 75 additions and 12 deletions

1
.github/CODEOWNERS vendored
View file

@ -314,6 +314,7 @@ Makefile @thiagokokada
/tests/modules/programs/xmobar @t4ccer /tests/modules/programs/xmobar @t4ccer
/modules/programs/yt-dlp.nix @marsam /modules/programs/yt-dlp.nix @marsam
/tests/modules/programs/yt-dlp @marsam
/modules/programs/z-lua.nix @marsam /modules/programs/z-lua.nix @marsam

View file

@ -6,6 +6,12 @@ let
cfg = config.programs.yt-dlp; cfg = config.programs.yt-dlp;
renderSettings = mapAttrsToList (name: value:
if isBool value then
if value then "--${name}" else "--no-${name}"
else
"--${name} ${toString value}");
in { in {
meta.maintainers = [ maintainers.marsam ]; meta.maintainers = [ maintainers.marsam ];
@ -19,29 +25,48 @@ in {
description = "Package providing the <command>yt-dlp</command> tool."; description = "Package providing the <command>yt-dlp</command> tool.";
}; };
extraConfig = mkOption { settings = mkOption {
type = types.lines; type = with types; attrsOf (oneOf [ bool int str ]);
default = ""; default = { };
example = literalExpression '' example = literalExpression ''
--embed-thumbnail embed-thumbnail = true;
--embed-subs embed-subs = true;
--sub-langs all sub-langs = "all";
--downloader aria2c downloader = "aria2c";
--downloader-args aria2c:'-c -x8 -s8 -k1M' downloader-args = "aria2c:'-c -x8 -s8 -k1M'";
''; '';
description = '' description = ''
Configuration written to Configuration written to
<filename>$XDG_CONFIG_HOME/yt-dlp/config</filename>. See <filename>$XDG_CONFIG_HOME/yt-dlp/config</filename>.
<link xlink:href="https://github.com/yt-dlp/yt-dlp#configuration" /> </para><para>
Options must be specified in their <quote>long form</quote>, for
example, <code>update = true;</code> instead of <code>U = true;</code>.
Short options can be specified in the <code>extraConfig</code> option.
See <link xlink:href="https://github.com/yt-dlp/yt-dlp#configuration"/>
for explanation about possible values. for explanation about possible values.
''; '';
}; };
extraConfig = mkOption {
type = types.lines;
default = "";
example = ''
--update
-F
'';
description = ''
Extra configuration to add to
<filename>$XDG_CONFIG_HOME/yt-dlp/config</filename>.
'';
};
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
home.packages = [ cfg.package ]; home.packages = [ cfg.package ];
xdg.configFile."yt-dlp/config" = xdg.configFile."yt-dlp/config" = mkIf (cfg.settings != { }) {
mkIf (cfg.extraConfig != "") { text = cfg.extraConfig; }; text = concatStringsSep "\n"
(remove "" (renderSettings cfg.settings ++ [ cfg.extraConfig ])) + "\n";
};
}; };
} }

View file

@ -155,6 +155,7 @@ import nmt {
./modules/programs/terminator ./modules/programs/terminator
./modules/programs/waybar ./modules/programs/waybar
./modules/programs/xmobar ./modules/programs/xmobar
./modules/programs/yt-dlp
./modules/services/barrier ./modules/services/barrier
./modules/services/devilspie2 ./modules/services/devilspie2
./modules/services/dropbox ./modules/services/dropbox

View file

@ -0,0 +1 @@
{ yt-dlp-simple-config = ./yt-dlp-simple-config.nix; }

View file

@ -0,0 +1,8 @@
--downloader aria2c
--downloader-args aria2c:'-c -x8 -s8 -k1M'
--no-embed-subs
--embed-thumbnail
--sub-langs all
--trim-filenames 30
--config-locations /home/user/.yt-dlp.conf

View file

@ -0,0 +1,27 @@
{ ... }:
{
programs.yt-dlp = {
enable = true;
settings = {
embed-thumbnail = true;
embed-subs = false;
sub-langs = "all";
downloader = "aria2c";
downloader-args = "aria2c:'-c -x8 -s8 -k1M'";
trim-filenames = 30;
};
extraConfig = ''
--config-locations /home/user/.yt-dlp.conf
'';
};
test.stubs.yt-dlp = { };
nmt.script = ''
assertFileExists home-files/.config/yt-dlp/config
assertFileContent home-files/.config/yt-dlp/config ${
./yt-dlp-simple-config-expected
}
'';
}