Files
nixconfig/modules/server/containers/apps/handbrake.nix
2026-05-18 21:30:32 +02:00

76 lines
2.3 KiB
Nix

{ 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}
'';
};
}