diff --git a/unix/operations.lisp b/unix/operations.lisp
index 359a869..472fff3 100644
--- a/unix/operations.lisp
+++ b/unix/operations.lisp
@@ -78,7 +78,13 @@
(join-str " "
(ecase ensure
((:absent) "userdel")
- ((:present) "useradd -m")
+ ((:present) `("useradd"
+ ,(unless (eq :present
+ (get-probed
+ (resource 'directory (homedir
+ user))
+ :ensure))
+ "-m")))
((nil) "usermod"))
(when realname `("-c" ,(sh-quote realname)))
(when home `("-d" ,(sh-quote home)))