summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAaron Andersen <aaron@fosslib.net>2018-09-07 17:49:38 -0400
committerAaron Andersen <aaron@fosslib.net>2018-10-28 20:49:34 -0400
commit36d695f696e73ff1be79b48e01df663eaac22e3b (patch)
treeec68403e566c18649aeb55011e29f2be5e4f72d4
parent0bb9b3c233fae8bfc846bcf20b951b72670e05e8 (diff)
filesystems: escape spaces in fstab with \040
-rw-r--r--nixos/modules/tasks/filesystems.nix8
1 files changed, 5 insertions, 3 deletions
diff --git a/nixos/modules/tasks/filesystems.nix b/nixos/modules/tasks/filesystems.nix
index b3690fad1a6a..9e4057b50897 100644
--- a/nixos/modules/tasks/filesystems.nix
+++ b/nixos/modules/tasks/filesystems.nix
@@ -230,6 +230,8 @@ in
let
fsToSkipCheck = [ "none" "bindfs" "btrfs" "zfs" "tmpfs" "nfs" "vboxsf" "glusterfs" ];
skipCheck = fs: fs.noCheck || fs.device == "none" || builtins.elem fs.fsType fsToSkipCheck;
+ # https://wiki.archlinux.org/index.php/fstab#Filepath_spaces
+ escape = string: builtins.replaceStrings [ " " ] [ "\\040" ] string;
in ''
# This is a generated file. Do not edit!
#
@@ -238,10 +240,10 @@ in
# Filesystems.
${concatMapStrings (fs:
- (if fs.device != null then fs.device
- else if fs.label != null then "/dev/disk/by-label/${fs.label}"
+ (if fs.device != null then escape fs.device
+ else if fs.label != null then "/dev/disk/by-label/${escape fs.label}"
else throw "No device specified for mount point ‘${fs.mountPoint}’.")
- + " " + fs.mountPoint
+ + " " + escape fs.mountPoint
+ " " + fs.fsType
+ " " + builtins.concatStringsSep "," fs.options
+ " 0"