summary refs log tree commit diff
path: root/corepkgs
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2012-08-01 17:56:11 -0400
committerEelco Dolstra <eelco.dolstra@logicblox.com>2012-08-01 17:56:11 -0400
commit5170c5691aac1bd6abc69be65cf880316e11fe24 (patch)
tree4baffdd01e5406c7cae3c70e7ae0dedc9ce1f27b /corepkgs
parent79bba3782c275f03954cc9fc03f92aff487db953 (diff)
downloadguix-5170c5691aac1bd6abc69be65cf880316e11fe24.tar.gz
nix-channel: Use binary caches advertised by channels
Channels can now advertise a binary cache by creating a file
<channel-url>/binary-cache-url.  The channel unpacker puts these in
its "binary-caches" subdirectory.  Thus, the URLS of the binary caches
for the channels added by root appear in
/nix/var/nix/profiles/per-user/eelco/channels/binary-caches/*.  The
binary cache substituter reads these and adds them to the list of
binary caches.
Diffstat (limited to 'corepkgs')
-rw-r--r--corepkgs/unpack-channel.nix10
1 files changed, 7 insertions, 3 deletions
diff --git a/corepkgs/unpack-channel.nix b/corepkgs/unpack-channel.nix
index bbc54c7d1e..57d5a09a07 100644
--- a/corepkgs/unpack-channel.nix
+++ b/corepkgs/unpack-channel.nix
@@ -6,19 +6,23 @@ let
     ''
       mkdir $out
       cd $out
-      ${bzip2} -d < $src | ${tar} xf - --warning=no-timestamp 
+      ${bzip2} -d < $src | ${tar} xf - --warning=no-timestamp
       mv * $out/$channelName
+      if [ -n "$binaryCacheURL" ]; then
+        mkdir $out/binary-caches
+        echo -n "$binaryCacheURL" > $out/binary-caches/$channelName
+      fi
     '';
 
 in
 
-{ name, channelName, src }:
+{ name, channelName, src, binaryCacheURL ? "" }:
 
 derivation {
   system = builtins.currentSystem;
   builder = shell;
   args = [ "-e" builder ];
-  inherit name channelName src;
+  inherit name channelName src binaryCacheURL;
 
   PATH = "${nixBinDir}:${coreutils}";