From e49ea464664485eda5d2685fcebd790fa1af32cc Mon Sep 17 00:00:00 2001 From: Marc Weber Date: Wed, 23 Sep 2009 00:54:09 +0000 Subject: [PATCH] nfs-kernel: fix creating directories by skipping comments and interpreting quotes, take input from ${exports} which may be different from /etc/exports which also restarts the service in this case updating the export list Also run rpc.statd in forground so that it doesn't get respawned svn path=/nixos/trunk/; revision=17358 --- .../network-filesystems/nfs-kernel.nix | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/modules/services/network-filesystems/nfs-kernel.nix b/modules/services/network-filesystems/nfs-kernel.nix index 6868e75ff1a..d2667e1cd18 100644 --- a/modules/services/network-filesystems/nfs-kernel.nix +++ b/modules/services/network-filesystems/nfs-kernel.nix @@ -19,11 +19,12 @@ let }; exports = mkOption { - default = "/etc/exports"; + check = v: v != "/etc/exports"; # this won't work description = " the file listing the directories to be exported. install nfsUtils and run man exports to learn about its format. The exports setting can either be a file path or the file contents. + Don't use /etc/exports. This won't work as nix will overwrite it. "; }; @@ -92,17 +93,16 @@ mkIf config.services.nfsKernel.enable { ${if cfg.createMountPoints == true then '' - cat /etc/exports | while read line - do - for i in $line - do - mkdir -p $i - break - done - done + # create export directories: + # skip comments, take first col which may either be a quoted + # "foo bar" or just foo (-> man export) + sed '/^#.*/d;s/^"\([^"]*\)".*/\1/;t;s/[ ].*//' ${exports} \ + | xargs -d '\n' mkdir -p '' else ""} + # exports file is ${exports} + # keep this comment so that this job is restarted whenever exports changes! exportfs -ra end script @@ -146,7 +146,7 @@ mkIf config.services.nfsKernel.enable { mkdir -p /var/lib/nfs end script - respawn ${pkgs.nfsUtils}/sbin/rpc.statd + respawn ${pkgs.nfsUtils}/sbin/rpc.statd -F ''; } ];