 f3876cbba0
			
		
	
	
		f3876cbba0
		
	
	
	
	
		
			
			* Add extraOptions option, to pass arbitrary command line options to atftp. Especially useful to specify which address to bind to (--bind-addres ...). * Improve descriptions (fix a typo, document default bind address, don't repeat service name in systemd description + capitalize) * Change default server directory from /var/empty to /srv/tftp, and change types.str to types.path.
		
			
				
	
	
		
			66 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| # NixOS module for atftpd TFTP server
 | |
| 
 | |
| { config, pkgs, lib, ... }:
 | |
| 
 | |
| with lib;
 | |
| 
 | |
| let
 | |
| 
 | |
|   cfg = config.services.atftpd;
 | |
| 
 | |
| in
 | |
| 
 | |
| {
 | |
| 
 | |
|   options = {
 | |
| 
 | |
|     services.atftpd = {
 | |
| 
 | |
|       enable = mkOption {
 | |
|         default = false;
 | |
|         type = types.bool;
 | |
|         description = ''
 | |
|           Whether to enable the atftpd TFTP server. By default, the server
 | |
|           binds to address 0.0.0.0.
 | |
|         '';
 | |
|       };
 | |
| 
 | |
|       extraOptions = mkOption {
 | |
|         default = [];
 | |
|         type = types.listOf types.str;
 | |
|         example = literalExample ''
 | |
|           [ "--bind-address 192.168.9.1"
 | |
|             "--verbose=7"
 | |
|           ]
 | |
|         '';
 | |
|         description = ''
 | |
|           Extra command line arguments to pass to atftp.
 | |
|         '';
 | |
|       };
 | |
| 
 | |
|       root = mkOption {
 | |
|         default = "/srv/tftp";
 | |
|         type = types.path;
 | |
|         description = ''
 | |
|           Document root directory for the atftpd.
 | |
|         '';
 | |
|       };
 | |
| 
 | |
|     };
 | |
| 
 | |
|   };
 | |
| 
 | |
|   config = mkIf cfg.enable {
 | |
| 
 | |
|     systemd.services.atftpd = {
 | |
|       description = "TFTP Server";
 | |
|       after = [ "network.target" ];
 | |
|       wantedBy = [ "multi-user.target" ];
 | |
|       # runs as nobody
 | |
|       serviceConfig.ExecStart = "${pkgs.atftp}/sbin/atftpd --daemon --no-fork ${lib.concatStringsSep " " cfg.extraOptions} ${cfg.root}";
 | |
|     };
 | |
| 
 | |
|   };
 | |
| 
 | |
| }
 |