snowfield/modules/mediaserver/default.nix
2024-03-30 20:18:12 +01:00

95 lines
2 KiB
Nix

{ lib, config, ... }:
with lib;
let cfg = config.luj.mediaserver;
in
{
options.luj.mediaserver = {
enable = mkEnableOption "enable the mediaserver";
tv.enable = mkEnableOption "enable the tv mediaserver";
music.enable = mkEnableOption "enable the music mediaserver";
};
config = mkIf cfg.enable (
mkMerge [{
users.users.mediaserver = {
name = "mediaserver";
isNormalUser = true;
home = "/home/mediaserver";
group = config.users.groups.mediaserver.name;
};
users.groups.mediaserver = {
name = "mediaserver";
};
luj.jackett = {
enable = true;
user = "mediaserver";
group = "mediaserver";
nginx.enable = true;
nginx.subdomain = "jackett";
};
luj.deluge = {
enable = true;
user = "mediaserver";
group = "mediaserver";
nginx.enable = true;
nginx.subdomain = "downloads";
};
}
(mkIf cfg.tv.enable {
luj.sonarr = {
enable = true;
user = "mediaserver";
group = "mediaserver";
nginx.enable = true;
nginx.subdomain = "series";
};
luj.radarr = {
enable = true;
user = "mediaserver";
group = "mediaserver";
nginx.enable = true;
nginx.subdomain = "films";
};
luj.jellyfin = {
enable = true;
user = "mediaserver";
group = "mediaserver";
nginx.enable = true;
nginx.subdomain = "tv";
};
})
(mkIf cfg.music.enable {
luj.lidarr = {
enable = true;
user = "mediaserver";
group = "mediaserver";
nginx.enable = true;
nginx.subdomain = "songs";
};
luj.navidrome = {
enable = true;
user = "mediaserver";
group = "mediaserver";
nginx.enable = true;
nginx.subdomain = "music";
};
})]);
}