anchor.diff:          '';
           description = "
             file contents of /etc/auto.master. See man auto.master
  -          see 
  -          man auto.master and man 5 autofs
  +          See man 5 auto.master and man 5 autofs.
           ";
  +      };
  +
  +      kernelModules = mkOption {
  +        default = ["fuse"];
  +        description="kernel modules to load";
         };
   
         timeout = mkOption {
  
positive.code: 
        debug = mkOption {
          default = false;
          description = "pass -d to automount and write log to /var/log/autofs";
        };
        
      };
  
    };
  
negative.code:           };
  
          preStart =
            pkgs.lib.concatMapStrings (module : "modprobe ${module} || true\n")
                                      (["autofs4"] ++ cfg.kernelModules);
  
          preStop = 
            ''
              set -e; while :; do pkill -TERM automount; sleep 1; done
            '';
  
          # automount doesn't clean up when receiving SIGKILL.
          # umount -l should unmount the directories recursively when they are no longer used
          # It does, but traces are left in /etc/mtab. So unmount recursively..
          postStop =
            ''
            PATH=${pkgs.gnused}/bin:${pkgs.coreutils}/bin
            exec &> /tmp/logss
            # double quote for sed:
            escapeSpaces(){ sed 's/ /\\\\040/g'; }
            unescapeSpaces(){ sed 's/\\040/ /g'; }
            sed -n 's@^\s*\(\([^\\ ]\|\\ \)*\)\s.*@\1@p' ${autoMaster} | sed 's/[\\]//' | while read mountPoint; do
              sed -n "s@[^ ]\+\s\+\($(echo "$mountPoint"| escapeSpaces)[^ ]*\).*@\1@p" /proc/mounts | sort -r | unescapeSpaces| while read smountP; do
                ${mount}/bin/umount -l "$smountP" || true
              done
            done
            '';
  
          script =
            ''
              ${if cfg.debug then "exec &> /var/log/autofs" else ""}
              exec ${pkgs.autofs5}/sbin/automount ${if cfg.debug then "-d" else ""} -f -t ${builtins.toString cfg.timeout} "${autoMaster}" ${if cfg.debug then "-l7" else ""}
            '';
        };
            
  