From 1e607c92215a1a66fb5b665314dd4d3a6d8a06fb Mon Sep 17 00:00:00 2001 From: Armijn Hemel Date: Tue, 5 Jul 2005 13:52:49 +0000 Subject: [PATCH] rewrite nixu scripts to use nix-push. Install the whole NixU environment in two main steps: 1 - first build everything (nix-push) 2 - install everything on a seperate disk/machine (nix-pull) svn path=/nixu/trunk/; revision=3291 --- boot/builder.sh | 1 + boot/default.nix | 8 ++++---- boot/env.sh | 2 +- make-disk.sh | 40 +++++++--------------------------------- pkgs.nix | 10 +++++----- 5 files changed, 18 insertions(+), 43 deletions(-) diff --git a/boot/builder.sh b/boot/builder.sh index 6adf93e99ee..e86d2d41668 100755 --- a/boot/builder.sh +++ b/boot/builder.sh @@ -34,6 +34,7 @@ for i in $boot $halt $login $env; do -e "s^@gnugrep\@^$gnugrep^g" \ -e "s^@gzip\@^$gzip^g" \ -e "s^@gcc\@^$gcc^g" \ + -e "s^@mingetty\@^$mingetty^g" \ -e "s^@out\@^$out^g" \ < $i > $dst chmod +x $dst diff --git a/boot/default.nix b/boot/default.nix index 062fe2a4714..76125381301 100644 --- a/boot/default.nix +++ b/boot/default.nix @@ -1,7 +1,7 @@ -{ stdenv, bash, coreutils, findutils, utillinux, sysvinit, e2fsprogs +{ stdenv, kernel, bash, coreutils, findutils, utillinux, sysvinit, e2fsprogs , nettools, nix, subversion, gcc, wget, which, vim, less, screen, openssh , binutils, strace, shadowutils, iputils, gnumake, curl, gnused, gnugrep -, gnutar, gzip}: +, gnutar, gzip, mingetty}: derivation { name = "boot"; @@ -11,8 +11,8 @@ derivation { halt = ./halt.sh; login = ./login.sh; env = ./env.sh; - inherit stdenv bash coreutils findutils utillinux sysvinit + inherit stdenv kernel bash coreutils findutils utillinux sysvinit e2fsprogs nettools nix subversion gcc wget which vim less screen openssh binutils strace shadowutils iputils gnumake curl gnused - gnutar gnugrep gzip; + gnutar gnugrep gzip mingetty; } diff --git a/boot/env.sh b/boot/env.sh index 33a6d1eb3ce..322a2cd2216 100644 --- a/boot/env.sh +++ b/boot/env.sh @@ -1 +1 @@ -export PATH=@nix@/bin:@bash@/bin:@coreutils@/bin:@findutils@/bin:@utillinux@/bin:@utillinux@/sbin:@sysvinit@/bin:@sysvinit@/sbin:@e2fsprogs@/bin:@e2fsprogs@/sbin:@nettools@/bin:@nettools@/sbin:@gcc@/bin:@subversion@/bin:@which@/bin:@wget@/bin:@vim@/bin:@less@/bin:@screen@/bin:@openssh@/bin:@binutils@/bin:@strace@/bin:@shadowutils@/bin:@shadowutils@/sbin:@iputils@/bin:@gnumake@/bin:@curl@/bin:@gnused@/bin:@gnutar@/bin:@gnugrep@/bin:@gzip@/bin +export PATH=@nix@/bin:@bash@/bin:@coreutils@/bin:@findutils@/bin:@utillinux@/bin:@utillinux@/sbin:@sysvinit@/bin:@sysvinit@/sbin:@e2fsprogs@/bin:@e2fsprogs@/sbin:@nettools@/bin:@nettools@/sbin:@gcc@/bin:@subversion@/bin:@which@/bin:@wget@/bin:@vim@/bin:@less@/bin:@screen@/bin:@openssh@/bin:@binutils@/bin:@strace@/bin:@shadowutils@/bin:@shadowutils@/sbin:@iputils@/bin:@gnumake@/bin:@curl@/bin:@gnused@/bin:@gnutar@/bin:@gnugrep@/bin:@gzip@/bin:@mingetty@/sbin diff --git a/make-disk.sh b/make-disk.sh index 9ea97636bbd..fc8b075d152 100755 --- a/make-disk.sh +++ b/make-disk.sh @@ -1,42 +1,16 @@ #! /bin/sh -e -image=/tmp/disk.img -size=$(expr 2048 \* 1024 \* 1024) -storePaths=/tmp/mystorepaths -successors=/tmp/mysuccessors - -if ! test -f $image; then - - echo creating empty disk of $size bytes in $image... - # Note: this is a sparse file. - dd if=/dev/zero of=$image bs=1 seek=$(expr $size - 1) count=1 - - echo creating disk image in $image... - /sbin/mke2fs -F $image - -fi - -# What to copy? +archivesDir=/tmp/arch +manifest=${archivesDir}/MANIFEST NIX_CMD_PATH=/nix/bin -storeExpr=$(echo '(import ./pkgs.nix).everything' | $NIX_CMD_PATH/nix-instantiate -) -$NIX_CMD_PATH/nix-store -rB $storeExpr -$NIX_CMD_PATH/nix-store -qn --requisites $storeExpr > $storePaths - -(while read storepath; do - $NIX_CMD_PATH/nix-store -q --predecessors $storepath | (while read predecessor; do - echo $predecessor $storepath - done) -done) < $storePaths > $successors +storeExpr=$(echo '(import ./pkgs.nix).everything' | $NIX_CMD_PATH/nix-instantiate -v -v -) +$NIX_CMD_PATH/nix-push --copy $archivesDir $manifest $(nix-store -r $storeExpr) +$NIX_CMD_PATH/nix-push --copy $archivesDir $manifest $(nix-store -r $(echo '(import ./pkgs.nix).kernel' | $NIX_CMD_PATH/nix-instantiate -)) # Location of sysvinit? -sysvinitPath=$($NIX_CMD_PATH/nix-store -qn $(echo '(import ./pkgs.nix).sysvinit' | $NIX_CMD_PATH/nix-instantiate -)) +#sysvinitPath=$($NIX_CMD_PATH/nix-store -q $(echo '(import ./pkgs.nix).sysvinit' | $NIX_CMD_PATH/nix-instantiate -)) # Location of Nix boot scripts? -bootPath=$($NIX_CMD_PATH/nix-store -qn $(echo '(import ./pkgs.nix).boot' | $NIX_CMD_PATH/nix-instantiate -)) - -# Fill the disk with the minimal Nix store. -if ! test -d /tmp/mnt; then mkdir /tmp/mnt; fi -linux ubd0=$image root=/dev/root rootflags=/ rootfstype=hostfs \ - init="$(pwd)/fill-disk.sh $sysvinitPath $bootPath" +#bootPath=$($NIX_CMD_PATH/nix-store -q $(echo '(import ./pkgs.nix).boot' | $NIX_CMD_PATH/nix-instantiate -)) diff --git a/pkgs.nix b/pkgs.nix index 5660e111f37..9a3aa3c2c88 100644 --- a/pkgs.nix +++ b/pkgs.nix @@ -1,13 +1,13 @@ rec { - inherit (import /home/armijn/pkgs/system/i686-linux.nix) - stdenv bash coreutils findutils utillinux sysvinit e2fsprogs + inherit (import /nixpkgs/trunk/pkgs/system/i686-linux.nix) + stdenv kernel bash coreutils findutils utillinux sysvinit e2fsprogs nettools nix subversion gcc wget which vim less screen openssh binutils - strace shadowutils iputils gnumake curl gnused gnutar gnugrep gzip; + strace shadowutils iputils gnumake curl gnused gnutar gnugrep gzip mingetty; - boot = (import ./boot) {inherit stdenv bash coreutils findutils + boot = (import ./boot) {inherit stdenv kernel bash coreutils findutils utillinux sysvinit e2fsprogs nettools nix subversion gcc wget which vim less screen openssh binutils strace shadowutils iputils gnumake curl - gnused gnutar gnugrep gzip;}; + gnused gnutar gnugrep gzip mingetty;}; everything = [boot sysvinit]; }