{ container, lib, pkgs, config, ... }: with lib; let cfg = config.container.module.read; in { options = { container.module.read = { enable = mkEnableOption "Reading server."; address = mkOption { default = "10.1.0.39"; type = types.str; }; port = mkOption { default = 5000; type = types.int; }; domain = mkOption { default = "read.${config.container.domain}"; type = types.str; }; storage = mkOption { default = "${config.container.storage}/read"; type = types.str; }; }; }; config = mkIf cfg.enable { systemd.tmpfiles.rules = container.mkContainerDir cfg [ "data" ]; containers.read = container.mkContainer cfg { bindMounts = { "/var/lib/kavita" = { hostPath = "${cfg.storage}/data"; isReadOnly = false; }; } // container.attachMedia "book" true // container.attachMedia "manga" true; config = { ... }: container.mkContainerConfig cfg { services.kavita = { enable = true; dataDir = "/var/lib/kavita"; tokenKeyFile = pkgs.writeText "KavitaToken" "xY19aQOa939/Ie6GCRGbubVK8zRwrgBY/20AuyMpYshUjwK1Uyl7bw1yknVh6jJIFIfwq2vAjeotOUq7NEsf9Q=="; settings = { IpAddresses = cfg.address; Port = cfg.port; }; }; }; }; }; }