44 lines
1.2 KiB
Nix
44 lines
1.2 KiB
Nix
{ inputs, config, pkgs, lib, ... }:
|
|
let
|
|
homelabDomain = inputs.nixos-secrets.homelabDomain;
|
|
certDir = config.security.acme.certs."${homelabDomain}".directory;
|
|
svcDomain = "books.${homelabDomain}";
|
|
svcHttpPort = config.services.calibre-web.listen.port;
|
|
web_data_dir = "calibre-web";
|
|
library_path = "/tank/media/library/books";
|
|
in
|
|
{
|
|
# TODO: This isn't the right place for this, but we need to guarantee that a
|
|
# media group exists.
|
|
users.users.calibre-web.extraGroups = [ "media" ];
|
|
users.groups.media = {};
|
|
|
|
services.caddy.virtualHosts."${svcDomain}".extraConfig = ''
|
|
reverse_proxy :${toString svcHttpPort}
|
|
encode {
|
|
zstd
|
|
gzip
|
|
minimum_length 1024
|
|
}
|
|
'';
|
|
|
|
services.calibre-web = {
|
|
enable = true;
|
|
listen.port = 8083;
|
|
# NOTE: Don't need to open calibre-web port, it's served by reverse_proxy
|
|
openFirewall = false;
|
|
|
|
user = "calibre-web";
|
|
group = "calibre-web";
|
|
|
|
# Either absolute path or directory name under "/var/lib"
|
|
# /tank/media/library/books
|
|
dataDir = web_data_dir;
|
|
|
|
options = {
|
|
enableBookUploading = true;
|
|
enableBookConversion = true;
|
|
calibreLibrary = library_path;
|
|
};
|
|
};
|
|
}
|