nixfiles/hosts/hermes/media.nix

140 lines
3.6 KiB
Nix

{
pkgs,
config,
lib,
...
}: let
mediaDir = "/var/lib/media";
in {
users = {
groups.multimedia = {gid = 994;};
users."root".extraGroups = ["multimedia"];
users."media".extraGroups = ["multimedia"];
};
systemd.tmpfiles.rules = [
"d ${mediaDir} 0775 - multimedia - -"
"d ${mediaDir}/torrents 0775 - multimedia -"
"d ${mediaDir}/torrents/Downloads 0775 - multimedia -"
"d ${mediaDir}/usenet 0775 - multimedia -"
"d ${mediaDir}/usenet/Downloads 0775 - multimedia -"
"d ${mediaDir}/usenet/Done 0775 - multimedia -"
"d ${mediaDir}/library/Movies 0775 - multimedia - -"
"d ${mediaDir}/library/TV 0775 - multimedia - -"
"d ${mediaDir}/library/Music 0775 - multimedia - -"
"d /var/lib/tdarr 0775 - multimedia - "
"d /var/lib/tdarr/server 0775 - multimedia - "
"d /var/lib/tdarr/configs 0775 - multimedia - "
"d /var/lib/tdarr/logs 0775 - multimedia - "
];
nixpkgs.config.packageOverrides = pkgs: {
vaapiIntel = pkgs.vaapiIntel.override {enableHybridCodec = true;};
};
hardware.graphics = {
enable = true;
extraPackages = with pkgs; [
intel-media-driver
intel-vaapi-driver # previously vaapiIntel
vaapiVdpau
libvdpau-va-gl
intel-compute-runtime # OpenCL filter support (hardware tonemapping and subtitle burn-in)
vpl-gpu-rt # QSV on 11th gen or newer
#intel-media-sdk # QSV up to 11th gen
];
};
services = {
caddy = {
enable = true;
email = "acme@cleslie.uk";
virtualHosts = {
"media.cleslie.uk".extraConfig = ''
redir /radarr /radarr/
redir /sonarr /sonarr/
redir /lidarr /lidarr/
redir /bazarr /bazarr/
redir /prowlarr /prowlarr/
redir /tdarr /tdarr/
redir /deluge /deluge/
reverse_proxy /radarr/* 127.0.0.1:7878
reverse_proxy /sonarr/* 127.0.0.1:8989
reverse_proxy /lidarr/* 127.0.0.1:8686
reverse_proxy /bazarr/* 127.0.0.1:6767
reverse_proxy /prowlarr/* 127.0.0.1:9696
reverse_proxy /tdarr/* 127.0.0.1:8265
route /deluge/* {
uri strip_prefix deluge
reverse_proxy 127.0.0.1:8112 {
header_up X-Real-IP {remote}
header_up X-Deluge-Base "/deluge"
}
}
'';
"watch.cleslie.uk".extraConfig = ''
reverse_proxy http://localhost:8096
'';
"request.cleslie.uk".extraConfig = ''
reverse_proxy http://localhost:5055
'';
};
};
jellyfin = {
enable = true;
package = pkgs.jellyfin;
group = "multimedia";
openFirewall = false;
};
jellyseerr = {
enable = true;
openFirewall = false;
};
sonarr = {
enable = true;
group = "multimedia";
openFirewall = false;
};
radarr = {
enable = true;
group = "multimedia";
openFirewall = false;
};
bazarr = {
enable = true;
group = "multimedia";
openFirewall = false;
};
prowlarr = {
enable = true;
openFirewall = false;
};
deluge = {
enable = true;
group = "multimedia";
web.enable = true;
web.openFirewall = false;
dataDir = "${mediaDir}/torrents";
declarative = true;
config = {
enabled_plugins = ["Label"];
outgoing_interface = "wg1";
allow_remote = true;
openFirewall = false;
sequential_download = true;
};
authFile = pkgs.writeTextFile {
name = "deluge-auth";
text = ''
localclient::10
'';
};
};
};
}