ooknet/modules/nixos/server/services/media-server/prowlarr.nix

51 lines
1.4 KiB
Nix

{
config,
lib,
pkgs,
...
}: let
inherit (lib) mkIf getExe;
inherit (config.ooknet.server) media-server;
inherit (config.ooknet.server.media-server) storage users groups domain proxy ports;
in {
config = mkIf media-server.prowlarr.enable {
# we dont use the nixpkgs prowlarr service module because it lacks the option to
# declare dataDir, user and group.
# setup user
users.users.prowlarr = {
group = groups.prowlarr;
home = storage.state.prowlarr;
uid = 293;
isSystemUser = true;
};
users.groups.prowlarr = {};
# basic systemd service
systemd = {
services.prowlarr = {
description = "Prowlarr";
after = ["network.target"];
wantedBy = ["multi-user.target"];
serviceConfig = {
Type = "simple";
User = users.prowlarr;
group = groups.prowlarr;
ExecStart = "${getExe pkgs.prowlarr} -nobrowser -data=${storage.state.prowlarr}";
Restart = "on-failure";
};
};
tmpfiles.settings.prowlarrDirs = {
"${storage.state.prowlarr}"."d" = {
mode = "0700";
user = users.prowlarr;
group = groups.prowlarr;
};
};
};
networking.firewall.allowedTCPPorts = [ports.prowlarr];
ooknet.server.webserver.caddy.enable = true;
services.caddy.virtualHosts."${domain.prowlarr}".extraConfig = proxy.prowlarr;
};
}