Clone this repo:
  1. b8bc1bf Fix broken logic merged from #9 by Mitchell Hashimoto · 11 months ago master upstream/master
  2. 756f7b1 Merge pull request #14 from leighmcculloch/windows-test-fix by Mitchell Hashimoto · 1 year, 4 months ago
  3. 9440e2c Use path/filepath over hardcoded path separators. by Leigh McCulloch · 1 year, 4 months ago
  4. 1111e45 Merge pull request #12 from rodcloutier/master by Mitchell Hashimoto · 1 year, 5 months ago
  5. f82c0a5 Acknowledge and prefer HOME environment variable on Windows by Rod Cloutier · 1 year, 5 months ago


This is a Go library for detecting the user's home directory without the use of cgo, so the library can be used in cross-compilation environments.

Usage is incredibly simple, just call homedir.Dir() to get the home directory for a user, and homedir.Expand() to expand the ~ in a path to the home directory.

Why not just use os/user? The built-in os/user package requires cgo on Darwin systems. This means that any Go code that uses that package cannot cross compile. But 99% of the time the use for os/user is just to retrieve the home directory, which we can do for the current user without cgo. This library does that, enabling cross-compilation.