From 680d82bc3b8f2b397751abc758aa6b2b743b51d8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 31 Jan 2021 22:32:30 +0100 Subject: [PATCH] services: add pirate The whole suite of *-arr media managers. --- configuration.nix | 2 ++ services/default.nix | 1 + services/media.nix | 2 +- services/pirate.nix | 42 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 services/pirate.nix diff --git a/configuration.nix b/configuration.nix index f756d33..0d1c8ba 100644 --- a/configuration.nix +++ b/configuration.nix @@ -78,6 +78,8 @@ jellyfin.enable = true; # Matrix backend and Element chat front-end matrix.enable = true; + # The whole *arr software suite + pirate.enable = true; }; programs.gnupg.agent = { diff --git a/services/default.nix b/services/default.nix index 8623627..879afae 100644 --- a/services/default.nix +++ b/services/default.nix @@ -7,5 +7,6 @@ ./matrix.nix ./media.nix ./nginx.nix + ./pirate.nix ]; } diff --git a/services/media.nix b/services/media.nix index 278f74e..4f733fd 100644 --- a/services/media.nix +++ b/services/media.nix @@ -3,7 +3,7 @@ { config, lib, ... }: let needed = with config.my.services; - jellyfin.enable; + jellyfin.enable || pirate.enable; in { config.users.groups.media = lib.mkIf needed { }; diff --git a/services/pirate.nix b/services/pirate.nix new file mode 100644 index 0000000..800f01b --- /dev/null +++ b/services/pirate.nix @@ -0,0 +1,42 @@ +# The total autonomous media delivery system. +# Relevant link [1]. +# +# [1]: https://youtu.be/I26Ql-uX6AM +{ config, lib, ... }: +let + cfg = config.my.services.pirate; + domain = config.networking.domain; + + ports = { + sonarr = 8989; + radarr = 7878; + bazarr = 6767; + }; + + managers = with lib.attrsets; + (mapAttrs + (_: _: { + enable = true; + group = "media"; + }) + ports); + + redirections = with lib.attrsets; + (mapAttrs' + (service: port: nameValuePair "${service}.${domain}" { + forceSSL = true; + useACMEHost = "${domain}"; + + locations."/".proxyPass = "http://localhost:${builtins.toString port}/"; + }) + ports); +in +{ + options.my.services.pirate = { + enable = lib.mkEnableOption "Media automation"; + }; + + config = lib.mkIf cfg.enable { + services = managers // { nginx.virtualHosts = redirections; }; + }; +}