diff options
| author | Mike Vink <mike@pionative.com> | 2024-07-14 12:05:31 +0200 |
|---|---|---|
| committer | Mike Vink <mike@pionative.com> | 2024-07-14 12:05:31 +0200 |
| commit | f082e711f9305aebc9f8350dc5033fbeae9ae817 (patch) | |
| tree | 4035570985849e58cbd1cd113a139ad91940c2d4 /profiles | |
| parent | 98c31cac3e931023b5afeb209af6b6eed2a025c7 (diff) | |
finish
Diffstat (limited to 'profiles')
| -rw-r--r-- | profiles/homeserver/transmission.nix | 57 |
1 files changed, 49 insertions, 8 deletions
diff --git a/profiles/homeserver/transmission.nix b/profiles/homeserver/transmission.nix index d871e96..4be0d1b 100644 --- a/profiles/homeserver/transmission.nix +++ b/profiles/homeserver/transmission.nix @@ -1,11 +1,34 @@ -{ config, lib, ... }: with lib; { +{ 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 = { }; - users.users.${my.username}.extraGroups = [ "multimedia" ]; + 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,6 +59,10 @@ prowlarr = { image = "linuxserver/prowlarr"; extraOptions = ["--net=host"]; + environment = { + PUID = "${toString config.users.users.prowlarr.uid}"; + PGID = "${toString config.users.groups.multimedia.gid}"; + }; volumes = [ "/data/config/prowlarr/data:/config" ]; @@ -43,38 +70,52 @@ bazarr = { image = "linuxserver/bazarr"; extraOptions = ["--net=host"]; + environment = { + PUID = "${toString config.users.users.bazarr.uid}"; + PGID = "${toString config.users.groups.multimedia.gid}"; + }; volumes = [ "/data/media:/data" - "/data/config/prowlarr/data:/config" + "/data/config/bazarr/data:/config" ]; }; radarr = { image = "linuxserver/radarr"; extraOptions = ["--net=host"]; + environment = { + PUID = "${toString config.users.users.radarr.uid}"; + PGID = "${toString config.users.groups.multimedia.gid}"; + }; volumes = [ - "/data/media:/data" + "/data:/data" "/data/config/radarr/data:/config" ]; }; sonarr = { image = "linuxserver/sonarr"; extraOptions = ["--net=host"]; + environment = { + PUID = "${toString config.users.users.sonarr.uid}"; + PGID = "${toString config.users.groups.multimedia.gid}"; + }; volumes = [ - "/data/media:/data" + "/data:/data" "/data/config/sonarr/data:/config" ]; }; jellyfin = { image = "jellyfin/jellyfin"; 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:/config" + "/data/config/jellyfin/cache:/cache" ]; }; transmission = { image = "haugene/transmission-openvpn"; - extraOptions = ["--cap-add=NET_ADMIN"]; + extraOptions = ["--cap-add=NET_ADMIN" "--group-add=${toString config.users.groups.multimedia.gid}"]; volumes = [ "/data/config/ovpn:/etc/openvpn/custom" "/data/config/transmission:/config" |
