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.nix
|
||||||
./tasks/filesystems/btrfs.nix
|
./tasks/filesystems/btrfs.nix
|
||||||
./tasks/filesystems/ext.nix
|
./tasks/filesystems/ext.nix
|
||||||
|
./tasks/filesystems/f2fs.nix
|
||||||
./tasks/filesystems/nfs.nix
|
./tasks/filesystems/nfs.nix
|
||||||
./tasks/filesystems/reiserfs.nix
|
./tasks/filesystems/reiserfs.nix
|
||||||
./tasks/filesystems/unionfs-fuse.nix
|
./tasks/filesystems/unionfs-fuse.nix
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
pkgs.dosfstools
|
pkgs.dosfstools
|
||||||
pkgs.xfsprogs
|
pkgs.xfsprogs
|
||||||
pkgs.jfsutils
|
pkgs.jfsutils
|
||||||
|
pkgs.f2fs-tools
|
||||||
#pkgs.jfsrec # disabled because of Boost dependency
|
#pkgs.jfsrec # disabled because of Boost dependency
|
||||||
|
|
||||||
# Some compression/archiver tools.
|
# Some compression/archiver tools.
|
||||||
|
@ -50,6 +51,6 @@
|
||||||
];
|
];
|
||||||
|
|
||||||
# Include support for various filesystems.
|
# 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).
|
# does (minutes versus seconds).
|
||||||
if test -z "@checkJournalingFS@" -a \
|
if test -z "@checkJournalingFS@" -a \
|
||||||
\( "$fsType" = ext3 -o "$fsType" = ext4 -o "$fsType" = reiserfs \
|
\( "$fsType" = ext3 -o "$fsType" = ext4 -o "$fsType" = reiserfs \
|
||||||
-o "$fsType" = xfs -o "$fsType" = jfs \)
|
-o "$fsType" = xfs -o "$fsType" = jfs -o "$fsType" = f2fs \)
|
||||||
then
|
then
|
||||||
return 0
|
return 0
|
||||||
fi
|
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
|
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" ''
|
ksRaid = pkgs.writeText "ks-raid" ''
|
||||||
clearpart --all --initlabel --drives=vdb,vdc
|
clearpart --all --initlabel --drives=vdb,vdc
|
||||||
|
|
||||||
|
@ -193,6 +201,16 @@ in {
|
||||||
remountAndCheck;
|
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 {
|
parttest "RAID1 with XFS", sub {
|
||||||
kickstart("${ksRaid}");
|
kickstart("${ksRaid}");
|
||||||
ensurePartition("swap1", "swap");
|
ensurePartition("swap1", "swap");
|
||||||
|
|
Loading…
Reference in New Issue
Block a user