53 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
		
		
			
		
	
	
			53 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| 
								 | 
							
								{ config, lib, pkgs, ... }:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								with lib;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								let
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  cfg = config.services.tiddlywiki;
							 | 
						||
| 
								 | 
							
								  listenParams = concatStrings (mapAttrsToList (n: v: " '${n}=${toString v}' ") cfg.listenOptions);
							 | 
						||
| 
								 | 
							
								  exe = "${pkgs.nodePackages.tiddlywiki}/lib/node_modules/.bin/tiddlywiki";
							 | 
						||
| 
								 | 
							
								  name = "tiddlywiki";
							 | 
						||
| 
								 | 
							
								  dataDir = "/var/lib/" + name;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								in {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  options.services.tiddlywiki = {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    enable = mkEnableOption "TiddlyWiki nodejs server";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    listenOptions = mkOption {
							 | 
						||
| 
								 | 
							
								      type = types.attrs;
							 | 
						||
| 
								 | 
							
								      default = {};
							 | 
						||
| 
								 | 
							
								      example = {
							 | 
						||
| 
								 | 
							
								        credentials = "../credentials.csv";
							 | 
						||
| 
								 | 
							
								        readers="(authenticated)";
							 | 
						||
| 
								 | 
							
								        port = 3456;
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								      description = ''
							 | 
						||
| 
								 | 
							
								        Parameters passed to <literal>--listen</literal> command.
							 | 
						||
| 
								 | 
							
								        Refer to <link xlink:href="https://tiddlywiki.com/#WebServer"/>
							 | 
						||
| 
								 | 
							
								        for details on supported values.
							 | 
						||
| 
								 | 
							
								      '';
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  config = mkIf cfg.enable {
							 | 
						||
| 
								 | 
							
								    systemd = {
							 | 
						||
| 
								 | 
							
								      services.tiddlywiki = {
							 | 
						||
| 
								 | 
							
								        description = "TiddlyWiki nodejs server";
							 | 
						||
| 
								 | 
							
								        after = [ "network.target" ];
							 | 
						||
| 
								 | 
							
								        wantedBy = [ "multi-user.target" ];
							 | 
						||
| 
								 | 
							
								        serviceConfig = {
							 | 
						||
| 
								 | 
							
								          Type = "simple";
							 | 
						||
| 
								 | 
							
								          Restart = "on-failure";
							 | 
						||
| 
								 | 
							
								          DynamicUser = true;
							 | 
						||
| 
								 | 
							
								          StateDirectory = name;
							 | 
						||
| 
								 | 
							
								          ExecStartPre = "-${exe} ${dataDir} --init server";
							 | 
						||
| 
								 | 
							
								          ExecStart = "${exe} ${dataDir} --listen ${listenParams}";
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								}
							 |