242 lines
10 KiB
Nix
242 lines
10 KiB
Nix
{ lib, config, ... }:
|
|
# This file sets up perms for MEDIA only (not state dirs) on this system since we are running nixarr on another host but NFS mounting the data drive from here.
|
|
let
|
|
globals = config.util-nixarr.globals;
|
|
nixarr = {
|
|
mediaDir = "/data/nixarr/media";
|
|
};
|
|
|
|
pinchflatMediaDir = "/data/pinchflat/media";
|
|
pinchflat = true;
|
|
pinchflatId = 186;
|
|
|
|
# Matches up to my h001/mods/nixarr|pinchflat.nix files
|
|
audiobookshelf = false;
|
|
jellyfin = true;
|
|
komga = false;
|
|
lidarr = false;
|
|
plex = false;
|
|
radarr = true;
|
|
readarr-audiobook = false;
|
|
readarr = false;
|
|
sabnzbd = true;
|
|
sonarr = true;
|
|
transmission = true;
|
|
whisparr = false;
|
|
in
|
|
lib.mkMerge [
|
|
(lib.mkIf pinchflat {
|
|
users = {
|
|
groups.pinchflat.gid = pinchflatId;
|
|
users.pinchflat = {
|
|
isSystemUser = true;
|
|
group = "pinchflat";
|
|
uid = pinchflatId;
|
|
};
|
|
};
|
|
|
|
systemd.tmpfiles.rules = [
|
|
"d '${pinchflatMediaDir}' 0775 ${globals.libraryOwner.user} ${globals.libraryOwner.group} - -"
|
|
];
|
|
})
|
|
(lib.mkIf audiobookshelf {
|
|
users = {
|
|
groups.${globals.audiobookshelf.group}.gid = globals.gids.${globals.audiobookshelf.group};
|
|
users.${globals.audiobookshelf.user} = {
|
|
isSystemUser = true;
|
|
group = globals.audiobookshelf.group;
|
|
uid = globals.uids.${globals.audiobookshelf.user};
|
|
};
|
|
};
|
|
|
|
systemd.tmpfiles.rules = [
|
|
"d '${nixarr.mediaDir}/library/audiobooks' 0775 ${globals.libraryOwner.user} ${globals.libraryOwner.group} - -"
|
|
"d '${nixarr.mediaDir}/library/podcasts' 0775 ${globals.libraryOwner.user} ${globals.libraryOwner.group} - -"
|
|
];
|
|
})
|
|
(lib.mkIf jellyfin {
|
|
users = {
|
|
groups.${globals.jellyfin.group}.gid = globals.gids.${globals.jellyfin.group};
|
|
users.${globals.jellyfin.user} = {
|
|
isSystemUser = true;
|
|
group = globals.jellyfin.group;
|
|
uid = globals.uids.${globals.jellyfin.user};
|
|
};
|
|
};
|
|
|
|
systemd.tmpfiles.rules = [
|
|
"d '${nixarr.mediaDir}/library' 0775 ${globals.libraryOwner.user} ${globals.libraryOwner.group} - -"
|
|
"d '${nixarr.mediaDir}/library/shows' 0775 ${globals.libraryOwner.user} ${globals.libraryOwner.group} - -"
|
|
"d '${nixarr.mediaDir}/library/movies' 0775 ${globals.libraryOwner.user} ${globals.libraryOwner.group} - -"
|
|
"d '${nixarr.mediaDir}/library/music' 0775 ${globals.libraryOwner.user} ${globals.libraryOwner.group} - -"
|
|
"d '${nixarr.mediaDir}/library/books' 0775 ${globals.libraryOwner.user} ${globals.libraryOwner.group} - -"
|
|
"d '${nixarr.mediaDir}/library/audiobooks' 0775 ${globals.libraryOwner.user} ${globals.libraryOwner.group} - -"
|
|
];
|
|
})
|
|
(lib.mkIf komga {
|
|
users = {
|
|
groups.${globals.komga.group}.gid = globals.gids.${globals.komga.group};
|
|
users.${globals.komga.user} = {
|
|
isSystemUser = true;
|
|
group = globals.komga.group;
|
|
uid = globals.uids.${globals.komga.user};
|
|
};
|
|
};
|
|
|
|
systemd.tmpfiles.rules = [
|
|
"d '${nixarr.mediaDir}/library' 0775 ${globals.libraryOwner.user} ${globals.libraryOwner.group} - -"
|
|
"d '${nixarr.mediaDir}/library/books' 0775 ${globals.libraryOwner.user} ${globals.libraryOwner.group} - -"
|
|
];
|
|
})
|
|
(lib.mkIf lidarr {
|
|
users = {
|
|
groups.${globals.lidarr.group}.gid = globals.gids.${globals.lidarr.group};
|
|
users.${globals.lidarr.user} = {
|
|
isSystemUser = true;
|
|
group = globals.lidarr.group;
|
|
uid = globals.uids.${globals.lidarr.user};
|
|
};
|
|
};
|
|
|
|
systemd.tmpfiles.rules = [
|
|
"d '${nixarr.mediaDir}/library' 0775 ${globals.libraryOwner.user} ${globals.libraryOwner.group} - -"
|
|
"d '${nixarr.mediaDir}/library/music' 0775 ${globals.libraryOwner.user} ${globals.libraryOwner.group} - -"
|
|
];
|
|
})
|
|
(lib.mkIf plex {
|
|
users = {
|
|
groups.${globals.plex.group}.gid = globals.gids.${globals.plex.group};
|
|
users.${globals.plex.user} = {
|
|
isSystemUser = true;
|
|
group = globals.plex.group;
|
|
uid = globals.uids.${globals.plex.user};
|
|
};
|
|
};
|
|
|
|
systemd.tmpfiles.rules = [
|
|
"d '${nixarr.mediaDir}/library' 0775 ${globals.libraryOwner.user} ${globals.libraryOwner.group} - -"
|
|
"d '${nixarr.mediaDir}/library/shows' 0775 ${globals.libraryOwner.user} ${globals.libraryOwner.group} - -"
|
|
"d '${nixarr.mediaDir}/library/movies' 0775 ${globals.libraryOwner.user} ${globals.libraryOwner.group} - -"
|
|
"d '${nixarr.mediaDir}/library/music' 0775 ${globals.libraryOwner.user} ${globals.libraryOwner.group} - -"
|
|
"d '${nixarr.mediaDir}/library/books' 0775 ${globals.libraryOwner.user} ${globals.libraryOwner.group} - -"
|
|
"d '${nixarr.mediaDir}/library/audiobooks' 0775 ${globals.libraryOwner.user} ${globals.libraryOwner.group} - -"
|
|
];
|
|
})
|
|
(lib.mkIf radarr {
|
|
systemd.tmpfiles.rules = [
|
|
"d '${nixarr.mediaDir}/library' 0775 ${globals.libraryOwner.user} ${globals.libraryOwner.group} - -"
|
|
"d '${nixarr.mediaDir}/library/movies' 0775 ${globals.libraryOwner.user} ${globals.libraryOwner.group} - -"
|
|
];
|
|
|
|
users = {
|
|
groups.${globals.radarr.group}.gid = globals.gids.${globals.radarr.group};
|
|
users.${globals.radarr.user} = {
|
|
isSystemUser = true;
|
|
group = globals.radarr.group;
|
|
uid = globals.uids.${globals.radarr.user};
|
|
};
|
|
};
|
|
})
|
|
(lib.mkIf readarr-audiobook {
|
|
users = {
|
|
groups.${globals.readarr-audiobook.group}.gid = globals.gids.${globals.readarr-audiobook.group};
|
|
users.${globals.readarr-audiobook.user} = {
|
|
isSystemUser = true;
|
|
group = globals.readarr-audiobook.group;
|
|
uid = globals.uids.${globals.readarr-audiobook.user};
|
|
};
|
|
};
|
|
|
|
systemd.tmpfiles.rules = [
|
|
"d '${nixarr.mediaDir}/library' 0775 ${globals.libraryOwner.user} ${globals.libraryOwner.group} - -"
|
|
"d '${nixarr.mediaDir}/library/audiobooks' 0775 ${globals.libraryOwner.user} ${globals.libraryOwner.group} - -"
|
|
];
|
|
})
|
|
(lib.mkIf readarr {
|
|
users = {
|
|
groups.${globals.readarr.group}.gid = globals.gids.${globals.readarr.group};
|
|
users.${globals.readarr.user} = {
|
|
isSystemUser = true;
|
|
group = globals.readarr.group;
|
|
uid = globals.uids.${globals.readarr.user};
|
|
};
|
|
};
|
|
|
|
systemd.tmpfiles.rules = [
|
|
"d '${nixarr.mediaDir}/library' 0775 ${globals.libraryOwner.user} ${globals.libraryOwner.group} - -"
|
|
"d '${nixarr.mediaDir}/library/books' 0775 ${globals.libraryOwner.user} ${globals.libraryOwner.group} - -"
|
|
];
|
|
})
|
|
(lib.mkIf sabnzbd {
|
|
users = {
|
|
groups.${globals.sabnzbd.group}.gid = globals.gids.${globals.sabnzbd.group};
|
|
users.${globals.sabnzbd.user} = {
|
|
isSystemUser = true;
|
|
group = globals.sabnzbd.group;
|
|
uid = globals.uids.${globals.sabnzbd.user};
|
|
};
|
|
};
|
|
|
|
systemd.tmpfiles.rules = [
|
|
"d '${nixarr.mediaDir}/usenet' 0755 ${globals.sabnzbd.user} ${globals.sabnzbd.group} - -"
|
|
"d '${nixarr.mediaDir}/usenet/.incomplete' 0755 ${globals.sabnzbd.user} ${globals.sabnzbd.group} - -"
|
|
"d '${nixarr.mediaDir}/usenet/.watch' 0755 ${globals.sabnzbd.user} ${globals.sabnzbd.group} - -"
|
|
"d '${nixarr.mediaDir}/usenet/manual' 0775 ${globals.sabnzbd.user} ${globals.sabnzbd.group} - -"
|
|
"d '${nixarr.mediaDir}/usenet/lidarr' 0775 ${globals.sabnzbd.user} ${globals.sabnzbd.group} - -"
|
|
"d '${nixarr.mediaDir}/usenet/radarr' 0775 ${globals.sabnzbd.user} ${globals.sabnzbd.group} - -"
|
|
"d '${nixarr.mediaDir}/usenet/sonarr' 0775 ${globals.sabnzbd.user} ${globals.sabnzbd.group} - -"
|
|
"d '${nixarr.mediaDir}/usenet/readarr' 0775 ${globals.sabnzbd.user} ${globals.sabnzbd.group} - -"
|
|
];
|
|
})
|
|
(lib.mkIf sonarr {
|
|
users = {
|
|
groups.${globals.sonarr.group}.gid = globals.gids.${globals.sonarr.group};
|
|
users.${globals.sonarr.user} = {
|
|
isSystemUser = true;
|
|
group = globals.sonarr.group;
|
|
uid = globals.uids.${globals.sonarr.user};
|
|
};
|
|
};
|
|
|
|
systemd.tmpfiles.rules = [
|
|
"d '${nixarr.mediaDir}/library' 0775 ${globals.libraryOwner.user} ${globals.libraryOwner.group} - -"
|
|
"d '${nixarr.mediaDir}/library/shows' 0775 ${globals.libraryOwner.user} ${globals.libraryOwner.group} - -"
|
|
];
|
|
})
|
|
(lib.mkIf transmission {
|
|
users = {
|
|
groups.${globals.transmission.group}.gid = globals.gids.${globals.transmission.group};
|
|
users.${globals.transmission.user} = {
|
|
isSystemUser = true;
|
|
group = globals.transmission.group;
|
|
uid = globals.uids.${globals.transmission.user};
|
|
};
|
|
};
|
|
|
|
systemd.tmpfiles.rules = [
|
|
"d '${nixarr.mediaDir}/torrents' 0755 ${globals.transmission.user} ${globals.transmission.group} - -"
|
|
"d '${nixarr.mediaDir}/torrents/.incomplete' 0755 ${globals.transmission.user} ${globals.transmission.group} - -"
|
|
"d '${nixarr.mediaDir}/torrents/.watch' 0755 ${globals.transmission.user} ${globals.transmission.group} - -"
|
|
"d '${nixarr.mediaDir}/torrents/manual' 0755 ${globals.transmission.user} ${globals.transmission.group} - -"
|
|
"d '${nixarr.mediaDir}/torrents/lidarr' 0755 ${globals.transmission.user} ${globals.transmission.group} - -"
|
|
"d '${nixarr.mediaDir}/torrents/radarr' 0755 ${globals.transmission.user} ${globals.transmission.group} - -"
|
|
"d '${nixarr.mediaDir}/torrents/sonarr' 0755 ${globals.transmission.user} ${globals.transmission.group} - -"
|
|
"d '${nixarr.mediaDir}/torrents/readarr' 0755 ${globals.transmission.user} ${globals.transmission.group} - -"
|
|
];
|
|
})
|
|
(lib.mkIf whisparr {
|
|
users = {
|
|
groups.${globals.whisparr.group}.gid = globals.gids.${globals.whisparr.group};
|
|
users.${globals.whisparr.user} = {
|
|
isSystemUser = true;
|
|
group = globals.whisparr.group;
|
|
uid = globals.uids.${globals.whisparr.user};
|
|
};
|
|
};
|
|
|
|
systemd.tmpfiles.rules = [
|
|
"d '${nixarr.mediaDir}/library' 0775 ${globals.libraryOwner.user} ${globals.libraryOwner.group} - -"
|
|
"d '${nixarr.mediaDir}/library/xxx' 0775 ${globals.libraryOwner.user} ${globals.libraryOwner.group} - -"
|
|
];
|
|
})
|
|
]
|