summaryrefslogtreecommitdiff
path: root/profiles
diff options
context:
space:
mode:
authorMike Vink <mike@pionative.com>2024-07-14 12:05:31 +0200
committerMike Vink <mike@pionative.com>2024-07-14 12:05:31 +0200
commitf082e711f9305aebc9f8350dc5033fbeae9ae817 (patch)
tree4035570985849e58cbd1cd113a139ad91940c2d4 /profiles
parent98c31cac3e931023b5afeb209af6b6eed2a025c7 (diff)
finish
Diffstat (limited to 'profiles')
-rw-r--r--profiles/homeserver/transmission.nix57
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"