forked from lix-project/lix
![Eelco Dolstra](/assets/img/avatar_default.png)
files. Target location is no longer hard-coded; it accepts a number of URLs on the command line. * `nix-install-package': compatibility fixes.
38 lines
785 B
Perl
38 lines
785 B
Perl
#! /usr/bin/perl -w
|
|
|
|
use strict;
|
|
use POSIX qw(tmpnam);
|
|
|
|
my $pkgfile = $ARGV[0];
|
|
die unless defined $pkgfile;
|
|
|
|
my $tmpdir;
|
|
do { $tmpdir = tmpnam(); }
|
|
until mkdir $tmpdir, 0777;
|
|
|
|
# !!! remove tmpdir on exit
|
|
|
|
print "Unpacking $pkgfile in $tmpdir...\n";
|
|
system "bunzip2 < $pkgfile | (cd $tmpdir && tar xf -)";
|
|
die if $?;
|
|
|
|
print "This package contains the following derivations:\n";
|
|
system "nix-env -qasf $tmpdir/default.nix";
|
|
die if $?;
|
|
|
|
print "Do you wish to install these (Y/N)? ";
|
|
my $reply = <STDIN>;
|
|
chomp $reply;
|
|
exit if (!($reply eq "y"));
|
|
|
|
print "Pulling caches...\n";
|
|
system "nix-pull `cat $tmpdir/caches`";
|
|
die if $?;
|
|
|
|
print "Installing package...\n";
|
|
system "nix-env -if $tmpdir/default.nix '*'";
|
|
die if $?;
|
|
|
|
print "Installation succeeded! Press Enter to continue.\n";
|
|
<STDIN>;
|