I think you could replace tail with awk, if you absolute needed to. This is a naive attempt:
cat /etc/passwd | \
awk -v n=10 '{ lines[NR] = $0 }
END{
for (i = NR - n + 1; i <= NR; i++)
if (i > 0) print lines[i]
}'