diff options
Diffstat (limited to 'profiles/homeserver')
| -rw-r--r-- | profiles/homeserver/transmission.nix | 105 |
1 files changed, 62 insertions, 43 deletions
diff --git a/profiles/homeserver/transmission.nix b/profiles/homeserver/transmission.nix index 4be0d1b..8d047d7 100644 --- a/profiles/homeserver/transmission.nix +++ b/profiles/homeserver/transmission.nix @@ -1,34 +1,47 @@ -{ config, lib, ... }: with lib; let - multimediaUsernames = [ - "prowlarr" - "sonarr" - "radarr" - "bazarr" - "jellyfin" - "transmission" - ]; - mkMultimediaUsers = names: mergeAttrsList (imap0 (i: name: {${name} = { - uid = 2007 + i; - isSystemUser = true; - group = name; - createHome = false; - };}) names); - mkMultimediaGroups = names: mergeAttrsList (map (name: {${name} = { };}) names); - in { +{ + config, + lib, + ... +}: +with lib; let + multimediaUsernames = [ + "prowlarr" + "sonarr" + "radarr" + "bazarr" + "jellyfin" + "transmission" + ]; + mkMultimediaUsers = names: + mergeAttrsList (imap0 (i: name: { + ${name} = { + uid = 2007 + i; + isSystemUser = true; + group = name; + createHome = false; + }; + }) + names); + mkMultimediaGroups = names: mergeAttrsList (map (name: {${name} = {};}) names); +in { virtualisation.docker.rootless = { enable = true; setSocketVariable = true; }; - users.groups = { - multimedia = { - gid = 1994; - members = multimediaUsernames; - }; - } // mkMultimediaGroups multimediaUsernames; - users.users = { - ${my.username}.extraGroups = [ "multimedia" ]; - } // mkMultimediaUsers multimediaUsernames; + users.groups = + { + multimedia = { + gid = 1994; + members = multimediaUsernames; + }; + } + // mkMultimediaGroups multimediaUsernames; + users.users = + { + ${my.username}.extraGroups = ["multimedia"]; + } + // mkMultimediaUsers multimediaUsernames; systemd.tmpfiles.rules = [ "d /data 0770 - multimedia - -" @@ -36,13 +49,13 @@ services.nginx = { virtualHosts = { - "sonarr.${my.domain}" = { locations."/" = { proxyPass = "http://127.0.0.1:8989"; }; }; - "radarr.${my.domain}" = { locations."/" = { proxyPass = "http://127.0.0.1:7878"; }; }; - "bazarr.${my.domain}" = { locations."/" = { proxyPass = "http://127.0.0.1:${toString config.services.bazarr.listenPort}"; }; }; + "sonarr.${my.domain}" = {locations."/" = {proxyPass = "http://127.0.0.1:8989";};}; + "radarr.${my.domain}" = {locations."/" = {proxyPass = "http://127.0.0.1:7878";};}; + "bazarr.${my.domain}" = {locations."/" = {proxyPass = "http://127.0.0.1:${toString config.services.bazarr.listenPort}";};}; # "readarr.${my.domain}" = { locations."/" = { proxyPass = "http://127.0.0.1:8787"; }; }; - "prowlarr.${my.domain}" = { locations."/" = { proxyPass = "http://127.0.0.1:9696"; }; }; - "transmission.${my.domain}" = { locations."/" = { proxyPass = "http://127.0.0.1:9091"; }; }; - "jellyfin.${my.domain}" = { locations."/" = { proxyPass = "http://127.0.0.1:8096"; }; }; + "prowlarr.${my.domain}" = {locations."/" = {proxyPass = "http://127.0.0.1:9696";};}; + "transmission.${my.domain}" = {locations."/" = {proxyPass = "http://127.0.0.1:9091";};}; + "jellyfin.${my.domain}" = {locations."/" = {proxyPass = "http://127.0.0.1:8096";};}; }; }; # services = { @@ -53,6 +66,8 @@ # readarr = { enable = true; group = "multimedia"; }; # prowlarr = { enable = true; }; # }; + + # TODO: use one shared data drive virtualisation.oci-containers = { backend = "docker"; containers = { @@ -64,7 +79,8 @@ PGID = "${toString config.users.groups.multimedia.gid}"; }; volumes = [ - "/data/config/prowlarr/data:/config" + # "/data/config/prowlarr/data:/config" + "/data:/data" ]; }; bazarr = { @@ -75,8 +91,9 @@ PGID = "${toString config.users.groups.multimedia.gid}"; }; volumes = [ - "/data/media:/data" - "/data/config/bazarr/data:/config" + # "/data/media:/data" + # "/data/config/bazarr/data:/config" + "/data:/data" ]; }; radarr = { @@ -87,8 +104,8 @@ PGID = "${toString config.users.groups.multimedia.gid}"; }; volumes = [ + # "/data/config/radarr/data:/config" "/data:/data" - "/data/config/radarr/data:/config" ]; }; sonarr = { @@ -99,8 +116,8 @@ PGID = "${toString config.users.groups.multimedia.gid}"; }; volumes = [ + # "/data/config/sonarr/data:/config" "/data:/data" - "/data/config/sonarr/data:/config" ]; }; jellyfin = { @@ -108,18 +125,20 @@ extraOptions = ["--net=host"]; user = "${toString config.users.users.jellyfin.uid}:${toString config.users.groups.multimedia.gid}"; volumes = [ - "/data/media:/media" - "/data/config/jellyfin/config:/config" - "/data/config/jellyfin/cache:/cache" + # "/data/media:/media" + # "/data/config/jellyfin/config:/config" + # "/data/config/jellyfin/cache:/cache" + "/data:/data" ]; }; transmission = { image = "haugene/transmission-openvpn"; extraOptions = ["--cap-add=NET_ADMIN" "--group-add=${toString config.users.groups.multimedia.gid}"]; volumes = [ - "/data/config/ovpn:/etc/openvpn/custom" - "/data/config/transmission:/config" - "/data/torrents:/data/torrents" + # "/data/config/ovpn:/etc/openvpn/custom" + # "/data/config/transmission:/config" + # "/data/torrents:/data/torrents" + "/data:/data" ]; ports = [ "9091:9091" |
