Author: viric
Date: Wed Mar 21 11:58:06 2012
New Revision: 33330
URL: https://nixos.org/websvn/nix/?rev=33330&sc=1

Log:
Adding idmapd, for NFSv4.

Patch by Rickard Nilsson.

This may fix rpc.statd start.

Modified:
   nixos/trunk/modules/services/network-filesystems/nfsd.nix
   nixos/trunk/modules/tasks/filesystems.nix
   nixos/trunk/modules/tasks/filesystems/nfs.nix

Modified: nixos/trunk/modules/services/network-filesystems/nfsd.nix
==============================================================================
--- nixos/trunk/modules/services/network-filesystems/nfsd.nix   Wed Mar 21 
11:56:33 2012        (r33329)
+++ nixos/trunk/modules/services/network-filesystems/nfsd.nix   Wed Mar 21 
11:58:06 2012        (r33330)
@@ -69,7 +69,7 @@
 
     services.portmap.enable = true;
 
-    services.nfs.client.enable = true; # needed for statd
+    services.nfs.client.enable = true; # needed for statd and idmapd
 
     environment.systemPackages = [ pkgs.nfsUtils ];
 
@@ -105,6 +105,7 @@
         postStart =
           ''
             ensure statd
+            ensure idmapd
           '';
       };
 

Modified: nixos/trunk/modules/tasks/filesystems.nix
==============================================================================
--- nixos/trunk/modules/tasks/filesystems.nix   Wed Mar 21 11:56:33 2012        
(r33329)
+++ nixos/trunk/modules/tasks/filesystems.nix   Wed Mar 21 11:58:06 2012        
(r33330)
@@ -187,6 +187,7 @@
             
             ${optionalString config.services.nfs.client.enable ''
               ensure statd || true
+              ensure idmapd || true
             ''}
 
             echo "mounting filesystems..."

Modified: nixos/trunk/modules/tasks/filesystems/nfs.nix
==============================================================================
--- nixos/trunk/modules/tasks/filesystems/nfs.nix       Wed Mar 21 11:56:33 
2012        (r33329)
+++ nixos/trunk/modules/tasks/filesystems/nfs.nix       Wed Mar 21 11:58:06 
2012        (r33330)
@@ -6,6 +6,27 @@
 
   inInitrd = any (fs: fs == "nfs") config.boot.initrd.supportedFilesystems;
 
+  nfsStateDir = "/var/lib/nfs";
+
+  rpcMountpoint = "${nfsStateDir}/rpc_pipefs";
+
+  idmapdConfFile = {
+    target = "idmapd.conf";
+    source = pkgs.writeText "idmapd.conf" ''
+      [General]
+      Pipefs-Directory = ${rpcMountpoint}
+      ${optionalString (config.networking.domain != "")
+        "Domain = ${config.networking.domain}"}
+
+      [Mapping]
+      Nobody-User = nobody
+      Nobody-Group = nogroup
+
+      [Translation]
+      Method = nsswitch
+    '';
+  };
+
 in
 
 {
@@ -40,6 +61,8 @@
         cp -v ${pkgs.klibc}/lib/klibc/bin.static/nfsmount $out/bin
       '';
 
+    environment.etc = singleton idmapdConfFile;
+
     jobs.statd =
       { description = "Kernel NFS server - Network Status Monitor";
 
@@ -50,9 +73,8 @@
         preStart =
           ''
             ensure portmap
-            mkdir -p /var/lib/nfs
-            mkdir -p /var/lib/nfs/sm
-            mkdir -p /var/lib/nfs/sm.bak
+            mkdir -p ${nfsStateDir}/sm
+            mkdir -p ${nfsStateDir}/sm.bak
             sm-notify -d
           '';
 
@@ -61,5 +83,29 @@
         exec = "rpc.statd --no-notify";
       };
 
+    jobs.idmapd =
+      { description = "Kernel NFS server - ID Map Daemon";
+
+        path = [ pkgs.nfsUtils pkgs.sysvtools pkgs.utillinux ];
+
+        stopOn = "starting shutdown";
+
+        preStart =
+          ''
+            ensure portmap
+            mkdir -p ${rpcMountpoint}
+            mount -t rpc_pipefs rpc_pipefs ${rpcMountpoint}
+          '';
+
+        postStop =
+          ''
+            umount ${rpcMountpoint}
+          '';
+
+        daemonType = "fork";
+
+        exec = "rpc.idmapd";
+      };
+
   };
 }
_______________________________________________
nix-commits mailing list
[email protected]
http://lists.science.uu.nl/mailman/listinfo/nix-commits

Reply via email to