#! /bin/sh
set -eux
{
  umount /mnt/nix
  umount /mnt/root
  umount /mnt/boot
  umount /boot || :
  umount /mnt

  coreutils_path=$(set +f; for i in /nix/store/*coreutils*/bin; do :; done; echo $i)
  sed_path=$(set +f; for i in /nix/store/*gnused*/bin; do :; done; echo $i)
  PATH="$coreutils_path:$sed_path"

  export PATH

  mkdir /oldshit

  #fix bug where grub install cant find the /nix/store because its under a bind mount
  if test -e /boot/grub/grub.cfg; then
    sed -i 's,//store,/nix/store,g' /boot/grub/grub.cfg
  fi;

  mv /bin /oldshit/
  mv /newshit/bin /

  # TODO ensure /boot is empty
  # skip boot
  rmdir /newshit/boot

  # skip /dev
  rmdir /newshit/dev

  mv /etc /oldshit/
  mv /newshit/etc /

  # skip /nix (it's already there)
  rmdir /newshit/nix

  # skip /proc
  rmdir /newshit/proc

  # skip /run
  rmdir /newshit/run

  # skip /sys
  rmdir /newshit/sys

  # skip /root
  rmdir /newshit/root

  # skip /tmp
  # TODO rmdir /newshit/tmp

  mv /home /oldshit/
  mv /newshit/home /

  mv /usr /oldshit/
  mv /newshit/usr /

  mv /var /oldshit/
  mv /newshit/var /

  mv /lib /oldshit/
  mv /lib64 /oldshit/
  mv /sbin /oldshit/
  mv /srv /oldshit/
  mv /opt /oldshit/


  mv /newshit /root/  # TODO this one shoult be empty
  mv /oldshit /root/

  sync
}