ooknet/modules/nixos/server/services/ookflix/shared.nix

76 lines
2.5 KiB
Nix

{
lib,
config,
...
}: let
inherit (lib) mkIf;
inherit (config.ooknet.host) admin;
inherit (config.ooknet.server) ookflix;
inherit (config.ooknet.server.ookflix) volumes groups;
inherit (config.ooknet.server.ookflix.services) jellyfin plex sonarr radarr prowlarr qbittorrent;
dataDirPermissions = {
mode = "0775";
user = admin.name;
group = groups.media.name;
};
ifTheyExist = users: builtins.filter (user: builtins.hasAttr user config.users.users) users;
in {
config = mkIf ookflix.enable {
users.groups = {
${groups.media.name} = {
inherit (groups.media) name;
gid = groups.media.id;
members = ifTheyExist [
# need access to the media library
jellyfin.user.name
plex.user.name
# need access to the media library and the torrent/usenet library
sonarr.user.name
radarr.user.name
prowlarr.user.name
# need access to the torrent library
qbittorrent.user.name
];
};
};
systemd.tmpfiles.settings = {
ookflixDataDirs = {
/*
set up the entire directory structure it should look something like this:
data
torrents
movies
books
tv
usenet
incomplete
complete
books
movies
tv
media
movies
books
tv
*/
"${volumes.data.root}"."d" = dataDirPermissions;
"${volumes.torrents.root}"."d" = dataDirPermissions;
"${volumes.torrents.movies}"."d" = dataDirPermissions;
"${volumes.torrents.tv}"."d" = dataDirPermissions;
"${volumes.torrents.books}"."d" = dataDirPermissions;
"${volumes.usenet.root}"."d" = dataDirPermissions;
"${volumes.usenet.incomplete}"."d" = dataDirPermissions;
"${volumes.usenet.complete.root}"."d" = dataDirPermissions;
"${volumes.usenet.complete.movies}"."d" = dataDirPermissions;
"${volumes.usenet.complete.tv}"."d" = dataDirPermissions;
"${volumes.usenet.complete.books}"."d" = dataDirPermissions;
"${volumes.media.root}"."d" = dataDirPermissions;
"${volumes.media.movies}"."d" = dataDirPermissions;
"${volumes.media.tv}"."d" = dataDirPermissions;
"${volumes.media.books}"."d" = dataDirPermissions;
};
};
};
}