#!/bin/sh

# jessie to stretch

## modify sources
echo "deb http://mirrordirector.raspbian.org/raspbian/ stretch main contrib non-free rpi
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://archive.raspbian.org/raspbian/ stretch main contrib non-free rpi" | sudo tee /etc/apt/sources.list
echo "deb http://archive.raspberrypi.org/debian/ stretch main ui
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://archive.raspberrypi.org/debian/ stretch main ui" | sudo tee /etc/apt/sources.list.d/raspi.list
#sudo sed -i 's/jessie/stretch/g' /etc/apt/sources.list
#sudo sed -i 's/jessie/stretch/g' /etc/apt/sources.list.d/raspi.list
sudo sed -i 's/jessie/stretch/g' /etc/apt/sources.list.d/nodesource.list
sudo rm /etc/apt/sources.list.d/subogero.list

## apt config

echo "Acquire::Retries \"1000\";
Acquire::http::Timeout \"30\";
Acquire::ftp::Timeout \"30\";" | sudo tee /etc/apt/apt.conf.d/99timeout


# echo "
# # disable ipv6
# net.ipv6.conf.all.disable_ipv6 = 1
# net.ipv6.conf.default.disable_ipv6 = 1
# net.ipv6.conf.lo.disable_ipv6 = 1
# " | sudo tee -a /etc/sysctl.conf
#
# sudo sysctl -p

## fix upgrade issue
sudo dpkg --configure -a --force-confdef --force-confnew || exit 1

## do upgrade
sudo apt-get update
sudo apt-get -y autoremove
echo 'libc6 libraries/restart-without-asking boolean true' | sudo debconf-set-selections
sudo env DEBIAN_FRONTEND=noninteractive APT_LISTCHANGES_FRONTEND=none apt-get dist-upgrade -f -y -q -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confnew' || exit 1
sudo apt-get install -y -q fonts-droid-fallback || exit 1

## clean
sudo apt-get -y -q autoremove


# remove unused / conflicts dependencies

sudo apt-get purge -y -q ntp lxde-core lxappearance lxde-common lxsession lxpanel* firefox-esr mplayer2 pulseaudio* supervisor


# pi-gen pooliot modifs


sudo apt-get purge -y -q ed ncdu build-essential manpages-dev gdb pkg-config python-rpi.gpio v4l-utils \
  luajit nfs-common usbutils libraspberrypi-dev libraspberrypi-doc libfreetype6-dev pi-bluetooth scrot
sudo rm /etc/systemd/system/getty@tty1.service.d/noclear.conf
sudo cp /etc/wpa_supplicant/ifupdown.sh /etc/ifplugd/action.d/ifupdown
sudo apt-get -y -q autoremove

# update

## sudo apt-get update
## sudo apt-get install dirmngr debian-keyring debian-archive-keyring

# nodejs
curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -
echo 'deb https://deb.nodesource.com/node_8.x stretch main' | sudo tee /etc/apt/sources.list.d/nodesource.list
echo 'deb-src https://deb.nodesource.com/node_8.x stretch main' | sudo tee -a /etc/apt/sources.list.d/nodesource.list

# pooliot
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0277F0B87A84E0BE
echo 'deb http://apt.pooliot.net stable main' | sudo tee /etc/apt/sources.list.d/pooliot-client.list

# update
sudo apt-get update

# install dependencies
sudo apt-get install -y -q wpasupplicant wireless-tools firmware-atheros firmware-brcm80211 firmware-libertas firmware-misc-nonfree firmware-realtek \
  raspberrypi-net-mods dhcpcd5 net-tools \
  policykit-1 unattended-upgrades \
  rpi-pooliot-client pooliot-client || exit 1


sudo apt-get install --no-install-recommends -y -q \
  xserver-xorg-video-fbdev xserver-xorg xinit xserver-xorg-video-fbturbo \
  libgl1-mesa-dri \
  rpi-pooliot-chromium ffmpeg \
  fonts-droid-fallback \
  fonts-liberation2 \
  pooliot-plymouth-theme \
  rpi-pooliot-client-display pooliot-client-display || exit 1

sudo apt-get install --no-install-recommends -y -q \
  gstreamer1.0-x gstreamer1.0-omx gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-alsa gstreamer1.0-libav

# config

sudo sed /etc/lightdm/lightdm.conf -i -e "s/^\(#\|\)autologin-user=.*/autologin-user=pi/"

# uninstall

sudo rm /etc/systemd/system/pooliot-client.service
sudo mv /etc/pooliot-client/config /etc/default/pooliot-client

if [ -f /usr/share/pooliot-client/bin/run ]; then
  sudo npm uninstall -g pooliot-client
  sudo systemctl enable pooliot-client
fi

echo "done, you should reboot now"
