* Give unpacked channels more sensible names than 0, 1, ... They now
get the basename of the channel URL (e.g., nixpkgs-unstable).  The
  top-level Nix expression of the channel is now an attribute set, the
  attributes of which are the individual channels (e.g.,
  {nixpkgs_unstable = ...; strategoxt_unstable = ...}).  This makes
  attribute paths ("nix-env -qaA" and "nix-env -iA") more sensible,
  e.g., "nix-env -iA nixpkgs_unstable.subversion".
			
			
This commit is contained in:
		
							parent
							
								
									a9d15d4f43
								
							
						
					
					
						commit
						93aefd9fc0
					
				
					 5 changed files with 43 additions and 20 deletions
				
			
		|  | @ -89,21 +89,22 @@ sub update { | |||
|     # Create a Nix expression that fetches and unpacks the channel Nix | ||||
|     # expressions. | ||||
| 
 | ||||
|     my $nixExpr = "["; | ||||
|     my $inputs = "["; | ||||
|     foreach my $url (@channels) { | ||||
|         $url =~ /\/([^\/]+)\/?$/; | ||||
|         my $channelName = $1; | ||||
|         $channelName = "unnamed" unless defined $channelName; | ||||
|         print "$channelName\n"; | ||||
| 
 | ||||
|         my $fullURL = "$url/nixexprs.tar.bz2"; | ||||
|         print "downloading Nix expressions from `$fullURL'...\n"; | ||||
|         $ENV{"PRINT_PATH"} = 1; | ||||
|         my ($hash, $path) = `@bindir@/nix-prefetch-url '$fullURL' 2> /dev/null`; | ||||
|         die "cannot fetch `$fullURL'" if $? != 0; | ||||
|         chomp $path; | ||||
|         $nixExpr .= $path . " "; | ||||
|         $inputs .= '"' . $channelName . '"' . " " . $path . " "; | ||||
|     } | ||||
|     $nixExpr .= "]"; | ||||
| 
 | ||||
|     $nixExpr = | ||||
|         "(import @datadir@/nix/corepkgs/channels/unpack.nix) " . | ||||
|         "{inputs = $nixExpr; system = \"@system@\";}"; | ||||
|     $inputs .= "]"; | ||||
| 
 | ||||
|     # Figure out a name for the GC root. | ||||
|     my $userName = getpwuid($<); | ||||
|  | @ -113,7 +114,7 @@ sub update { | |||
|      | ||||
|     # Instantiate the Nix expression. | ||||
|     print "unpacking channel Nix expressions...\n"; | ||||
|     my $storeExpr = `echo '$nixExpr' | @bindir@/nix-instantiate --add-root '$rootFile'.tmp -` | ||||
|     my $storeExpr = `@bindir@/nix-instantiate --add-root '$rootFile'.tmp @datadir@/nix/corepkgs/channels/unpack.nix --argstr system @system@ --arg inputs '$inputs'` | ||||
|         or die "cannot instantiate Nix expression"; | ||||
|     chomp $storeExpr; | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue