 92d689d66b
			
		
	
	
		92d689d66b
		
	
	
	
	
		
			
			This removes the original dnscrypt-proxy module as well. Co-authored-by: Atemu <atemu.main@gmail.com> Co-authored-by: Silvan Mosberger <contact@infinisil.com> Co-authored-by: ryneeverett <ryneeverett@gmail.com> Co-authored-by: worldofpeace <worldofpeace@protonmail.ch>
		
			
				
	
	
		
			62 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { config, lib, pkgs, ... }: with lib;
 | |
| 
 | |
| let
 | |
|   cfg = config.services.dnscrypt-proxy2;
 | |
| in
 | |
| 
 | |
| {
 | |
|   options.services.dnscrypt-proxy2 = {
 | |
|     enable = mkEnableOption "dnscrypt-proxy2";
 | |
| 
 | |
|     settings = mkOption {
 | |
|       description = ''
 | |
|         Attrset that is converted and passed as TOML config file.
 | |
|         For available params, see: <link xlink:href="https://github.com/DNSCrypt/dnscrypt-proxy/blob/master/dnscrypt-proxy/example-dnscrypt-proxy.toml"/>
 | |
|       '';
 | |
|       example = literalExample ''
 | |
|         {
 | |
|           sources.public-resolvers = {
 | |
|             urls = [ "https://download.dnscrypt.info/resolvers-list/v2/public-resolvers.md" ];
 | |
|             cache_file = "public-resolvers.md";
 | |
|             minisign_key = "RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3";
 | |
|             refresh_delay = 72;
 | |
|           };
 | |
|         }
 | |
|       '';
 | |
|       type = types.attrs;
 | |
|       default = {};
 | |
|     };
 | |
| 
 | |
|     configFile = mkOption {
 | |
|       description = ''
 | |
|         Path to TOML config file. See: <link xlink:href="https://github.com/DNSCrypt/dnscrypt-proxy/blob/master/dnscrypt-proxy/example-dnscrypt-proxy.toml"/>
 | |
|         If this option is set, it will override any configuration done in options.services.dnscrypt-proxy2.settings.
 | |
|       '';
 | |
|       example = "/etc/dnscrypt-proxy/dnscrypt-proxy.toml";
 | |
|       type = types.path;
 | |
|       default = pkgs.runCommand "dnscrypt-proxy.toml" {
 | |
|         json = builtins.toJSON cfg.settings;
 | |
|         passAsFile = [ "json" ];
 | |
|       } ''
 | |
|         ${pkgs.remarshal}/bin/json2toml < $jsonPath > $out
 | |
|       '';
 | |
|       defaultText = literalExample "TOML file generated from services.dnscrypt-proxy2.settings";
 | |
|     };
 | |
|   };
 | |
| 
 | |
|   config = mkIf cfg.enable {
 | |
| 
 | |
|     networking.nameservers = lib.mkDefault [ "127.0.0.1" ];
 | |
| 
 | |
|     systemd.services.dnscrypt-proxy2 = {
 | |
|       after = [ "network.target" ];
 | |
|       wantedBy = [ "multi-user.target" ];
 | |
|       serviceConfig = {
 | |
|         AmbientCapabilities = "CAP_NET_BIND_SERVICE";
 | |
|         DynamicUser = true;
 | |
|         ExecStart = "${pkgs.dnscrypt-proxy2}/bin/dnscrypt-proxy -config ${cfg.configFile}";
 | |
|       };
 | |
|     };
 | |
|   };
 | |
| }
 |