45 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
		
		
			
		
	
	
			45 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| 
								 | 
							
								{ config, lib, pkgs, ... }:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								with lib;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								let
							 | 
						||
| 
								 | 
							
								  cfg = config.services.nextdns;
							 | 
						||
| 
								 | 
							
								in {
							 | 
						||
| 
								 | 
							
								  options = {
							 | 
						||
| 
								 | 
							
								    services.nextdns = {
							 | 
						||
| 
								 | 
							
								      enable = mkOption {
							 | 
						||
| 
								 | 
							
								        type = types.bool;
							 | 
						||
| 
								 | 
							
								        default = false;
							 | 
						||
| 
								 | 
							
								        description = "Whether to enable the NextDNS DNS/53 to DoH Proxy service.";
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								      arguments = mkOption {
							 | 
						||
| 
								 | 
							
								        type = types.listOf types.str;
							 | 
						||
| 
								 | 
							
								        default = [];
							 | 
						||
| 
								 | 
							
								        example = [ "-config" "10.0.3.0/24=abcdef" ];
							 | 
						||
| 
								 | 
							
								        description = "Additional arguments to be passed to nextdns run.";
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  # https://github.com/nextdns/nextdns/blob/628ea509eaaccd27adb66337db03e5b56f6f38a8/host/service/systemd/service.go
							 | 
						||
| 
								 | 
							
								  config = mkIf cfg.enable {
							 | 
						||
| 
								 | 
							
								    systemd.services.nextdns = {
							 | 
						||
| 
								 | 
							
								      description = "NextDNS DNS/53 to DoH Proxy";
							 | 
						||
| 
								 | 
							
								      environment = {
							 | 
						||
| 
								 | 
							
								        SERVICE_RUN_MODE = "1";
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								      serviceConfig = {
							 | 
						||
| 
								 | 
							
								        StartLimitInterval = 5;
							 | 
						||
| 
								 | 
							
								        StartLimitBurst = 10;
							 | 
						||
| 
								 | 
							
								        ExecStart = "${pkgs.nextdns}/bin/nextdns run ${escapeShellArgs config.services.nextdns.arguments}";
							 | 
						||
| 
								 | 
							
								        RestartSec = 120;
							 | 
						||
| 
								 | 
							
								        LimitMEMLOCK = "infinity";
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								      after = [ "network.target" ];
							 | 
						||
| 
								 | 
							
								      before = [ "nss-lookup.target" ];
							 | 
						||
| 
								 | 
							
								      wants = [ "nss-lookup.target" ];
							 | 
						||
| 
								 | 
							
								      wantedBy = [ "multi-user.target" ];
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								}
							 |