mkModule calibre
This commit is contained in:
@@ -7,147 +7,54 @@
|
|||||||
}:
|
}:
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
inherit (lib.${namespace}) mkOpt mkReverseProxyOpt;
|
name = "calibre";
|
||||||
cfg = config.${namespace}.services.calibre;
|
cfg = config.${namespace}.services.${name};
|
||||||
# dataDir = "/library";
|
|
||||||
# hostAddress = "10.0.1.3";
|
|
||||||
# calibreUserId = config.users.users.nix-apps.uid;
|
|
||||||
# calibreGroupId = config.users.groups.jallen-nas.gid;
|
|
||||||
|
|
||||||
# calibreConfig =
|
calibreConfig = lib.${namespace}.mkModule {
|
||||||
# { lib, ... }:
|
inherit config name;
|
||||||
# {
|
description = "Calibre Server";
|
||||||
# services.calibre-server = {
|
options = { };
|
||||||
# enable = true;
|
moduleConfig = {
|
||||||
# openFirewall = true;
|
services = {
|
||||||
# libraries = [
|
calibre-server = {
|
||||||
# dataDir
|
enable = false;
|
||||||
# ];
|
openFirewall = true;
|
||||||
# };
|
port = cfg.port;
|
||||||
|
libraries = [
|
||||||
# services.calibre-web = {
|
"${cfg.dataDir}/books"
|
||||||
# enable = true;
|
];
|
||||||
# openFirewall = true;
|
};
|
||||||
# listen = {
|
|
||||||
# ip = "0.0.0.0";
|
|
||||||
# port = cfg.port;
|
|
||||||
# };
|
|
||||||
# options = {
|
|
||||||
# enableBookUploading = true;
|
|
||||||
# enableBookConversion = true;
|
|
||||||
# calibreLibrary = dataDir;
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
|
|
||||||
# users.users.calibre = {
|
|
||||||
# isSystemUser = true;
|
|
||||||
# uid = lib.mkForce calibreUserId;
|
|
||||||
# group = "calibre";
|
|
||||||
# };
|
|
||||||
|
|
||||||
# users.groups = {
|
|
||||||
# calibre-web = {
|
|
||||||
# gid = lib.mkForce calibreGroupId;
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
|
|
||||||
# networking = {
|
|
||||||
# firewall = {
|
|
||||||
# enable = true;
|
|
||||||
# allowedTCPPorts = [ cfg.port ];
|
|
||||||
# };
|
|
||||||
# # Use systemd-resolved inside the container
|
|
||||||
# # Workaround for bug https://github.com/NixOS/nixpkgs/issues/162686
|
|
||||||
# useHostResolvConf = lib.mkForce false;
|
|
||||||
# };
|
|
||||||
|
|
||||||
# services.resolved.enable = true;
|
|
||||||
# system.stateVersion = "23.11";
|
|
||||||
# };
|
|
||||||
|
|
||||||
# bindMounts = {
|
|
||||||
# ${dataDir} = {
|
|
||||||
# hostPath = cfg.dataDir;
|
|
||||||
# isReadOnly = false;
|
|
||||||
# };
|
|
||||||
# "/var/lib/calibre-web" = {
|
|
||||||
# hostPath = cfg.webDir;
|
|
||||||
# isReadOnly = false;
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
|
|
||||||
# Create reverse proxy configuration using mkReverseProxy
|
|
||||||
reverseProxyConfig = lib.${namespace}.mkReverseProxy {
|
|
||||||
name = "calibre";
|
|
||||||
subdomain = cfg.reverseProxy.subdomain;
|
|
||||||
url = "http://${cfg.localAddress}:${toString cfg.port}";
|
|
||||||
middlewares = cfg.reverseProxy.middlewares;
|
|
||||||
};
|
|
||||||
|
|
||||||
# calibreContainer =
|
|
||||||
# (lib.${namespace}.mkContainer {
|
|
||||||
# name = "calibre";
|
|
||||||
# localAddress = cfg.localAddress;
|
|
||||||
# port = cfg.port;
|
|
||||||
# bindMounts = bindMounts;
|
|
||||||
# config = calibreConfig;
|
|
||||||
# })
|
|
||||||
# { inherit lib; };
|
|
||||||
|
|
||||||
# fullConfig = {
|
|
||||||
# ${namespace}.services.traefik = lib.mkIf cfg.reverseProxy.enable {
|
|
||||||
# reverseProxies = [ reverseProxyConfig ];
|
|
||||||
# };
|
|
||||||
# }
|
|
||||||
# // calibreContainer;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.${namespace}.services.calibre = {
|
|
||||||
enable = mkEnableOption "calibre service";
|
|
||||||
|
|
||||||
port = mkOpt types.int 8080 "Port for calibre to be hosted on";
|
|
||||||
|
|
||||||
webPort = mkOpt types.int 8083 "Port for calibre web to be hosted on";
|
|
||||||
|
|
||||||
localAddress = mkOpt types.str "127.0.0.1" "local address of the service";
|
|
||||||
|
|
||||||
dataDir = mkOpt types.str "/media/nas/main/books" "Path to the data dir";
|
|
||||||
|
|
||||||
webDir = mkOpt types.str "/media/nas/main/nix-app-data/calibre-web" "Path to the web data dir";
|
|
||||||
|
|
||||||
reverseProxy = mkReverseProxyOpt;
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
${namespace}.services.traefik = lib.mkIf cfg.reverseProxy.enable {
|
|
||||||
reverseProxies = [ reverseProxyConfig ];
|
|
||||||
};
|
|
||||||
|
|
||||||
services = {
|
|
||||||
calibre-server = {
|
|
||||||
enable = false;
|
|
||||||
openFirewall = true;
|
|
||||||
port = cfg.port;
|
|
||||||
libraries = [
|
|
||||||
cfg.dataDir
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
calibre-web = {
|
calibreWebConfig = lib.${namespace}.mkModule {
|
||||||
|
inherit config;
|
||||||
|
name = "${name}-web";
|
||||||
|
description = "Calibre Web";
|
||||||
|
options = { };
|
||||||
|
moduleConfig = {
|
||||||
|
services.calibre-web = {
|
||||||
enable = true;
|
enable = true;
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
package = pkgs.stable.calibre-web;
|
package = pkgs.stable.calibre-web;
|
||||||
dataDir = cfg.webDir;
|
dataDir = "${cfg.configDir}/calibre-web";
|
||||||
listen = {
|
listen = {
|
||||||
ip = "0.0.0.0";
|
ip = "0.0.0.0";
|
||||||
port = cfg.webPort;
|
port = cfg.port;
|
||||||
};
|
};
|
||||||
options = {
|
options = {
|
||||||
enableBookUploading = true;
|
enableBookUploading = true;
|
||||||
enableBookConversion = true;
|
enableBookConversion = true;
|
||||||
calibreLibrary = cfg.dataDir;
|
calibreLibrary = "${cfg.dataDir}/books";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
calibreConfig
|
||||||
|
calibreWebConfig
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,10 +44,10 @@ in
|
|||||||
calibre = {
|
calibre = {
|
||||||
enable = true;
|
enable = true;
|
||||||
port = 8084;
|
port = 8084;
|
||||||
webPort = 8083;
|
};
|
||||||
localAddress = "10.0.3.1";
|
calibre-web = {
|
||||||
webDir = "/media/nas/main/nix-app-data/calibre-web";
|
enable = true;
|
||||||
dataDir = "/media/nas/main/books";
|
port = 8083;
|
||||||
};
|
};
|
||||||
code-server = {
|
code-server = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user