summaryrefslogtreecommitdiff
path: root/profiles/homeserver
diff options
context:
space:
mode:
Diffstat (limited to 'profiles/homeserver')
-rw-r--r--profiles/homeserver/transmission.nix105
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"