rearrange media modules

This commit is contained in:
Yan Lin 2026-02-11 08:43:53 +01:00
parent e30c62b138
commit fce1cc3634
11 changed files with 7 additions and 12 deletions

118
modules/media/server.nix Normal file
View file

@ -0,0 +1,118 @@
{ config, pkgs, lib, ... }:
let
cfg = config.services.media-server;
in
{
options.services.media-server = {
user = lib.mkOption {
type = lib.types.str;
default = "media";
description = "User to run media services";
};
group = lib.mkOption {
type = lib.types.str;
default = "users";
description = "Group for media services";
};
sonarr.enable = lib.mkEnableOption "Sonarr TV show management"; # port 8989
radarr.enable = lib.mkEnableOption "Radarr movie management"; # port 7878
jellyfin.enable = lib.mkEnableOption "Jellyfin media server"; # port 8096
deluge.enable = lib.mkEnableOption "Deluge torrent client"; # web port 8112
plex.enable = lib.mkEnableOption "Plex media server"; # port 32400
lidarr.enable = lib.mkEnableOption "Lidarr music management"; # port 8686
bazarr.enable = lib.mkEnableOption "Bazarr subtitle management"; # port 6767
audiobookshelf.enable = lib.mkEnableOption "Audiobookshelf audiobook server"; # port 8000
navidrome.enable = lib.mkEnableOption "Navidrome music server"; # port 4533
navidrome.musicFolder = lib.mkOption {
type = lib.types.str;
default = "/home/yanlin/Media/music";
description = "Path to music folder for Navidrome";
};
};
config = {
users.users.${cfg.user}.extraGroups = lib.mkIf cfg.jellyfin.enable [ "render" "video" ];
services.sonarr = lib.mkIf cfg.sonarr.enable {
enable = true;
user = cfg.user;
group = cfg.group;
openFirewall = false;
};
services.radarr = lib.mkIf cfg.radarr.enable {
enable = true;
user = cfg.user;
group = cfg.group;
openFirewall = false;
};
services.jellyfin = lib.mkIf cfg.jellyfin.enable {
enable = true;
user = cfg.user;
group = cfg.group;
openFirewall = false;
};
systemd.services.jellyfin.environment = lib.mkIf cfg.jellyfin.enable {
LIBVA_DRIVER_NAME = "iHD";
};
services.deluge = lib.mkIf cfg.deluge.enable {
enable = true;
user = cfg.user;
group = cfg.group;
openFirewall = false;
web.enable = true;
web.openFirewall = false;
};
services.plex = lib.mkIf cfg.plex.enable {
enable = true;
user = cfg.user;
group = cfg.group;
openFirewall = false;
};
services.lidarr = lib.mkIf cfg.lidarr.enable {
enable = true;
user = cfg.user;
group = cfg.group;
openFirewall = false;
};
services.bazarr = lib.mkIf cfg.bazarr.enable {
enable = true;
user = cfg.user;
group = cfg.group;
openFirewall = false;
};
services.audiobookshelf = lib.mkIf cfg.audiobookshelf.enable {
enable = true;
user = cfg.user;
group = cfg.group;
host = "0.0.0.0";
openFirewall = false;
};
services.navidrome = lib.mkIf cfg.navidrome.enable {
enable = true;
user = cfg.user;
group = cfg.group;
openFirewall = false;
settings = {
Address = "0.0.0.0";
MusicFolder = cfg.navidrome.musicFolder;
"Deezer.Enabled" = false;
};
};
systemd.services.navidrome.serviceConfig = lib.mkIf cfg.navidrome.enable {
ProtectHome = lib.mkForce false;
};
};
}