diff --git a/modules/completion/init.zsh b/modules/completion/init.zsh
index 9ba95634..feebaf36 100644
--- a/modules/completion/init.zsh
+++ b/modules/completion/init.zsh
@@ -142,14 +142,13 @@ zstyle -e ':completion:*:hosts' hosts 'reply=(
 )'
 
 # Don't complete uninteresting users...
-zstyle ':completion:*:*:*:users' ignored-patterns \
-  adm amanda apache avahi beaglidx bin cacti canna clamav daemon \
-  dbus distcache dovecot fax ftp games gdm gkrellmd gopher \
-  hacluster haldaemon halt hsqldb ident junkbust ldap lp mail \
-  mailman mailnull mldonkey mysql nagios \
-  named netdump news nfsnobody nobody nscd ntp nut nx openvpn \
-  operator pcap postfix postgres privoxy pulse pvm quagga radvd \
-  rpc rpcuser rpm shutdown squid sshd sync uucp vcsa xfs '_*'
+zstyle ':completion:*:*:*:users' ignored-patterns nobody nobody4 noaccess '_*' \
+  $([[ "$OSTYPE" = SunOS ]] && uid_min=100 || uid_min=500
+    IFS=:
+    while read -r user pass uid remainder; do
+      [[ "$user" != (\#*|root) ]] && ((uid < uid_min)) && echo $user
+    done </etc/passwd
+  )
 
 # ... unless we really want to.
 zstyle '*' single-ignored show