nixos: f2fs filesystem module support (close #2085)
This commit is contained in:
parent
c0a30a4b51
commit
c96d5fe170
@ -306,6 +306,7 @@
|
||||
./tasks/filesystems.nix
|
||||
./tasks/filesystems/btrfs.nix
|
||||
./tasks/filesystems/ext.nix
|
||||
./tasks/filesystems/f2fs.nix
|
||||
./tasks/filesystems/nfs.nix
|
||||
./tasks/filesystems/reiserfs.nix
|
||||
./tasks/filesystems/unionfs-fuse.nix
|
||||
|
@ -34,6 +34,7 @@
|
||||
pkgs.dosfstools
|
||||
pkgs.xfsprogs
|
||||
pkgs.jfsutils
|
||||
pkgs.f2fs-tools
|
||||
#pkgs.jfsrec # disabled because of Boost dependency
|
||||
|
||||
# Some compression/archiver tools.
|
||||
@ -50,6 +51,6 @@
|
||||
];
|
||||
|
||||
# Include support for various filesystems.
|
||||
boot.supportedFilesystems = [ "btrfs" "reiserfs" "vfat" ];
|
||||
boot.supportedFilesystems = [ "btrfs" "reiserfs" "vfat" "f2fs" ];
|
||||
|
||||
}
|
||||
|
@ -204,7 +204,7 @@ checkFS() {
|
||||
# does (minutes versus seconds).
|
||||
if test -z "@checkJournalingFS@" -a \
|
||||
\( "$fsType" = ext3 -o "$fsType" = ext4 -o "$fsType" = reiserfs \
|
||||
-o "$fsType" = xfs -o "$fsType" = jfs \)
|
||||
-o "$fsType" = xfs -o "$fsType" = jfs -o "$fsType" = f2fs \)
|
||||
then
|
||||
return 0
|
||||
fi
|
||||
|
21
nixos/modules/tasks/filesystems/f2fs.nix
Normal file
21
nixos/modules/tasks/filesystems/f2fs.nix
Normal file
@ -0,0 +1,21 @@
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
with pkgs.lib;
|
||||
|
||||
let
|
||||
inInitrd = any (fs: fs == "f2fs") config.boot.initrd.supportedFilesystems;
|
||||
in
|
||||
{
|
||||
config = mkIf (any (fs: fs == "f2fs") config.boot.supportedFilesystems) {
|
||||
|
||||
system.fsPackages = [ pkgs.f2fs-tools ];
|
||||
|
||||
boot.initrd.availableKernelModules = mkIf inInitrd [ "f2fs" ];
|
||||
|
||||
boot.initrd.extraUtilsCommands = mkIf inInitrd ''
|
||||
mkdir -p $out/bin $out/lib
|
||||
cp -v ${pkgs.f2fs-tools}/sbin/fsck.f2fs $out/bin
|
||||
cp -pdv ${pkgs.f2fs-tools}/lib/lib*.so.* $out/lib
|
||||
'';
|
||||
};
|
||||
}
|
@ -24,6 +24,14 @@ let
|
||||
btrfs / --data=0 --metadata=1 --label=root btrfs.1 btrfs.2
|
||||
'';
|
||||
|
||||
ksF2fs = pkgs.writeText "ks-f2fs" ''
|
||||
clearpart --all --initlabel --drives=vdb
|
||||
|
||||
part swap --recommended --label=swap --fstype=swap --ondisk=vdb
|
||||
part /boot --recommended --label=boot --fstype=f2fs --ondisk=vdb
|
||||
part / --recommended --label=root --fstype=f2fs --ondisk=vdb
|
||||
'';
|
||||
|
||||
ksRaid = pkgs.writeText "ks-raid" ''
|
||||
clearpart --all --initlabel --drives=vdb,vdc
|
||||
|
||||
@ -193,6 +201,16 @@ in {
|
||||
remountAndCheck;
|
||||
};
|
||||
|
||||
parttest "f2fs filesystem", sub {
|
||||
$machine->succeed("modprobe f2fs");
|
||||
kickstart("${ksF2fs}");
|
||||
ensurePartition("swap", "swap");
|
||||
ensurePartition("boot", "f2fs");
|
||||
ensurePartition("root", "f2fs");
|
||||
remoteAndCheck;
|
||||
ensureMountPoint("/mnt/boot", "f2fs");
|
||||
};
|
||||
|
||||
parttest "RAID1 with XFS", sub {
|
||||
kickstart("${ksRaid}");
|
||||
ensurePartition("swap1", "swap");
|
||||
|
Loading…
Reference in New Issue
Block a user