mirror of
https://github.com/Swarsel/.dotfiles.git
synced 2025-12-06 09:07:21 +01:00
180 lines
5 KiB
Nix
180 lines
5 KiB
Nix
{ self, pkgs, lib, config, ... }:
|
|
let
|
|
serviceName = "transmission";
|
|
serviceDomain = config.repo.secrets.common.services.domains.${serviceName};
|
|
|
|
lidarrUser = "lidarr";
|
|
lidarrGroup = lidarrUser;
|
|
lidarrPort = 8686;
|
|
radarrUser = "radarr";
|
|
radarrGroup = radarrUser;
|
|
radarrPort = 7878;
|
|
sonarrUser = "sonarr";
|
|
sonarrGroup = sonarrUser;
|
|
sonarrPort = 8989;
|
|
readarrUser = "readarr";
|
|
readarrGroup = readarrUser;
|
|
readarrPort = 8787;
|
|
prowlarrUser = "prowlarr";
|
|
prowlarrGroup = prowlarrUser;
|
|
prowlarrPort = 9696;
|
|
in
|
|
{
|
|
options.swarselmodules.server.${serviceName} = lib.mkEnableOption "enable ${serviceName} and friends on server";
|
|
config = lib.mkIf config.swarselmodules.server.${serviceName} {
|
|
|
|
# this user/group section is probably unneeded
|
|
users = {
|
|
groups = {
|
|
dockeruser = {
|
|
gid = 1155;
|
|
};
|
|
"${radarrGroup}" = { };
|
|
"${readarrGroup}" = { };
|
|
"${sonarrGroup}" = { };
|
|
"${lidarrGroup}" = { };
|
|
"${prowlarrGroup}" = { };
|
|
};
|
|
users = {
|
|
dockeruser = {
|
|
isSystemUser = true;
|
|
uid = 1155;
|
|
group = "docker";
|
|
extraGroups = [ "users" ];
|
|
};
|
|
"${radarrUser}" = {
|
|
isSystemUser = true;
|
|
group = radarrGroup;
|
|
extraGroups = [ "users" ];
|
|
};
|
|
"${readarrGroup}" = {
|
|
isSystemUser = true;
|
|
group = readarrGroup;
|
|
extraGroups = [ "users" ];
|
|
};
|
|
"${sonarrGroup}" = {
|
|
isSystemUser = true;
|
|
group = sonarrGroup;
|
|
extraGroups = [ "users" ];
|
|
};
|
|
"${lidarrUser}" = {
|
|
isSystemUser = true;
|
|
group = lidarrGroup;
|
|
extraGroups = [ "users" ];
|
|
};
|
|
"${prowlarrGroup}" = {
|
|
isSystemUser = true;
|
|
group = prowlarrGroup;
|
|
extraGroups = [ "users" ];
|
|
};
|
|
};
|
|
};
|
|
|
|
virtualisation.docker.enable = true;
|
|
environment.systemPackages = with pkgs; [
|
|
docker
|
|
];
|
|
|
|
topology.self.services = {
|
|
radarr.info = "https://${serviceDomain}/radarr";
|
|
readarr = {
|
|
name = "Readarr";
|
|
info = "https://${serviceDomain}/readarr";
|
|
icon = "${self}/files/topology-images/readarr.png";
|
|
};
|
|
sonarr.info = "https://${serviceDomain}/sonarr";
|
|
lidarr.info = "https://${serviceDomain}/lidarr";
|
|
prowlarr.info = "https://${serviceDomain}/prowlarr";
|
|
};
|
|
|
|
globals.services.transmission.domain = serviceDomain;
|
|
|
|
services = {
|
|
radarr = {
|
|
enable = true;
|
|
user = radarrUser;
|
|
group = radarrGroup;
|
|
settings.server.port = radarrPort;
|
|
openFirewall = true;
|
|
dataDir = "/Vault/data/radarr";
|
|
};
|
|
readarr = {
|
|
enable = true;
|
|
user = readarrUser;
|
|
group = readarrGroup;
|
|
settings.server.port = readarrPort;
|
|
openFirewall = true;
|
|
dataDir = "/Vault/data/readarr";
|
|
};
|
|
sonarr = {
|
|
enable = true;
|
|
user = sonarrUser;
|
|
group = sonarrGroup;
|
|
settings.server.port = sonarrPort;
|
|
openFirewall = true;
|
|
dataDir = "/Vault/data/sonarr";
|
|
};
|
|
lidarr = {
|
|
enable = true;
|
|
user = lidarrUser;
|
|
group = lidarrGroup;
|
|
settings.server.port = lidarrPort;
|
|
openFirewall = true;
|
|
dataDir = "/Vault/data/lidarr";
|
|
};
|
|
prowlarr = {
|
|
enable = true;
|
|
settings.server.port = prowlarrPort;
|
|
openFirewall = true;
|
|
};
|
|
|
|
nginx = {
|
|
virtualHosts = {
|
|
"${serviceDomain}" = {
|
|
enableACME = false;
|
|
forceSSL = false;
|
|
acmeRoot = null;
|
|
locations = {
|
|
"/" = {
|
|
proxyPass = "http://localhost:9091";
|
|
extraConfig = ''
|
|
client_max_body_size 0;
|
|
'';
|
|
};
|
|
"/radarr" = {
|
|
proxyPass = "http://localhost:${builtins.toString radarrPort}";
|
|
extraConfig = ''
|
|
client_max_body_size 0;
|
|
'';
|
|
};
|
|
"/readarr" = {
|
|
proxyPass = "http://localhost:${builtins.toString readarrPort}";
|
|
extraConfig = ''
|
|
client_max_body_size 0;
|
|
'';
|
|
};
|
|
"/sonarr" = {
|
|
proxyPass = "http://localhost:${builtins.toString sonarrPort}";
|
|
extraConfig = ''
|
|
client_max_body_size 0;
|
|
'';
|
|
};
|
|
"/lidarr" = {
|
|
proxyPass = "http://localhost:${builtins.toString lidarrPort}";
|
|
extraConfig = ''
|
|
client_max_body_size 0;
|
|
'';
|
|
};
|
|
"/prowlarr" = {
|
|
proxyPass = "http://localhost:${builtins.toString prowlarrPort}";
|
|
extraConfig = ''
|
|
client_max_body_size 0;
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|