1{ config, lib, pkgs, ... }:
2
3with lib;
4
5let
6
7 cfg = config.services.calibre-server;
8
9in
10
11{
12
13 ###### interface
14
15 options = {
16
17 services.calibre-server = {
18
19 enable = mkEnableOption "calibre-server";
20
21 libraryDir = mkOption {
22 description = ''
23 The directory where the Calibre library to serve is.
24 '';
25 type = types.path;
26 };
27
28 };
29
30 };
31
32
33 ###### implementation
34
35 config = mkIf cfg.enable {
36
37 systemd.services.calibre-server =
38 {
39 description = "Calibre Server";
40 after = [ "network.target" ];
41 wantedBy = [ "multi-user.target" ];
42 serviceConfig = {
43 User = "calibre-server";
44 Restart = "always";
45 ExecStart = "${pkgs.calibre}/bin/calibre-server --with-library=${cfg.libraryDir}";
46 };
47
48 };
49
50 environment.systemPackages = [ pkgs.calibre ];
51
52 users.extraUsers.calibre-server = {
53 uid = config.ids.uids.calibre-server;
54 group = "calibre-server";
55 };
56
57 users.extraGroups.calibre-server = {
58 gid = config.ids.gids.calibre-server;
59 };
60
61 };
62
63}