ocamlPackages.hxd: 0.3.2 -> 0.3.3 (#364231)
[NixPkgs.git] / nixos / modules / services / misc / autofs.nix
blobcdb6d606d57ed9ecb04cade6a46a47b6aa6d5532
2   config,
3   lib,
4   pkgs,
5   ...
6 }:
7 let
9   cfg = config.services.autofs;
11   autoMaster = pkgs.writeText "auto.master" cfg.autoMaster;
17   ###### interface
19   options = {
21     services.autofs = {
23       enable = lib.mkOption {
24         type = lib.types.bool;
25         default = false;
26         description = ''
27           Mount filesystems on demand. Unmount them automatically.
28           You may also be interested in afuse.
29         '';
30       };
32       autoMaster = lib.mkOption {
33         type = lib.types.str;
34         example = lib.literalExpression ''
35           let
36             mapConf = pkgs.writeText "auto" '''
37              kernel    -ro,soft,intr       ftp.kernel.org:/pub/linux
38              boot      -fstype=ext2        :/dev/hda1
39              windoze   -fstype=smbfs       ://windoze/c
40              removable -fstype=ext2        :/dev/hdd
41              cd        -fstype=iso9660,ro  :/dev/hdc
42              floppy    -fstype=auto        :/dev/fd0
43              server    -rw,hard,intr       / -ro myserver.me.org:/ \
44                                            /usr myserver.me.org:/usr \
45                                            /home myserver.me.org:/home
46             ''';
47           in '''
48             /auto file:''${mapConf}
49           '''
50         '';
51         description = ''
52           Contents of `/etc/auto.master` file. See {command}`auto.master(5)` and {command}`autofs(5)`.
53         '';
54       };
56       timeout = lib.mkOption {
57         type = lib.types.int;
58         default = 600;
59         description = "Set the global minimum timeout, in seconds, until directories are unmounted";
60       };
62       debug = lib.mkOption {
63         type = lib.types.bool;
64         default = false;
65         description = ''
66           Pass -d and -7 to automount and write log to the system journal.
67         '';
68       };
70     };
72   };
74   ###### implementation
76   config = lib.mkIf cfg.enable {
78     boot.kernelModules = [ "autofs" ];
80     systemd.services.autofs = {
81       description = "Automounts filesystems on demand";
82       after = [
83         "network.target"
84         "ypbind.service"
85         "sssd.service"
86         "network-online.target"
87       ];
88       wants = [ "network-online.target" ];
89       wantedBy = [ "multi-user.target" ];
91       preStart = ''
92         # There should be only one autofs service managed by systemd, so this should be safe.
93         rm -f /tmp/autofs-running
94       '';
96       serviceConfig = {
97         Type = "forking";
98         PIDFile = "/run/autofs.pid";
99         ExecStart = "${pkgs.autofs5}/bin/automount ${lib.optionalString cfg.debug "-d"} -p /run/autofs.pid -t ${builtins.toString cfg.timeout} ${autoMaster}";
100         ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
101       };
102     };
104   };