From 0eb6d0735f599fa84e99b727c93681bcae96c845 Mon Sep 17 00:00:00 2001 From: talyz Date: Sat, 16 Mar 2019 12:51:18 +0100 Subject: [PATCH] filesystems: Add autoResize assertion Assert that autoResize is only used when fsType is explicitly set to a supported filesystem: if it's set to "auto", the default, the required resizing tools won't be copied into the initrd even if the actual filesystem is supported. --- nixos/modules/tasks/filesystems.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/nixos/modules/tasks/filesystems.nix b/nixos/modules/tasks/filesystems.nix index 07f8214cea2..43764bb82f1 100644 --- a/nixos/modules/tasks/filesystems.nix +++ b/nixos/modules/tasks/filesystems.nix @@ -209,10 +209,17 @@ in assertions = let ls = sep: concatMapStringsSep sep (x: x.mountPoint); + notAutoResizable = fs: fs.autoResize && !(hasPrefix "ext" fs.fsType || fs.fsType == "f2fs"); in [ { assertion = ! (fileSystems' ? "cycle"); message = "The ‘fileSystems’ option can't be topologically sorted: mountpoint dependency path ${ls " -> " fileSystems'.cycle} loops to ${ls ", " fileSystems'.loops}"; } + { assertion = ! (any notAutoResizable fileSystems); + message = let + fs = head (filter notAutoResizable fileSystems); + in + "Mountpoint '${fs.mountPoint}': 'autoResize = true' is not supported for 'fsType = \"${fs.fsType}\"':${if fs.fsType == "auto" then " fsType has to be explicitly set and" else ""} only the ext filesystems and f2fs support it."; + } ]; # Export for use in other modules