Update modules/server/containers/apps/servarr.nix
This commit is contained in:
@@ -1,3 +1,73 @@
|
||||
{...}:{
|
||||
|
||||
{ config, containerCfg, pkgs, lib, builder, name, ... }:
|
||||
let
|
||||
serverCfg = config.syscfg.server;
|
||||
|
||||
mkServarrImage = appName: appPkg: binaryPath: pkgs.dockerTools.streamLayeredImage {
|
||||
name = appPkg.name;
|
||||
tag = appPkg.version;
|
||||
contents = with pkgs; [ cacert openssl ];
|
||||
config = {
|
||||
Cmd = [ "${appPkg}/${binaryPath}" "-nobrowser" "-data=/config" ];
|
||||
Env = [ "DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1" ];
|
||||
};
|
||||
};
|
||||
|
||||
images = {
|
||||
prowlarr = mkServarrImage "prowlarr" pkgs.prowlarr "bin/Prowlarr";
|
||||
radarr = mkServarrImage "radarr" pkgs.radarr "bin/Radarr";
|
||||
sonarr = mkServarrImage "sonarr" pkgs.sonarr "bin/Sonarr";
|
||||
bazarr = mkPythonImage "bazarr" pkgs.bazarr "bin/bazarr";
|
||||
lidarr = mkServarrImage "lidarr" pkgs.lidarr "bin/Lidarr";
|
||||
readarr = mkServarrImage "readarr" pkgs.readarr "bin/Readarr";
|
||||
};
|
||||
|
||||
sharedVolumes = [
|
||||
"${serverCfg.mediaPath or "/mnt/media"}:/media" # Fast hardlinking requires a single shared root
|
||||
"${serverCfg.configPath}/servarr:/config-root"
|
||||
];
|
||||
in {
|
||||
# Initialize atomic configuration structures
|
||||
paths = [
|
||||
{ path = "${serverCfg.configPath}/servarr/prowlarr"; mode = "0755"; }
|
||||
{ path = "${serverCfg.configPath}/servarr/radarr"; mode = "0755"; }
|
||||
{ path = "${serverCfg.configPath}/servarr/sonarr"; mode = "0755"; }
|
||||
];
|
||||
|
||||
containers = {
|
||||
prowlarr = builder.mkContainer {
|
||||
subdomain = containerCfg.subdomain;
|
||||
subpath = "prowlarr";
|
||||
imageStream = images.prowlarr;
|
||||
port = 9696;
|
||||
secret = name;
|
||||
overrides.volumes = sharedVolumes ++ [ "${serverCfg.configPath}/servarr/prowlarr:/config" ];
|
||||
};
|
||||
|
||||
radarr = builder.mkContainer {
|
||||
subdomain = containerCfg.subdomain;
|
||||
subpath = "radarr";
|
||||
imageStream = images.radarr;
|
||||
port = 7878;
|
||||
secret = name;
|
||||
overrides.volumes = sharedVolumes ++ [ "${serverCfg.configPath}/servarr/radarr:/config" ];
|
||||
};
|
||||
|
||||
sonarr = builder.mkContainer {
|
||||
subdomain = containerCfg.subdomain
|
||||
subpath = "sonarr";
|
||||
imageStream = images.sonarr;
|
||||
port = 8989;
|
||||
secret = name;
|
||||
overrides.volumes = sharedVolumes ++ [ "${serverCfg.configPath}/servarr/sonarr:/config" ];
|
||||
};
|
||||
};
|
||||
|
||||
# setup = {
|
||||
# trigger = "prowlarr"; # Triggers atomic environment verification on main controller
|
||||
# envFile = config.sops.secrets."SERVARR".path;
|
||||
# script = pkgs.writeShellScript "setup-servarr" ''
|
||||
# echo "Validating multi-container path permission nodes..."
|
||||
# # mkdir -p ${serverCfg.configPath}/servarr/{prowlarr,radarr,sonarr}
|
||||
# '';
|
||||
# };
|
||||
}
|
||||
Reference in New Issue
Block a user