| 
									
										
										
										
											2018-06-03 21:48:05 +02:00
										 |  |  | { config, lib, pkgs, ... }: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | with lib; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | let | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   cfg = config.services.bloop; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | in { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   options.services.bloop = { | 
					
						
							| 
									
										
										
										
											2019-07-25 09:24:25 +02:00
										 |  |  |     extraOptions = mkOption { | 
					
						
							|  |  |  |       type = types.listOf types.str; | 
					
						
							|  |  |  |       default = [ ]; | 
					
						
							|  |  |  |       example = [ | 
					
						
							|  |  |  |         "-J-Xmx2G" | 
					
						
							|  |  |  |         "-J-XX:MaxInlineLevel=20" | 
					
						
							|  |  |  |         "-J-XX:+UseParallelGC" | 
					
						
							|  |  |  |       ]; | 
					
						
							|  |  |  |       description = ''
 | 
					
						
							|  |  |  |         Specifies additional command line argument to pass to bloop | 
					
						
							|  |  |  |         java process. | 
					
						
							|  |  |  |       '';
 | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-06-03 21:48:05 +02:00
										 |  |  |     install = mkOption { | 
					
						
							|  |  |  |       type = types.bool; | 
					
						
							|  |  |  |       default = false; | 
					
						
							|  |  |  |       description = ''
 | 
					
						
							|  |  |  |         Whether to install a user service for the Bloop server. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         The service must be manually started for each user with | 
					
						
							|  |  |  |         "systemctl --user start bloop". | 
					
						
							|  |  |  |       '';
 | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   config = mkIf (cfg.install) { | 
					
						
							|  |  |  |     systemd.user.services.bloop = { | 
					
						
							|  |  |  |       description = "Bloop Scala build server"; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-24 15:39:08 +02:00
										 |  |  |       environment = { | 
					
						
							|  |  |  |         PATH = mkForce "${makeBinPath [ config.programs.java.package ]}"; | 
					
						
							|  |  |  |       }; | 
					
						
							| 
									
										
										
										
											2018-06-03 21:48:05 +02:00
										 |  |  |       serviceConfig = { | 
					
						
							| 
									
										
										
										
											2019-07-24 15:39:08 +02:00
										 |  |  |         Type        = "simple"; | 
					
						
							|  |  |  |         ExecStart   = ''${pkgs.bloop}/bin/bloop server''; | 
					
						
							|  |  |  |         Restart     = "always"; | 
					
						
							| 
									
										
										
										
											2018-06-03 21:48:05 +02:00
										 |  |  |       }; | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     environment.systemPackages = [ pkgs.bloop ]; | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | } |