{ config, inputs, lib, pkgs, ... }: { options.my.shell.multimedia = { enable = lib.mkEnableOption "multimedia CLI tools and codecs"; users = lib.mkOption { type = inputs.self.lib.usersOptionType lib; default = config.my.toggleUsers.shell; description = "Users to install multimedia shell tools for"; }; }; config = lib.mkIf config.my.shell.multimedia.enable { sops.secrets."gallery-dl/secrets" = let user = inputs.self.lib.getFirstUser config.my.shell.multimedia.users; in { sopsFile = ../../secrets/gallery.yaml; owner = user; mode = "0400"; }; home-manager.users = inputs.self.lib.mkHomeManagerUsers lib config.my.shell.multimedia.users (user: { programs = { yt-dlp = { enable = true; settings = { embed-thumbnail = true; embed-subs = true; sub-langs = "all"; cookies-from-browser = "firefox+gnomekeyring:/home/${user}/.librewolf/${user}"; }; }; gallery-dl = { enable = true; settings = inputs.self.lib.importDotfile ../../dotfiles/gallery-dl.nix; }; ${config.my.shell.type} = { initExtra = lib.mkAfter '' if [ -r "${config.sops.secrets."gallery-dl/secrets".path}" ]; then set -a # automatically export all variables source "${config.sops.secrets."gallery-dl/secrets".path}" set +a # stop automatically exporting fi ''; }; }; }); users.users = let packages = builtins.attrValues { inherit (pkgs) ffmpeg # not ffmpreg, the coolest video conversion tool! imagemagick # photoshop what?? ffpb # make ffmpeg encoding... a bit fun ; }; in inputs.self.lib.mkUserPackages lib config.my.shell.multimedia.users packages; }; }