summary refs log tree commit diff
path: root/upstart-jobs/filesystems.nix
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2006-12-21 14:22:40 +0000
committerEelco Dolstra <eelco.dolstra@logicblox.com>2006-12-21 14:22:40 +0000
commitb363fc4c5731f3c085eb88a8e699483625bffbfc (patch)
tree1c27a5d29dc26bd4a89119d54c3e1802e671c1fe /upstart-jobs/filesystems.nix
parentc78a1d97814325b257c29a7482306a90ce75ec65 (diff)
downloadnixpkgs-b363fc4c5731f3c085eb88a8e699483625bffbfc.tar
nixpkgs-b363fc4c5731f3c085eb88a8e699483625bffbfc.tar.gz
nixpkgs-b363fc4c5731f3c085eb88a8e699483625bffbfc.tar.bz2
nixpkgs-b363fc4c5731f3c085eb88a8e699483625bffbfc.tar.lz
nixpkgs-b363fc4c5731f3c085eb88a8e699483625bffbfc.tar.xz
nixpkgs-b363fc4c5731f3c085eb88a8e699483625bffbfc.tar.zst
nixpkgs-b363fc4c5731f3c085eb88a8e699483625bffbfc.zip
* Mount all file systems in the fileSystems option.
svn path=/nixos/trunk/; revision=7449
Diffstat (limited to 'upstart-jobs/filesystems.nix')
-rw-r--r--upstart-jobs/filesystems.nix45
1 files changed, 45 insertions, 0 deletions
diff --git a/upstart-jobs/filesystems.nix b/upstart-jobs/filesystems.nix
new file mode 100644
index 00000000000..0c581db9634
--- /dev/null
+++ b/upstart-jobs/filesystems.nix
@@ -0,0 +1,45 @@
+{utillinux, fileSystems}:
+
+let
+
+  # !!! use XML
+  mountPoints = map (fs: fs.mountPoint) fileSystems;
+  devices = map (fs: fs.device) fileSystems;
+
+in 
+
+{
+  name = "filesystems";
+  
+  job = "
+start on startup
+start on new-devices
+
+script
+    mountPoints=(${toString mountPoints})  
+    devices=(${toString devices})
+
+    for ((n = 0; n < \${#mountPoints[*]}; n++)); do
+        mountPoint=\${mountPoints[$n]}
+        device=\${devices[$n]}
+
+        # If $device is already mounted somewhere else, unmount it first.
+        prevMountPoint=$(cat /proc/mounts | grep \"^$device \" | sed 's|^[^ ]\\+ \\+\\([^ ]\\+\\).*|\\1|')
+
+        if test \"$prevMountPoint\" = \"$mountPoint\"; then continue; fi
+
+        if test -n \"$prevMountPoint\"; then
+            echo \"unmount $device from $prevMountPoint\"
+            ${utillinux}/bin/umount \"$prevMountPoint\" || true
+        fi
+
+        echo \"mounting $device on $mountPoint\"
+
+        mkdir -p \"$mountPoint\" || true
+        ${utillinux}/bin/mount \"$device\" \"$mountPoint\" || true
+    done
+
+end script
+  ";
+
+}