2023-05-12 22:05:10 +01:00
|
|
|
{ config, lib, ... }:
|
2022-04-05 13:04:53 +01:00
|
|
|
|
|
|
|
let
|
|
|
|
domain = "books.giugl.io";
|
2022-11-22 11:59:27 +00:00
|
|
|
auth_block = (import ./openid.nix { inherit lib; }).openresty_oidc_block;
|
2023-10-21 14:00:58 +01:00
|
|
|
|
2023-05-12 22:05:10 +01:00
|
|
|
utilities = import ./utilities.nix { inherit lib config; };
|
|
|
|
inherit (utilities) architectInterfaceAddress;
|
2022-11-22 11:59:27 +00:00
|
|
|
in
|
|
|
|
{
|
2022-04-05 13:04:53 +01:00
|
|
|
services = {
|
|
|
|
calibre-web = {
|
|
|
|
enable = true;
|
|
|
|
group = "media";
|
|
|
|
options = {
|
|
|
|
enableBookConversion = true;
|
|
|
|
enableBookUploading = true;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
nginx.virtualHosts.${domain} = {
|
2022-10-11 20:29:58 +01:00
|
|
|
forceSSL = true;
|
|
|
|
enableACME = true;
|
2022-04-05 13:04:53 +01:00
|
|
|
locations."/" = {
|
2022-11-11 18:12:24 +00:00
|
|
|
proxyPass = "http://127.0.0.1:8083";
|
2022-04-05 13:04:53 +01:00
|
|
|
extraConfig = ''
|
2022-10-11 20:29:58 +01:00
|
|
|
client_max_body_size 500M;
|
2022-11-22 11:59:27 +00:00
|
|
|
'' + auth_block { access_role = "calibre"; };
|
2022-04-05 13:04:53 +01:00
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
networking.extraHosts = ''
|
2023-05-12 22:05:10 +01:00
|
|
|
${architectInterfaceAddress "lan"} ${domain}
|
|
|
|
${architectInterfaceAddress "tailscale"} ${domain}
|
2022-04-05 13:04:53 +01:00
|
|
|
'';
|
|
|
|
|
|
|
|
users.groups.media.members = [ "calibre-web" ];
|
|
|
|
}
|