···
13
+
(mkChangedOptionModule [ "services" "calibre-server" "libraryDir" ] [ "services" "calibre-server" "libraries" ]
15
+
let libraryDir = getAttrFromPath [ "services" "calibre-server" "libraryDir" ] config;
services.calibre-server = {
enable = mkEnableOption "calibre-server";
21
-
libraryDir = mkOption {
28
+
libraries = mkOption {
23
-
The directory where the Calibre library to serve is.
30
+
The directories of the libraries to serve. They must be readable for the user under which the server runs.
32
+
type = types.listOf types.path;
36
+
description = "The user under which calibre-server runs.";
38
+
default = "calibre-server";
42
+
description = "The group under which calibre-server runs.";
44
+
default = "calibre-server";
···
config = mkIf cfg.enable {
37
-
systemd.services.calibre-server =
55
+
systemd.services.calibre-server = {
description = "Calibre Server";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
43
-
User = "calibre-server";
45
-
ExecStart = "${pkgs.calibre}/bin/calibre-server ${cfg.libraryDir}";
62
+
ExecStart = "${pkgs.calibre}/bin/calibre-server ${lib.concatStringsSep " " cfg.libraries}";
environment.systemPackages = [ pkgs.calibre ];
52
-
users.users.calibre-server = {
69
+
users.users = optionalAttrs (cfg.user == "calibre-server") {
71
+
home = "/var/lib/calibre-server";
uid = config.ids.uids.calibre-server;
54
-
group = "calibre-server";
57
-
users.groups.calibre-server = {
78
+
users.groups = optionalAttrs (cfg.group == "calibre-server") {
gid = config.ids.gids.calibre-server;