#! @bash@/bin/sh -e export PATH=@bash@/bin:@coreutils@/bin:@findutils@/bin:@utillinux@/bin:@utillinux@/sbin:@e2fsprogs@/sbin sysvinitPath=@sysvinitPath@ bootPath=@bootPath@ #if ! test -n "$1" #then # echo "need harddisk device for installing!" # exit #else # device=$1 #fi device=/dev/hda1 #device=/dev/sda1 make_dir() { mode=$1 name=$2 echo creating $name... if ! test -d $root/$name; then mkdir $root/$name; fi chmod $mode $root/$name } touch_file() { name=$1 echo touching $name... if ! test -d $root/$name; then touch $root/$name; fi } root=/tmp/mnt mkdir -p /tmp/mnt mount -t ext2 $device /tmp/mnt cd /sys; echo * # mkdir -p /nix # mkdir -p /nixpkgs/trunk/pkgs # temporary hack # mount --bind /mnt/cdrom1/nix /nix # mount --bind /mnt/cdrom1/pkgs /nixpkgs/trunk/pkgs ## ## Create a directory tree on the installation disk. ## make_dir 00755 /bin make_dir 00755 /dev make_dir 00755 /proc make_dir 01777 /tmp make_dir 00755 /etc # global non-constant configuration make_dir 00755 /etc-secret make_dir 00755 /var make_dir 00755 /nix make_dir 00755 /nix/store make_dir 00755 /nix/var make_dir 00755 /nix/var/nix make_dir 00755 /nix/var/nix/db make_dir 00755 /nix/var/nix/manifests make_dir 00755 /nix/var/log make_dir 00755 /nix/var/log/nix make_dir 00755 /nixpkgs make_dir 00755 /nixpkgs/trunk make_dir 00755 /mnt make_dir 00755 /mnt/host make_dir 00755 /home make_dir 00755 /home/root ## ## Add a few devices to /dev on the install disk. This is by far complete. ## mknod $root/dev/null c 1 3 touch_file /etc/passwd touch_file /etc/shadow touch_file /etc/group rm -f $root/etc/mtab #ln -s /proc/mounts $root/etc/mtab cat /proc/mounts export NIX_DATA_DIR=$root/nix/share export NIX_LOG_DIR=$root/nix/log/nix export NIX_STATE_DIR=$root/nix/var/nix export NIX_CONF_DIR=$root/nix/etc NIX_CMD_PATH=@NIX_CMD_PATH@/bin echo initialising Nix DB... #/nix/bin/nix-store --init $NIX_CMD_PATH/nix-store --init echo verifying Nix DB... $NIX_CMD_PATH/nix-store --verify echo copying nixpkgs... cp -fa ../pkgs $root/nixpkgs/trunk make_dir 0755 /tmp/scripts cp -fa ../scripts $root/tmp #echo adding manifest #$NIX_CMD_PATH/nix-pull $manifest echo adding packages export NIX_ROOT=$root unset NIX_DATA_DIR unset NIX_LOG_DIR unset NIX_STATE_DIR unset NIX_CONF_DIR #storeExpr=$(echo '(import /tmp/scripts/pkgs.nix).everything' | $NIX_CMD_PATH/nix-instantiate -v -v -) #storeExpr=$(echo '(import ./pkgs.nix).everything' | $NIX_CMD_PATH/nix-instantiate -v -v -) #$NIX_CMD_PATH/nix-store -r $storeExpr #echo $storeExpr #storeExpr2=$($NIX_CMD_PATH/nix-store -qR $($NIX_CMD_PATH/nix-store -r $storeExpr)) #echo storeExpr $storeExpr #echo $($NIX_CMD_PATH/nix-store -qR --include-outputs $storeExpr) echo copying store (while read storepaths; do cp -fa $storepaths $root/nix/store done) < /mnt/cdrom1/mystorepaths #cp -fa ../nix/store/* $root/nix/store #echo registering valid paths... #(while read storepath; do # echo PATH $storepath # if ! $NIX_CMD_PATH/nix-store --isvalid $storepath 2> /dev/null; then # (unset NIX_ROOT; $NIX_CMD_PATH/nix-store --dump $storepath) | $NIX_CMD_PATH/nix-store --restore $storepath # $NIX_CMD_PATH/nix-store --validpath $storepath # fi #done) < /tmp/mystorepaths #echo registering successors... #(while read line; do # echo SUCC $line # $NIX_CMD_PATH/nix-store --successor $line #done) < /tmp/mysuccessors exit echo setting init symlink... rm -f $root/init ln -s $sysvinitPath/sbin/init $root/init echo setting up inittab... rm -f $root/etc/inittab echo "id:2:initdefault:" >> $root/etc/inittab echo "si::bootwait:$bootPath/bin/boot.sh" >> $root/etc/inittab echo "ht:06:wait:$bootPath/bin/halt.sh" >> $root/etc/inittab echo "1:2345:respawn:$bootPath/bin/login.sh /dev/ttys/0" >> $root/etc/inittab #echo "2:2345:respawn:$bootPath/bin/login.sh /dev/ttys/1" >> $root/etc/inittab echo setting up networking information... make_dir 00755 /etc/networking echo 192.168.150.1 > $root/etc/networking/local-ip echo 192.168.150.3 > $root/etc/networking/gateway-ip cp /etc/resolv.conf $root/etc rm -f $root/etc/hosts echo "127.0.0.1 localhost" >> $root/etc/hosts echo "192.168.150.1 uml" >> $root/etc/hosts ### ### Do funky stuff with grub here. ###