diff --git a/modules/server/media/default.nix b/modules/server/media/default.nix index 876a42d..dd099ee 100644 --- a/modules/server/media/default.nix +++ b/modules/server/media/default.nix @@ -8,6 +8,7 @@ { imports = [ ./jellyfin.nix + ./kavita.nix ./navidrome.nix ]; } diff --git a/modules/server/media/kavita.nix b/modules/server/media/kavita.nix new file mode 100644 index 0000000..e31580a --- /dev/null +++ b/modules/server/media/kavita.nix @@ -0,0 +1,49 @@ +{ + config, + lib, + pkgs, + ... +}: + +{ + options = { + server.media.kavita = { + enable = lib.mkEnableOption "enable kavita"; + port = lib.mkOption { + default = 3812; + description = "kavita port"; + }; + public = lib.mkEnableOption "make kavita public"; + subdomain = lib.mkOption { + default = "books"; + description = "kavita subdomain"; + }; + }; + }; + config = { + services = { + kavita = { + enable = config.server.media.kavita.enable; + user = config.user.userName; + settings = { + Port = config.server.media.kavita.port; + }; + }; + nginx = { + virtualHosts = { + "${config.server.media.kavita.subdomain}.${config.networking.domain}" = + if config.server.media.kavita.public then + { + enableACME = true; + forceSSL = true; + locations."/" = { + proxyPass = "http://127.0.0.1:${toString config.server.media.kavita.port}"; + }; + } + else + { }; + }; + }; + }; + }; +}