From fbb1d34f8ffa84c3858236e0da23f3b7ce8a2f2e Mon Sep 17 00:00:00 2001 From: aottr Date: Tue, 20 Jan 2026 00:20:27 +0100 Subject: [PATCH] refactor: nzbget config Signed-off-by: aottr --- modules/nixos/server/media.nix | 69 +++++++++++++++++++++------------- 1 file changed, 42 insertions(+), 27 deletions(-) diff --git a/modules/nixos/server/media.nix b/modules/nixos/server/media.nix index 72c4390..3333665 100644 --- a/modules/nixos/server/media.nix +++ b/modules/nixos/server/media.nix @@ -1,18 +1,46 @@ -{ pkgs, config, ... }: +{ pkgs, config, lib, ... }: + +let + baseDir = "/var/lib/nzbget"; + + # subdir name -> NZBGet setting key + nzbDirs = { + DestDir = "dst"; + InterDir = "inter"; + NzbDir = "nzb"; + QueueDir = "queue"; + TempDir = "tmp"; + ScriptDir = "scripts"; + }; + + mediaUser = "media"; + mediaGroup = "media"; + + # Build full paths for NZBGet settings + nzbDirSettings = + lib.mapAttrs (_key: sub: "${baseDir}/${sub}") nzbDirs; + + # Ensure directories + tmpfilesRules = + [ "d ${baseDir} 0755 ${mediaUser} ${mediaGroup} -" ] + ++ (map + (sub: "d ${baseDir}/${sub} 0755 ${mediaUser} ${mediaGroup} -") + (lib.attrValues nzbDirs)); +in { users.groups.media = { gid = 976; }; users.users.media = { - group = "media"; + group = mediaGroup; isSystemUser = true; uid = 976; }; age.secrets.mediaUser = { file = ../../../secrets/common/smb-media.age; - owner = "media"; - group = "media"; + owner = mediaUser; + group = mediaGroup; }; environment.systemPackages = [ pkgs.cifs-utils ]; @@ -28,29 +56,16 @@ /* Downloading Linux-ISOs */ services.nzbget = { enable = true; - user = "media"; - group = "media"; + user = mediaUser; + group = mediaGroup; settings = { - MainDir = "/var/lib/nzbget"; - DestDir = "/var/lib/nzbget/dst"; - InterDir = "/var/lib/nzbget/inter"; - NzbDir = "/var/lib/nzbget/nzb"; - QueueDir = "/var/lib/nzbget/queue"; - TempDir = "/var/lib/nzbget/tmp"; - ScriptDir = "/var/lib/nzbget/scripts"; + MainDir = baseDir; ControlPort = "36789"; - }; + } // nzbDirSettings; }; - systemd.tmpfiles.rules = [ - "d /var/lib/nzbget/dst 0755 media media -" - "d /var/lib/nzbget/inter 0755 media media -" - "d /var/lib/nzbget/nzb 0755 media media -" - "d /var/lib/nzbget/queue 0755 media media -" - "d /var/lib/nzbget/tmp 0755 media media -" - "d /var/lib/nzbget/scripts 0755 media media -" - ]; - + systemd.tmpfiles.rules = tmpfilesRules; + services.jellyseerr = { enable = true; port = 35055; @@ -60,15 +75,15 @@ services.sonarr = { enable = true; settings.server.port = 38989; - user = "media"; - group = "media"; + user = mediaUser; + group = mediaGroup; }; services.radarr = { enable = true; settings.server.port = 37878; - user = "media"; - group = "media"; + user = mediaUser; + group = mediaGroup; }; services.traefik.dynamicConfigOptions.http = { -- 2.51.2