nixos/filesystems: don't allow mountpoints with trailing slash

They are semantically the same as the non-slash version and therefore
are potential source of duplicates.

Also fixes https://github.com/NixOS/nixpkgs/issues/78951
This commit is contained in:
Jörg Thalheim 2020-08-14 07:25:50 +01:00
parent 19bf53f143
commit f536901693
No known key found for this signature in database
GPG Key ID: 003F2096411B5F92

View File

@ -7,8 +7,9 @@ let
addCheckDesc = desc: elemType: check: types.addCheck elemType check
// { description = "${elemType.description} (with check: ${desc})"; };
nonEmptyStr = addCheckDesc "non-empty" types.str
(s: (builtins.match ".*[^ \t]+.*" s) != null);
isNonEmpty = s: (builtins.match ".*[^ \t]+.*" s) != null;
nonEmptyStr = addCheckDesc "non-empty" types.str isNonEmpty;
fileSystems' = toposort fsBefore (attrValues config.fileSystems);
@ -28,10 +29,10 @@ let
coreFileSystemOpts = { name, config, ... }: {
options = {
mountPoint = mkOption {
example = "/mnt/usb";
type = nonEmptyStr;
type = addCheckDesc "non-empty without trailing slash" types.str
(s: isNonEmpty s && (builtins.match "(/|/.*[^/])" s) != null);
description = "Location of the mounted the file system.";
};