diff --git a/types/zfs_fs.nix b/types/zfs_fs.nix index a9ad950..1a4813b 100644 --- a/types/zfs_fs.nix +++ b/types/zfs_fs.nix @@ -38,8 +38,11 @@ }; _create = diskoLib.mkCreateOption { inherit config options; + # -u prevents mounting newly created datasets, which is + # important to prevent accidental shadowing of mount points + # since (create order != mount order) default = { zpool }: '' - zfs create ${zpool}/${config.name} \ + zfs create -u ${zpool}/${config.name} \ ${lib.concatStringsSep " " (lib.mapAttrsToList (n: v: "-o ${n}=${v}") config.options)} ''; }; diff --git a/types/zpool.nix b/types/zpool.nix index b415bd5..a8f9ccb 100644 --- a/types/zpool.nix +++ b/types/zpool.nix @@ -82,7 +82,7 @@ { dev = '' zpool list '${config.name}' >/dev/null 2>/dev/null || \ - zpool import -R ${config.mountRoot} '${config.name}' + zpool import -l -R ${config.mountRoot} '${config.name}' ${lib.concatMapStrings (x: x.dev or "") (lib.attrValues datasetMounts)} ''; fs = (datasetMounts.fs or {}) // lib.optionalAttrs (config.mountpoint != null) {