From 62e92c278f90d12767d2e3e2dd80386553bce15a Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Sat, 5 Dec 2015 23:05:13 +0100 Subject: We now have autofs in unstable --- customized/autofs.nix | 120 -------------------------------------------------- 1 file changed, 120 deletions(-) delete mode 100644 customized/autofs.nix (limited to 'customized') diff --git a/customized/autofs.nix b/customized/autofs.nix deleted file mode 100644 index f4a1059d..00000000 --- a/customized/autofs.nix +++ /dev/null @@ -1,120 +0,0 @@ -{ config, lib, pkgs, ... }: - -with lib; - -let - - cfg = config.services.autofs; - - autoMaster = pkgs.writeText "auto.master" cfg.autoMaster; - -in - -{ - - ###### interface - - options = { - - services.autofs = { - - enable = mkOption { - default = false; - description = " - Mount filesystems on demand. Unmount them automatically. - You may also be interested in afuese. - "; - }; - - autoMaster = mkOption { - example = literalExample '' - autoMaster = let - mapConf = pkgs.writeText "auto" ''' - kernel -ro,soft,intr ftp.kernel.org:/pub/linux - boot -fstype=ext2 :/dev/hda1 - windoze -fstype=smbfs ://windoze/c - removable -fstype=ext2 :/dev/hdd - cd -fstype=iso9660,ro :/dev/hdc - floppy -fstype=auto :/dev/fd0 - server -rw,hard,intr / -ro myserver.me.org:/ \ - /usr myserver.me.org:/usr \ - /home myserver.me.org:/home - '''; - in ''' - /auto file:''${mapConf} - ''' - ''; - description = " - file contents of /etc/auto.master. See man auto.master - See man 5 auto.master and man 5 autofs. - "; - }; - - timeout = mkOption { - default = 600; - description = "Set the global minimum timeout, in seconds, until directories are unmounted"; - }; - - debug = mkOption { - default = false; - description = " - pass -d and -7 to automount and write log to /var/log/autofs - "; - }; - - }; - - }; - - - ###### implementation - - config = mkIf cfg.enable { - - environment.etc = singleton - { target = "auto.master"; - source = pkgs.writeText "auto.master" cfg.autoMaster; - }; - - boot.kernelModules = [ "autofs4" ]; - - jobs.autofs = - { description = "Filesystem automounter"; - - startOn = "started network-interfaces"; - stopOn = "stopping network-interfaces"; - - path = [ pkgs.nfs-utils pkgs.sshfsFuse ]; - - 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 - ${pkgs.utillinux}/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 ""} - ''; - }; - - }; - -} -- cgit v1.2.3