switch to native nix-based media servers

This commit is contained in:
Yan Lin 2025-11-27 19:41:39 +01:00
parent 68a56c55d2
commit d36c537dc8
4 changed files with 86 additions and 89 deletions

57
modules/media-server.nix Normal file
View file

@ -0,0 +1,57 @@
{ 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
};
config = {
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;
};
services.deluge = lib.mkIf cfg.deluge.enable {
enable = true;
user = cfg.user;
group = cfg.group;
openFirewall = false;
web.enable = true;
web.openFirewall = false;
};
};
}