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}";
 | 
						|
      };
 | 
						|
    };
 | 
						|
  };
 | 
						|
}
 |