| 
									
										
										
										
											2015-04-15 12:52:06 +02:00
										 |  |  | { config, lib, pkgs, ... }: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | with lib; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | let | 
					
						
							|  |  |  |   cfg = config.services.i2p; | 
					
						
							|  |  |  |   homeDir = "/var/lib/i2p"; | 
					
						
							|  |  |  | in { | 
					
						
							|  |  |  |   ###### interface | 
					
						
							| 
									
										
										
										
											2015-08-09 02:24:58 +02:00
										 |  |  |   options.services.i2p.enable = mkEnableOption "I2P router"; | 
					
						
							| 
									
										
										
										
											2015-04-15 12:52:06 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |   ###### implementation | 
					
						
							|  |  |  |   config = mkIf cfg.enable { | 
					
						
							| 
									
										
										
										
											2018-06-30 01:58:35 +02:00
										 |  |  |     users.users.i2p = { | 
					
						
							| 
									
										
										
										
											2015-04-15 12:52:06 +02:00
										 |  |  |       group = "i2p"; | 
					
						
							|  |  |  |       description = "i2p User"; | 
					
						
							|  |  |  |       home = homeDir; | 
					
						
							|  |  |  |       createHome = true; | 
					
						
							|  |  |  |       uid = config.ids.uids.i2p; | 
					
						
							|  |  |  |     }; | 
					
						
							| 
									
										
										
										
											2018-06-30 01:58:35 +02:00
										 |  |  |     users.groups.i2p.gid = config.ids.gids.i2p; | 
					
						
							| 
									
										
										
										
											2015-04-15 12:52:06 +02:00
										 |  |  |     systemd.services.i2p = { | 
					
						
							|  |  |  |       description = "I2P router with administration interface for hidden services"; | 
					
						
							|  |  |  |       after = [ "network.target" ]; | 
					
						
							|  |  |  |       wantedBy = [ "multi-user.target" ]; | 
					
						
							|  |  |  |       serviceConfig = { | 
					
						
							|  |  |  |         User = "i2p"; | 
					
						
							|  |  |  |         WorkingDirectory = homeDir; | 
					
						
							|  |  |  |         Restart = "on-abort"; | 
					
						
							|  |  |  |         ExecStart = "${pkgs.i2p}/bin/i2prouter-plain"; | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | } |