#! /usr/bin/perl -w my $prefix = $ENV{"NIX"} || "/nix"; # !!! use prefix my $etcdir = "$prefix/etc/nix"; my $exportdir = "$prefix/var/nix/prebuilts/exports"; my $knowns = "$prefix/var/nix/known-prebuilts"; umask 0022; # For performance, put the known hashes in an associative array. my %knowns = (); open KNOWNS, "<$knowns"; while () { next unless /([0-9a-z]{32})/; $knowns{$1} = 1; } close KNOWNS; # For each installed package, check whether a prebuilt is known. open PKGS, "nix listinst|"; while () { chomp; next unless /([0-9a-z]{32})/; my $pkghash = $1; if (!defined $knowns{$1}) { # No known prebuilt exists for this package; so export it. print "exporting $pkghash...\n"; system "nix export '$exportdir' $pkghash"; if ($?) { die "`nix export' failed"; } } } close PKGS; # Push the prebuilts to the server. !!! FIXME system "rsync -av -e ssh '$exportdir'/ eelco\@losser.st-lab.cs.uu.nl:/home/eelco/public_html/nix-prebuilts/"; # Rerun `nix-pull-prebuilts' to rescan the prebuilt source locations. print "running nix-pull-prebuilts..."; system "nix-pull-prebuilts";