forked from mirrors/nixpkgs
* Mount all file systems in the fileSystems option.
svn path=/nixos/trunk/; revision=7449
This commit is contained in:
parent
c78a1d9781
commit
b363fc4c57
|
@ -31,6 +31,12 @@ import ../upstart-jobs/gather.nix {
|
|||
inherit (pkgs) kernel module_init_tools;
|
||||
})
|
||||
|
||||
# Mount file systems.
|
||||
(import ../upstart-jobs/filesystems.nix {
|
||||
inherit (pkgs) utillinux;
|
||||
fileSystems = config.get ["fileSystems"];
|
||||
})
|
||||
|
||||
# Swapping.
|
||||
(import ../upstart-jobs/swap.nix {
|
||||
inherit (pkgs) utillinux;
|
||||
|
|
45
upstart-jobs/filesystems.nix
Normal file
45
upstart-jobs/filesystems.nix
Normal file
|
@ -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
|
||||
";
|
||||
|
||||
}
|
Loading…
Reference in a new issue