59 lines
1.6 KiB
Nix
59 lines
1.6 KiB
Nix
{ config, containerCfg, pkgs, lib, builder, name,... }:
|
|
let
|
|
serverCfg = config.syscfg.server;
|
|
version = "latest";
|
|
|
|
routerName = if containerCfg.subpath != null
|
|
then "${containerCfg.subdomain}-${lib.strings.sanitizeDerivationName containerCfg.subpath}"
|
|
else containerCfg.subdomain;
|
|
in {
|
|
|
|
paths = [{
|
|
path = "${serverCfg.configPath}/handbrake/config";
|
|
mode = "0755";
|
|
} {
|
|
path = "${serverCfg.dataPath}/handbrake/";
|
|
mode = "0755";
|
|
}];
|
|
|
|
containers = {
|
|
server = builder.mkContainer {
|
|
subdomain = containerCfg.subdomain;
|
|
subpath = containerCfg.subpath;
|
|
image = "ghcr.io/jlesage/handbrake:${version}";
|
|
port = 5800;
|
|
|
|
extraEnv = {
|
|
USER_ID = "1000";
|
|
GROUP_ID = "1000";
|
|
AUTOMATED_CONVERSION_PRESET = "Custom/AV1 MKV 1080p30";
|
|
AUTOMATED_CONVERSION_FORMAT = "mkv";
|
|
AUTOMATED_CONVERSION_OUTPUT_SUBDIR = "SAME_AS_SRC";
|
|
};
|
|
extraLabels = { } // (if serverCfg.containers ? authentik then {
|
|
"traefik.http.routers.${routerName}.middlewares" = "authentik";
|
|
} else {});
|
|
extraOptions = [
|
|
"--tmpfs=/tmp:rw,noexec,nosuid,size=512m"
|
|
];
|
|
|
|
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}
|
|
|
|
'';
|
|
};
|
|
|
|
} |