silx: 2.1.1 -> 2.1.2 (#361612)
[NixPkgs.git] / nixos / modules / services / misc / tiddlywiki.nix
blob4cff412132d1a9b8bad3bb1b740abd22e6a0d176
1 { config, lib, pkgs, ... }:
2 let
4   cfg = config.services.tiddlywiki;
5   listenParams = lib.concatStrings (lib.mapAttrsToList (n: v: " '${n}=${toString v}' ") cfg.listenOptions);
6   exe = "${pkgs.nodePackages.tiddlywiki}/lib/node_modules/.bin/tiddlywiki";
7   name = "tiddlywiki";
8   dataDir = "/var/lib/" + name;
10 in {
12   options.services.tiddlywiki = {
14     enable = lib.mkEnableOption "TiddlyWiki nodejs server";
16     listenOptions = lib.mkOption {
17       type = lib.types.attrs;
18       default = {};
19       example = {
20         credentials = "../credentials.csv";
21         readers="(authenticated)";
22         port = 3456;
23       };
24       description = ''
25         Parameters passed to `--listen` command.
26         Refer to <https://tiddlywiki.com/#WebServer>
27         for details on supported values.
28       '';
29     };
30   };
32   config = lib.mkIf cfg.enable {
33     systemd = {
34       services.tiddlywiki = {
35         description = "TiddlyWiki nodejs server";
36         after = [ "network.target" ];
37         wantedBy = [ "multi-user.target" ];
38         serviceConfig = {
39           Type = "simple";
40           Restart = "on-failure";
41           DynamicUser = true;
42           StateDirectory = name;
43           ExecStartPre = "-${exe} ${dataDir} --init server";
44           ExecStart = "${exe} ${dataDir} --listen ${listenParams}";
45         };
46       };
47     };
48   };