···121121 case System.get_env("XDG_STATE_HOME") do
122122 nil ->
123123 # Get current user and look up their home directory
124124- case get_user_home(System.fetch_env!("USER")) do
124124+ case get_user_home(System.get_env("USER", get_username!())) do
125125 {:ok, home} ->
126126 {:ok, "#{home}/.local/state/nix/profiles/home-manager"}
127127···157157158158 {_output, _exit_code} ->
159159 fallback_get_user_home(username)
160160+ end
161161+ end
162162+163163+ def get_username!() do
164164+ with {output, 0} <- System.cmd("id", ["--user", "--name"], stderr_to_stdout: true),
165165+ username when username != "" <- String.trim(output) do
166166+ username
160167 end
161168 end
162169