diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2006-12-21 14:22:40 +0000 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2006-12-21 14:22:40 +0000 |
commit | b363fc4c5731f3c085eb88a8e699483625bffbfc (patch) | |
tree | 1c27a5d29dc26bd4a89119d54c3e1802e671c1fe | |
parent | c78a1d97814325b257c29a7482306a90ce75ec65 (diff) | |
download | nixpkgs-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
-rw-r--r-- | configuration/upstart.nix | 6 | ||||
-rw-r--r-- | upstart-jobs/filesystems.nix | 45 |
2 files changed, 51 insertions, 0 deletions
diff --git a/configuration/upstart.nix b/configuration/upstart.nix index 5de0164b062..f0870159ead 100644 --- a/configuration/upstart.nix +++ b/configuration/upstart.nix @@ -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; 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 + "; + +} |