63 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
		
		
			
		
	
	
			63 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| 
								 | 
							
								{ config, pkgs, lib, ... } @ args:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								with lib;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								let
							 | 
						||
| 
								 | 
							
								  cfg = config.services.leaps;
							 | 
						||
| 
								 | 
							
								  stateDir = "/var/lib/leaps/";
							 | 
						||
| 
								 | 
							
								in
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  options = {
							 | 
						||
| 
								 | 
							
								    services.leaps = {
							 | 
						||
| 
								 | 
							
								      enable = mkEnableOption "leaps";
							 | 
						||
| 
								 | 
							
								      port = mkOption {
							 | 
						||
| 
								 | 
							
								        type = types.int;
							 | 
						||
| 
								 | 
							
								        default = 8080;
							 | 
						||
| 
								 | 
							
								        description = "A port where leaps listens for incoming http requests";
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								      address = mkOption {
							 | 
						||
| 
								 | 
							
								        default = "";
							 | 
						||
| 
								 | 
							
								        type = types.str;
							 | 
						||
| 
								 | 
							
								        example = "127.0.0.1";
							 | 
						||
| 
								 | 
							
								        description = "Hostname or IP-address to listen to. By default it will listen on all interfaces.";
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								      path = mkOption {
							 | 
						||
| 
								 | 
							
								        default = "/";
							 | 
						||
| 
								 | 
							
								        type = types.path;
							 | 
						||
| 
								 | 
							
								        description = "Subdirectory used for reverse proxy setups";
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  config = mkIf cfg.enable {
							 | 
						||
| 
								 | 
							
								    users = {
							 | 
						||
| 
								 | 
							
								      users.leaps = {
							 | 
						||
| 
								 | 
							
								        uid             = config.ids.uids.leaps;
							 | 
						||
| 
								 | 
							
								        description     = "Leaps server user";
							 | 
						||
| 
								 | 
							
								        group           = "leaps";
							 | 
						||
| 
								 | 
							
								        home            = stateDir;
							 | 
						||
| 
								 | 
							
								        createHome      = true;
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      groups.leaps = {
							 | 
						||
| 
								 | 
							
								        gid = config.ids.gids.leaps;
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    systemd.services.leaps = {
							 | 
						||
| 
								 | 
							
								      description   = "leaps service";
							 | 
						||
| 
								 | 
							
								      wantedBy      = [ "multi-user.target" ];
							 | 
						||
| 
								 | 
							
								      after         = [ "network.target" ];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      serviceConfig = {
							 | 
						||
| 
								 | 
							
								        User = "leaps";
							 | 
						||
| 
								 | 
							
								        Group = "leaps";
							 | 
						||
| 
								 | 
							
								        Restart = "on-failure";
							 | 
						||
| 
								 | 
							
								        WorkingDirectory = stateDir;
							 | 
						||
| 
								 | 
							
								        PrivateTmp = true;
							 | 
						||
| 
								 | 
							
								        ExecStart = "${pkgs.leaps.bin}/bin/leaps -path ${toString cfg.path} -address ${cfg.address}:${toString cfg.port}";
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								}
							 |