diff --git a/lib/types/zfs_fs.nix b/lib/types/zfs_fs.nix index 7e6b7bb..71f6af5 100644 --- a/lib/types/zfs_fs.nix +++ b/lib/types/zfs_fs.nix @@ -73,8 +73,7 @@ "pbkdf2salt" "keyformat" ]; - updateOptions = builtins.removeAttrs config.options (onetimeProperties ++ [ "mountpoint" ]); - mountpoint = config.options.mountpoint or config.mountpoint; + updateOptions = builtins.removeAttrs createOptions onetimeProperties; in '' if ! zfs get type ${config._name} >/dev/null 2>&1; then @@ -82,19 +81,7 @@ ${lib.concatStringsSep " " (lib.mapAttrsToList (n: v: "-o ${n}=${v}") (createOptions))} ${lib.optionalString (updateOptions != {}) '' else - zfs set ${lib.concatStringsSep " " (lib.mapAttrsToList (n: v: "${n}=${v}") updateOptions)} ${config._name} - ${lib.optionalString (mountpoint != null) '' - if [[ "$(zfs get -H -o value mountpoint ${config._name})" != "${mountpoint}" ]]; then - echo "Changing mountpoint to '${mountpoint}' for ${config._name}..." - # zfs will try unmount the dataset to change the mountpoint - # but this might fail if the dataset is in use - if ! zfs set mountpoint=${mountpoint} ${config._name}; then - echo "Failed to set mountpoint to '${mountpoint}' for ${config._name}." >&2 - echo "You may need to run when the pool is not mounted i.e. in a recovery system:" >&2 - echo " zfs set mountpoint=${mountpoint} ${config._name}" >&2 - fi - fi - ''} + zfs set -u ${lib.concatStringsSep " " (lib.mapAttrsToList (n: v: "${n}=${v}") updateOptions)} ${config._name} ''} fi '';