nixos filesystems: unify early filesystems handling

A new internal config option `fileSystems.<name>.early` is added to indicate
that the filesystem needs to be loaded very early (i.e. in initrd). They are
transformed to a shell script in `system.build.earlyMountScript` with calls to
an undefined `specialMount` function, which is expected to be caller-specific.
This option is used by stage-1, stage-2 and activation script to set up and
remount those filesystems.  Options for them are updated according to systemd
defaults.
This commit is contained in:
Nikolay Amiantov
2016-08-27 13:38:20 +03:00
parent 3f70fcd4c1
commit 6efcfe03ae
7 changed files with 75 additions and 59 deletions
@@ -154,9 +154,15 @@ in
system.activationScripts.tmpfs =
''
${pkgs.utillinux}/bin/mount -o "remount,size=${config.boot.devSize}" none /dev
${pkgs.utillinux}/bin/mount -o "remount,size=${config.boot.devShmSize}" none /dev/shm
${pkgs.utillinux}/bin/mount -o "remount,size=${config.boot.runSize}" none /run
specialMount() {
local device="$1"
local mountPoint="$2"
local options="$3"
local fsType="$4"
${pkgs.utillinux}/bin/mount -t "$fsType" -o "remount,$options" "$device" "$mountPoint"
}
source ${config.system.build.earlyMountScript}
'';
};