{ config, lib, pkgs, namespace, ... }: let name = "calibre"; cfg = config.${namespace}.services.${name}; cfgWeb = config.${namespace}.services."${name}-web"; calibreConfig = lib.${namespace}.mkModule { inherit config name; serviceName = "calibre-web"; description = "Calibre Server"; options = { }; moduleConfig = { services.calibre-server = { enable = false; openFirewall = true; port = cfg.port; libraries = [ "${cfg.dataDir}/books" ]; }; }; }; calibreWebConfig = lib.${namespace}.mkModule { inherit config; name = "${name}-web"; description = "Calibre Web"; options = { }; moduleConfig = { services.calibre-web = { enable = true; openFirewall = true; package = pkgs.stable.calibre-web; dataDir = "${cfgWeb.configDir}/calibre-web"; listen = { ip = "0.0.0.0"; port = cfgWeb.port; }; options = { enableBookUploading = true; enableBookConversion = true; calibreLibrary = "${cfgWeb.dataDir}/books"; }; }; }; }; in { imports = [ calibreConfig calibreWebConfig ]; }