{ config, containerCfg, pkgs, lib, builder, name,... }: let serverCfg = config.syscfg.server; image = pkgs.dockerTools.streamLayeredImage { name = pkgs.handbrake.name; tag = pkgs.handbrake.version; #contents = [ pkgs.coreutils ]; config = { Entrypoint = [ "${pkgs.handbrake}/bin/HandBrakeCLI" ]; WorkingDir = "/storage"; Env = [ "PATH=${lib.makeBinPath [ pkgs.handbrake ]}"]; }; }; in { sops = false; # Enabled to manage potential API keys or secure paths db = false; paths = [{ path = "${serverCfg.configPath}/handbrake/config"; mode = "0755"; } { path = "${serverCfg.dataPath}/handbrake/"; mode = "0755"; }]; containers = { server = builder.mkContainer { subdomain = containerCfg.subdomain; imageStream = image; port = 5800; extraEnv = { TZ = "UTC"; USER_ID = "1000"; GROUP_ID = "1000"; AUTOMATED_CONVERSION_PRESET = "Very Fast 1080p30"; AUTOMATED_CONVERSION_FORMAT = "mp4"; AUTOMATED_CONVERSION_OUTPUT_DIR = "/output"; AUTOMATED_CONVERSION_WATCH_DIR = "AUTO"; AUTOMATED_CONVERSION_KEEP_SOURCE = "1"; AUTOMATED_CONVERSION_OVERWRITE_OUTPUT = "0"; AUTOMATED_CONVERSION_VIDEO_FILE_EXTENSIONS = ""; AUTOMATED_CONVERSION_NON_VIDEO_FILE_ACTION = "ignore"; AUTOMATED_CONVERSION_NON_VIDEO_FILE_EXTENSIONS = "jpg jpeg bmp png gif txt nfo"; AUTOMATED_CONVERSION_MAX_WATCH_FOLDERS = "5"; AUTOMATED_CONVERSION_CHECK_INTERVAL = "5"; AUTOMATED_CONVERSION_HANDBRAKE_CUSTOM_ARGS = ""; AUTOMATED_CONVERSION_NO_GUI_PROGRESS = "0"; AUTOMATED_CONVERSION_USE_TRASH = "0"; HANDBRAKE_GUI = "1"; }; extraLabels = { } // (if serverCfg.containers ? authentik then { "traefik.http.routers.${containerCfg.subdomain}.middlewares" = "authentik"; } else {}); overrides = { volumes = [ "${serverCfg.configPath}/handbrake/config:/config:rw" "${serverCfg.dataPath}/handbrake/watch:/watch:rw" "${serverCfg.dataPath}/handbrake/output:/output:rw" ]; }; }; }; setup = { trigger = "server"; script = pkgs.writeShellScript "setup" '' mkdir -p ${serverCfg.dataPath}/handbrake/{watch,output} ''; }; }