ooknet/modules/nixos/server/services/ookflix/options.nix
2024-12-04 13:19:54 +11:00

127 lines
3.4 KiB
Nix

{
lib,
config,
self,
...
}: let
ookflixLib = import ./lib.nix {inherit lib config self;};
inherit (ookflixLib) mkVolumeOption mkGroupOption mkServiceOptions mkBasicServiceOptions mkPortOption;
inherit (lib) mkOption mkEnableOption elem;
inherit (config.ooknet.server) services;
inherit (lib.types) enum;
in {
options.ooknet.server.ookflix = {
enable =
mkEnableOption "Enable ookflix a container based media server module"
// {default = elem "ookflix" services;};
gpuAcceleration = {
enable =
mkEnableOption "Enable GPU acceleration for video streamers"
// {default = elem "ookflix" services;};
type = mkOption {
type = enum ["nvidia" "intel" "amd"];
default = config.ooknet.hardware.gpu.type;
description = ''
What GPU type to use for GPU acceleration.
Defaults to system GPU type (ooknet.hardware.gpu.type)
'';
};
};
volumes = {
state.root = mkVolumeOption "root" "/var/lib/ookflix";
data.root = mkVolumeOption "root" "/jellyfin";
torrents = {
root = mkVolumeOption "data" "torrents";
tv = mkVolumeOption "torrents" "tv";
movies = mkVolumeOption "torrents" "movies";
books = mkVolumeOption "torrents" "books";
};
usenet = {
root = mkVolumeOption "data" "usenet";
incomplete = mkVolumeOption "usenet" "incomplete";
complete = {
root = mkVolumeOption "usenet" "complete";
tv = mkVolumeOption "usenet/complete" "tv";
movies = mkVolumeOption "usenet/complete" "movies";
books = mkVolumeOption "usenet/complete" "books";
};
};
media = {
root = mkVolumeOption "data" "media";
movies = mkVolumeOption "media" "movies";
tv = mkVolumeOption "media" "tv";
books = mkVolumeOption "media" "books";
};
};
# Shared groups
groups = {
media = mkGroupOption "media" 992;
downloads = mkGroupOption "downloader" 981;
};
services = {
jellyfin = mkServiceOptions "jellyfin" {
port = 8096;
uid = 994;
gid = 994;
};
plex = mkServiceOptions "plex" {
port = 32400;
uid = 195;
gid = 195;
};
sonarr = mkServiceOptions "sonarr" {
port = 8989;
uid = 274;
gid = 274;
};
radarr = mkServiceOptions "radarr" {
port = 7878;
uid = 275;
gid = 275;
};
prowlarr = mkServiceOptions "prowlarr" {
port = 9696;
uid = 982;
gid = 987;
};
qbittorrent =
mkServiceOptions "qbittorrent" {
port = 8080;
uid = 377;
gid = 377;
}
// {
torrentPort = mkPortOption 58080 "Torrenting Port for qbittorrent" 58080;
exposedPort = mkPortOption 8081 "Port exposed by qbittorrent" 8081;
};
jellyseerr = mkServiceOptions "jellyseerr" {
port = 5055;
uid = 345;
gid = 345;
};
tautulli = mkServiceOptions "tautulli" {
port = 8181;
uid = 355;
gid = 355;
};
traefik = mkServiceOptions "traefik" {
port = 8080;
uid = 389;
gid = 389;
};
homepage = mkServiceOptions "homepage" {
port = 3000;
uid = 400;
gid = 400;
};
gluetun = mkBasicServiceOptions "gluetun" {
uid = 356;
gid = 357;
};
};
};
}