From 9d1b72a6c74140099235f408f559256fc95cc386 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Thu, 8 Mar 2012 21:07:25 +0000 Subject: [PATCH] Making nixos fileSystems aware of fsType "reiserfs" and "btrfs", regarding modules, tools, intrd pieces, ... That's only useful if the user specifies fsType, though. svn path=/nixos/trunk/; revision=32912 --- modules/tasks/filesystems.nix | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/modules/tasks/filesystems.nix b/modules/tasks/filesystems.nix index 614d4415062..59e1137852a 100644 --- a/modules/tasks/filesystems.nix +++ b/modules/tasks/filesystems.nix @@ -3,12 +3,33 @@ with pkgs.lib; let - needsBtrfsProgs = any (fs: fs.fsType == "btrfs") config.fileSystems; + usingSome = fsname: any (fs: fs.fsType == fsname) config.fileSystems; + usingSomeStage1 = fsname: any (fs: fs.fsType == fsname && + (fs.mountPoint == "/" || fs.neededForBoot)) config.fileSystems; + + usingBtrfs = usingSome "btrfs"; + usingBtrfsStage1 = usingSomeStage1 "btrfs"; + + usingReiserfs = usingSome "reiserfs"; + usingReiserfsStage1 = usingSomeStage1 "reiserfs"; # Packages that provide fsck backends. - fsPackages = [ pkgs.e2fsprogs pkgs.reiserfsprogs pkgs.dosfstools ] - ++ optional needsBtrfsProgs pkgs.btrfsProgs; + fsPackages = [ pkgs.e2fsprogs pkgs.dosfstools ] + ++ optional usingReiserfs pkgs.btrfsProgs + ++ optional usingBtrfs pkgs.btrfsProgs; + fsKernelModules = optional usingBtrfsStage1 [ "btrfs" "crc32c" ] + ++ optional usingReiserfsStage1 [ "reiserfs" ]; + + fsExtraUtilsCommands = optionalString usingBtrfsStage1 '' + cp -v ${pkgs.btrfsProgs}/bin/btrfsck $out/bin + cp -v ${pkgs.btrfsProgs}/bin/btrfs $out/bin + ln -sv btrfsck $out/bin/fsck.btrfs + ''; + + fsPostDeviceCommands = optionalString usingBtrfsStage1 '' + btrfs device scan + ''; in @@ -162,6 +183,10 @@ in target = "fstab"; }; + boot.initrd.extraUtilsCommands = fsExtraUtilsCommands; + boot.initrd.postDeviceCommands = fsPostDeviceCommands; + boot.initrd.kernelModules = fsKernelModules; + jobs.mountall = { startOn = "started udev" # !!! The `started nfs-kernel-statd' condition shouldn't be @@ -178,7 +203,7 @@ in exec > /dev/console 2>&1 echo "mounting filesystems..." export PATH=${config.system.sbin.mount}/bin:${makeSearchPath "sbin" ([pkgs.utillinux] ++ fsPackages)}:$PATH - ${optionalString needsBtrfsProgs "${pkgs.btrfsProgs}/bin/btrfs device scan"} + ${optionalString usingBtrfs "${pkgs.btrfsProgs}/bin/btrfs device scan"} ${pkgs.mountall}/sbin/mountall ''; };