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