Clone this repo:


  1. af06845 Add a Reset function by Mitchell Hashimoto · 2 years, 3 months ago master v1.1.0
  2. ae18d6b Add go.mod and release v1 by Mitchell Hashimoto · 2 years, 8 months ago v1.0.0
  3. 5804607 Fix formatting by Mitchell Hashimoto · 2 years, 8 months ago
  4. d26f376 Merge pull request #24 from mbrancato/master by Mitchell Hashimoto · 2 years, 8 months ago
  5. 32e698a Shift up the preference of the USERPROFILE variable by Mike Brancato · 2 years, 10 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.