| 
									
										
										
										
											2014-12-20 17:38:52 -05:00
										 |  |  | { config, lib, pkgs, ... }: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | with lib; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | let | 
					
						
							|  |  |  |   home = "/var/lib/tox-bootstrapd"; | 
					
						
							|  |  |  |   PIDFile = "${home}/pid"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   pkg = pkgs.libtoxcore; | 
					
						
							|  |  |  |   cfg = config.services.toxBootstrapd; | 
					
						
							|  |  |  |   cfgFile = builtins.toFile "tox-bootstrapd.conf" | 
					
						
							|  |  |  |     ''
 | 
					
						
							|  |  |  |       port = ${toString cfg.port} | 
					
						
							|  |  |  |       keys_file_path = "${home}/keys" | 
					
						
							|  |  |  |       pid_file_path = "${PIDFile}" | 
					
						
							|  |  |  |       ${cfg.extraConfig} | 
					
						
							|  |  |  |     '';
 | 
					
						
							|  |  |  | in | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   options = | 
					
						
							|  |  |  |     { services.toxBootstrapd = | 
					
						
							|  |  |  |         { enable = mkOption { | 
					
						
							|  |  |  |             type = types.bool; | 
					
						
							|  |  |  |             default = false; | 
					
						
							|  |  |  |             description = | 
					
						
							|  |  |  |               ''
 | 
					
						
							| 
									
										
										
										
											2014-12-30 03:31:03 +01:00
										 |  |  |                 Whether to enable the Tox DHT bootstrap daemon. | 
					
						
							| 
									
										
										
										
											2014-12-20 17:38:52 -05:00
										 |  |  |               '';
 | 
					
						
							|  |  |  |           }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           port = mkOption { | 
					
						
							|  |  |  |             type = types.int; | 
					
						
							|  |  |  |             default = 33445; | 
					
						
							|  |  |  |             description = "Listening port (UDP)."; | 
					
						
							|  |  |  |           }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           keysFile = mkOption { | 
					
						
							|  |  |  |             type = types.str; | 
					
						
							|  |  |  |             default = "${home}/keys"; | 
					
						
							|  |  |  |             description = "Node key file."; | 
					
						
							|  |  |  |           }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           extraConfig = mkOption { | 
					
						
							|  |  |  |             type = types.lines; | 
					
						
							|  |  |  |             default = ""; | 
					
						
							|  |  |  |             description = | 
					
						
							|  |  |  |               ''
 | 
					
						
							| 
									
										
										
										
											2014-12-30 03:31:03 +01:00
										 |  |  |                 Configuration for bootstrap daemon. | 
					
						
							| 
									
										
										
										
											2014-12-20 17:38:52 -05:00
										 |  |  |                 See <link xlink:href="https://github.com/irungentoo/toxcore/blob/master/other/bootstrap_daemon/tox-bootstrapd.conf"/> | 
					
						
							|  |  |  |                 and <link xlink:href="http://wiki.tox.im/Nodes"/>. | 
					
						
							|  |  |  |              '';
 | 
					
						
							|  |  |  |           }; | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   config = mkIf config.services.toxBootstrapd.enable { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-09-14 19:51:29 +02:00
										 |  |  |     users.users.tox-bootstrapd = | 
					
						
							|  |  |  |       { uid = config.ids.uids.tox-bootstrapd; | 
					
						
							| 
									
										
										
										
											2014-12-20 17:38:52 -05:00
										 |  |  |         description = "Tox bootstrap daemon user"; | 
					
						
							|  |  |  |         inherit home; | 
					
						
							|  |  |  |         createHome = true; | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     systemd.services.tox-bootstrapd = { | 
					
						
							|  |  |  |       description = "Tox DHT bootstrap daemon"; | 
					
						
							|  |  |  |       after = [ "network.target" ]; | 
					
						
							|  |  |  |       wantedBy = [ "multi-user.target" ]; | 
					
						
							|  |  |  |       serviceConfig = | 
					
						
							| 
									
										
										
										
											2018-02-23 03:26:18 +00:00
										 |  |  |         { ExecStart = "${pkg}/bin/tox-bootstrapd --config=${cfgFile}"; | 
					
						
							| 
									
										
										
										
											2014-12-20 17:38:52 -05:00
										 |  |  |           Type = "forking"; | 
					
						
							|  |  |  |           inherit PIDFile; | 
					
						
							|  |  |  |           User = "tox-bootstrapd"; | 
					
						
							|  |  |  |         }; | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | } |