Merge #361424: refactor lib.packagesFromDirectoryRecursive (v2)
[NixPkgs.git] / nixos / modules / services / networking / atftpd.nix
blobb2446dcbd65b8f0b2e3e6ba72ae3c929b0e9b795
1 # NixOS module for atftpd TFTP server
3   config,
4   pkgs,
5   lib,
6   ...
7 }:
8 let
10   cfg = config.services.atftpd;
16   options = {
18     services.atftpd = {
20       enable = lib.mkOption {
21         default = false;
22         type = lib.types.bool;
23         description = ''
24           Whether to enable the atftpd TFTP server. By default, the server
25           binds to address 0.0.0.0.
26         '';
27       };
29       extraOptions = lib.mkOption {
30         default = [ ];
31         type = lib.types.listOf lib.types.str;
32         example = lib.literalExpression ''
33           [ "--bind-address 192.168.9.1"
34             "--verbose=7"
35           ]
36         '';
37         description = ''
38           Extra command line arguments to pass to atftp.
39         '';
40       };
42       root = lib.mkOption {
43         default = "/srv/tftp";
44         type = lib.types.path;
45         description = ''
46           Document root directory for the atftpd.
47         '';
48       };
50     };
52   };
54   config = lib.mkIf cfg.enable {
56     systemd.services.atftpd = {
57       description = "TFTP Server";
58       after = [ "network.target" ];
59       wantedBy = [ "multi-user.target" ];
60       # runs as nobody
61       serviceConfig.ExecStart = "${pkgs.atftp}/sbin/atftpd --daemon --no-fork ${lib.concatStringsSep " " cfg.extraOptions} ${cfg.root}";
62     };
64   };