diff --git a/common.nix b/common.nix index d751990..ff44cf0 100644 --- a/common.nix +++ b/common.nix @@ -31,6 +31,7 @@ ./services/fail2ban.nix ./services/authelia.nix ./services/homepage.nix + ./services/tdarr.nix ./services/arr-interconnect.nix ]; diff --git a/services/nginx.nix b/services/nginx.nix index b0ba787..35d30d0 100644 --- a/services/nginx.nix +++ b/services/nginx.nix @@ -103,6 +103,7 @@ in # --- Other --- "games.nordhammer.it" = proxy 8787; "search.nordhammer.it" = proxy 8087; + "tdarr.nordhammer.it" = proxy 8265; # --- Protected by Authelia --- "camera.nordhammer.it" = protectedProxy 1984; diff --git a/services/tdarr.nix b/services/tdarr.nix new file mode 100644 index 0000000..9ef053c --- /dev/null +++ b/services/tdarr.nix @@ -0,0 +1,48 @@ +# services/tdarr.nix — Tdarr transcoding manager +{ config, pkgs, lib, ... }: +{ + config = lib.mkIf (config.networking.hostName == "FredOS-Mediaserver") { + + systemd.services.tdarr-server = { + description = "Tdarr Server"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + + serviceConfig = { + Type = "simple"; + User = "tdarr"; + Group = "media"; + StateDirectory = "tdarr"; + ExecStart = "${pkgs.tdarr-server}/bin/tdarr-server"; + Restart = "on-failure"; + RestartSec = 10; + + # Tdarr server config via environment + Environment = [ + "HOME=/var/lib/tdarr" + "serverIP=0.0.0.0" + "serverPort=8266" + "webUIPort=8265" + "internalNode=true" + "inContainer=false" + "ffmpegVersion=6" + "nodeName=FredOS-Mediaserver" + ]; + }; + }; + + users.users.tdarr = { + isSystemUser = true; + group = "media"; + extraGroups = [ "media" "video" "render" ]; + home = "/var/lib/tdarr"; + }; + + systemd.tmpfiles.rules = [ + "d /var/lib/tdarr 0755 tdarr media -" + "d /var/lib/tdarr/server 0755 tdarr media -" + "d /var/lib/tdarr/configs 0755 tdarr media -" + "d /var/lib/tdarr/logs 0755 tdarr media -" + ]; + }; +}