diff --git a/doc/manual/conf-file.xml b/doc/manual/conf-file.xml
index 6a575b9e3..70437686d 100644
--- a/doc/manual/conf-file.xml
+++ b/doc/manual/conf-file.xml
@@ -341,10 +341,12 @@ build-use-chroot = /dev /proc /bin
A list of names of files that will be read to
obtain additional binary cache URLs. The default is
- /nix/var/nix/profiles/per-user/root/channels/binary-caches/*,
- which ensures that Nix will use the binary caches corresponding to
- the channels installed by root. Do not set this option to read
- files created by untrusted users!
+ /nix/var/nix/profiles/per-user/username/channels/binary-caches/*.
+ Note that when you’re using the Nix daemon,
+ username is always equal to
+ root, so Nix will only use the binary caches
+ provided by the channels installed by root. Do not set this
+ option to read files created by untrusted users!
diff --git a/scripts/download-from-binary-cache.pl.in b/scripts/download-from-binary-cache.pl.in
index b82246671..98333dafb 100644
--- a/scripts/download-from-binary-cache.pl.in
+++ b/scripts/download-from-binary-cache.pl.in
@@ -36,6 +36,8 @@ my %requests;
my %scheduled;
my $caBundle = $ENV{"CURL_CA_BUNDLE"} // $ENV{"OPENSSL_X509_CERT_FILE"};
+my $userName = getpwuid($<) or die "cannot figure out user name";
+
sub addRequest {
my ($storePath, $url, $head) = @_;
@@ -195,7 +197,7 @@ sub getAvailableCaches {
# // ($Nix::Config::storeDir eq "/nix/store" ? "http://nixos.org/binary-cache" : ""));
my $urlsFiles = $Nix::Config::config{"binary-cache-files"}
- // "/nix/var/nix/profiles/per-user/root/channels/binary-caches/*";
+ // "$Nix::Config::stateDir/profiles/per-user/$userName/channels/binary-caches/*";
foreach my $urlFile (glob $urlsFiles) {
next unless -f $urlFile;
open FILE, "<$urlFile" or die "cannot open ‘$urlFile’\n";