#!/bin/sh
blue="\\033[1;34m"
cyan="\\033[1;36m"
green="\\033[1;32m"
nc="\\033[0;39m"
red="\\033[1;31m"
white="\\033[1;37m"
yellow="\\033[1;33m"
export LANG=fr_FR.UTF-8

function __live()
{
sed -i 6i"## France" /etc/pacman.d/mirrorlist
sed -i 7i'Server = http://mir.archlinux.fr/$repo/os/$arch' /etc/pacman.d/mirrorlist # Config FR Mirror
sed -i 8i"" /etc/pacman.d/mirrorlist

#----------------------------------------------------------------
# Create partition and format
#----------------------------------------------------------------

echo -e "$white Information : $nc Créer et formatter le disque sda ?$red (Attention perte des données) $nc"
LISTE=("[o] oui" "[n] non")
select CHOIX in "${LISTE[@]}" ; do
case $REPLY in

	1|o)
		parted /dev/sda mklabel msdos y
		parted -a optimal /dev/sda mkpart primary ext4 0% 100%
		mkfs.ext4 /dev/sda1
	break
	;;

	2|n)
		clear
	break
	;;
	esac

done


#----------------------------------------------------------------
# Mount and Install
#----------------------------------------------------------------

mount /dev/sda1 /mnt && mkdir /mnt/{boot,home}
pacstrap /mnt base base-devel net-tools openssh consolekit grub-bios subversion portaudio vim wget upower gstreamer0.10-base acpi acpid openssl pulseaudio pulseaudio-alsa alsa-plugins ntfs-3g nfs-utils dbus unrar p7zip lftp mtools dosfstools numlockx flac vorbis-tools xdg-user-dirs samba links xorg-server xorg-xinit xorg-utils xorg-server-utils xterm xf86-video-intel libva-driver-intel xf86-video-nouveau nouveau-dri xf86-video-ati "sudo" "zip" "unzip"


#----------------------------------------------------------------
# Get Setup
#----------------------------------------------------------------

#wget -P /mnt/ http://gutsblack.free.fr/xbmc/setup.sh
#chmod 755 /mnt/setup.sh
cp $0 /mnt
chmod 755 /mnt/$0


#----------------------------------------------------------------
# Chroot System
#----------------------------------------------------------------

genfstab -p /mnt >> /mnt/etc/fstab
clear
echo -e "$white Lancer l'installation :$green sh $0 setup $nc"
arch-chroot /mnt

}





function __setup()
{

red="\\033[1;31m"
green="\\033[1;32m"
nc="\\033[0;39m"
white="\\033[1;37m"


#----------------------------------------------------------------
# Define Global
#----------------------------------------------------------------

loadkeys fr-pc
export LANG=fr_FR.UTF-8
HOME="/home/xbmc"
clear


#----------------------------------------------------------------
# Config /etc/localtime
#----------------------------------------------------------------

ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime


#----------------------------------------------------------------
# Config /etc/hostname
#----------------------------------------------------------------

touch /etc/hostname
echo "XBMC" >> /etc/hostname


#----------------------------------------------------------------
# Config /etc/vconsole.conf
#----------------------------------------------------------------

touch /etc/vconsole.conf
echo "KEYMAP=fr-latin9" >> /etc/vconsole.conf
echo "FONT=" >> /etc/vconsole.conf
echo "FONT_MAP=" >> /etc/vconsole.conf


#----------------------------------------------------------------
# Config /etc/locale.conf
#----------------------------------------------------------------

touch /etc/locale.conf
echo "LANG=fr_FR.utf8" >> /etc/locale.conf
echo "LC_COLLATE=C" >> /etc/locale.conf

#----------------------------------------------------------------
# Config /etc/timezone
#----------------------------------------------------------------

touch /etc/timezone
echo "Europe/Paris" >> /etc/timezone


#----------------------------------------------------------------
# Config /etc/locale.gen
#----------------------------------------------------------------

sed -i 's/^#fr_FR.UTF-8 UTF-8/fr_FR.UTF-8 UTF-8/' /etc/locale.gen
sed -i 's/^#fr_FR ISO-8859-1/fr_FR ISO-8859-1/' /etc/locale.gen
locale-gen


#----------------------------------------------------------------
# Root Password
#----------------------------------------------------------------

echo -e "$white Mot de passe root :$nc"
passwd


#----------------------------------------------------------------
# Config /etc.pacman.conf
#----------------------------------------------------------------

sed -i 's/^SyncFirst   = pacman/SyncFirst = pacman yaourt package-query pacman-color pyalpm namcap/' /etc/pacman.conf
sed -i 's/^#SigLevel = Optional TrustedOnly/SigLevel = Optional TrustedOnly/' /etc/pacman.conf
echo [archlinuxfr] >> /etc/pacman.conf
echo 'Server = http://repo.archlinux.fr/$arch' >> /etc/pacman.conf


#----------------------------------------------------------------
# Config /etc/vimrc
#----------------------------------------------------------------

sed -i 16i"syntax on" /etc/vimrc # Config Vim


#----------------------------------------------------------------
# Create user and group xbmc
#----------------------------------------------------------------

groupadd xbmc
useradd -m -g users -G audio,lp,optical,storage,video,wheel,games,power,xbmc -s /bin/bash xbmc

# Get password
echo -e "$white Mot de passe utilisateur (xbmc) :$nc"
passwd xbmc


#----------------------------------------------------------------
# Config /etc/X11/xorg.conf.d/10-keyboard-layout.conf
#----------------------------------------------------------------

touch /etc/X11/xorg.conf.d/10-keyboard-layout.conf
echo "Section \"InputClass\"" >> /etc/X11/xorg.conf.d/10-keyboard-layout.conf
echo "	Identifier	\"Keyboard Layout\"" >> /etc/X11/xorg.conf.d/10-keyboard-layout.conf
echo "	MatchIsKeyboard	\"yes\"" >> /etc/X11/xorg.conf.d/10-keyboard-layout.conf
echo "	MatchDevicePath	\"/dev/input/event*\"" >> /etc/X11/xorg.conf.d/10-keyboard-layout.conf
echo "	Option	\"XkbLayout\"	\"fr\"" >> /etc/X11/xorg.conf.d/10-keyboard-layout.conf
echo "	Option	\"XkbVariant\"	\"latin9\"" >> /etc/X11/xorg.conf.d/10-keyboard-layout.conf
echo "EndSection" >> /etc/X11/xorg.conf.d/10-keyboard-layout.conf


#----------------------------------------------------------------
# Config /home/xbmc/.bashrc
#----------------------------------------------------------------

touch $HOME/.bashrc
echo "" >> $HOME/.bashrc
echo "#Alias xbmc" >> $HOME/.bashrc
echo "alias ll='ls -l'" >> $HOME/.bashrc
echo "alias la='ls -A'" >> $HOME/.bashrc
echo "alias l='ls -CF'" >> $HOME/.bashrc
echo "" >> $HOME/.bashrc
sed -i "s|^PS1='[\u@\h \W]\$ '|PS1='\[\e[1;32m\][\u@\h \W]\$\[\e[0m\] '|" $HOME/.bashrc
echo "PS1='\[\e[1;32m\][\u@\h \W]\$\[\e[0m\] '" >> $HOME/.bashrc
chown xbmc:users $HOME/.bashrc


#----------------------------------------------------------------
# Config /home/xbmc/.config/user-dirs.dirs
#----------------------------------------------------------------

mkdir $HOME/.config
chown xbmc:users $HOME/.config
touch $HOME/.config/user-dirs.dirs
echo 'XDG_DESKTOP_DIR="$HOME/Bureau"' >> $HOME/.config/user-dirs.dirs
echo 'XDG_TEMPLATES_DIR="$HOME/Travail"' >> $HOME/.config/user-dirs.dirs
echo 'XDG_PUBLICSHARE_DIR="$HOME/Public"' >> $HOME/.config/user-dirs.dirs
echo 'XDG_DOCUMENTS_DIR="$HOME/Document"' >> $HOME/.config/user-dirs.dirs
echo 'XDG_MUSIC_DIR="$HOME/Musique"' >> $HOME/.config/user-dirs.dirs
echo 'XDG_PICTURES_DIR="$HOME/Image"' >> $HOME/.config/user-dirs.dirs

mkdir $HOME/Bureau
mkdir $HOME/Travail
mkdir $HOME/Public
mkdir $HOME/Document
mkdir $HOME/Musique
mkdir $HOME/Image

chown xbmc:users $HOME/Bureau
chown xbmc:users $HOME/Travail
chown xbmc:users $HOME/Public
chown xbmc:users $HOME/Document
chown xbmc:users $HOME/Musique
chown xbmc:users $HOME/Image
chown xbmc:users $HOME/.config/user-dirs.dirs


#----------------------------------------------------------------
# Config /root/.bashrc
#----------------------------------------------------------------

echo "alias ls='ls --color=auto'" >> /root/.bashrc
echo "" >> /root/.bashrc
echo "#Alias Root" >> /root/.bashrc
echo "alias ll='ls -l'" >> /root/.bashrc
echo "alias la='ls -A'" >> /root/.bashrc
echo "alias l='ls -CF'" >> /root/.bashrc
echo "" >> /root/.bashrc
echo "PS1='\[\e[1;31m\][\u@\h \W]\$\[\e[0m\] '" >> /root/.bashrc


#----------------------------------------------------------------
# Config /etc/sudoers
#----------------------------------------------------------------

sed -i 's/^# %wheel ALL=(ALL) ALL/%wheel ALL=(ALL) ALL/' /etc/sudoers


#----------------------------------------------------------------
# Config /etc/samba/smb.conf
#----------------------------------------------------------------

echo "[global]" >> /etc/samba/smb.conf
echo "workgroup = Net" >> /etc/samba/smb.conf
echo "server string = XBMC" >> /etc/samba/smb.conf
echo "hosts allow = 192.168.0." >> /etc/samba/smb.conf
echo "printcap name = lpstat" >> /etc/samba/smb.conf
echo "load printers = yes" >> /etc/samba/smb.conf
echo "printing = cups" >> /etc/samba/smb.conf
echo "guest account = xbmc" >> /etc/samba/smb.conf
echo "log file = /var/log/samba/log.%m" >> /etc/samba/smb.conf
echo "max log size = 50" >> /etc/samba/smb.conf
echo "security = share" >> /etc/samba/smb.conf
echo "socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=16384" >> /etc/samba/smb.conf
echo "oplocks = False" >> /etc/samba/smb.conf
echo "level2 oplocks = true" >> /etc/samba/smb.conf
echo "read prediction = yes" >> /etc/samba/smb.conf
echo "local master = no" >> /etc/samba/smb.conf
echo "os level = 33" >> /etc/samba/smb.conf
echo "dns proxy = no" >> /etc/samba/smb.conf
echo "unix charset = UTF-8" >> /etc/samba/smb.conf
echo "dos charset = CP850" >> /etc/samba/smb.conf
echo "wins support = no" >> /etc/samba/smb.conf
echo " " >> /etc/samba/smb.conf
echo "[homes]" >> /etc/samba/smb.conf
echo "comment = Home Directories" >> /etc/samba/smb.conf
echo "browseable = no" >> /etc/samba/smb.conf
echo "writable = no" >> /etc/samba/smb.conf
echo " " >> /etc/samba/smb.conf
echo "[HOME XBMC]" >> /etc/samba/smb.conf
echo "comment = no comment" >> /etc/samba/smb.conf
echo "path = /home/xbmc/" >> /etc/samba/smb.conf
echo "public = yes" >> /etc/samba/smb.conf
echo "writable = yes" >> /etc/samba/smb.conf
echo "printable = no" >> /etc/samba/smb.conf
echo " " >> /etc/samba/smb.conf
echo "[XBMC CONFIG]" >> /etc/samba/smb.conf
echo "comment = no comment" >> /etc/samba/smb.conf
echo "path = /home/xbmc/.xbmc" >> /etc/samba/smb.conf
echo "public = yes" >> /etc/samba/smb.conf
echo "writable = yes" >> /etc/samba/smb.conf
echo "printable = no" >> /etc/samba/smb.conf


#----------------------------------------------------------------
# Config /lib/systemd/system/xbmc.service
#----------------------------------------------------------------

echo "[UNIT]" >> /lib/systemd/system/xbmc.service
echo "Description = Starts instance of XBMC using xinit" >> /lib/systemd/system/xbmc.service
echo "After = syslog.target" >> /lib/systemd/system/xbmc.service
echo " " >> /lib/systemd/system/xbmc.service
echo "[Service]" >> /lib/systemd/system/xbmc.service
echo "User = xbmc" >> /lib/systemd/system/xbmc.service
echo "Group = xbmc" >> /lib/systemd/system/xbmc.service
echo "Type = simple" >> /lib/systemd/system/xbmc.service
echo "ExecStart = /usr/bin/xinit /usr/bin/xbmc-standalone -- :0" >> /lib/systemd/system/xbmc.service
echo " " >> /lib/systemd/system/xbmc.service
echo "[Install]" >> /lib/systemd/system/xbmc.service
echo "WantedBy = multi-user.target" >> /lib/systemd/system/xbmc.service


#----------------------------------------------------------------
# Delete SysVinit And Install SystemD
#----------------------------------------------------------------

pacman -Rsn --noconfirm initscripts sysvinit
pacman -Syu --noconfirm systemd systemd-sysvcompat systemd-arch-units yaourt


#----------------------------------------------------------------
# Install XBMC
#----------------------------------------------------------------

clear
echo -e "$white" "Information :" "$nc" " XBMC classique ou PVR ?"

LISTE=("[c] Classique" "[p] PVR")
select CHOIX in "${LISTE[@]}" ; do
case $REPLY in

	1|c)
		echo -e "$white" "Installation :" "$nc" " XBMC"
		pacman -S --noconfirm xbmc
		clear
	break
	;;

	2|p)
		echo -e "$white" "Installation :" "$nc" " XBMC PVR "
		yaourt -S --noconfirm xbmc-eden-pvr-git tvheadend-git linuxtv-dvb-apps w_scan
		systemctl enable tvheadend.service

		clear
	break
	;;
	esac

done


#----------------------------------------------------------------
# Enable SystemD Service
#----------------------------------------------------------------

systemctl enable dbus.service
systemctl enable dhcpcd@eth0.service
systemctl enable acpid.service
systemctl enable smbd.service nmbd.service
systemctl enable bluetooth.service
systemctl enable sshd.service
systemctl enable xbmc.service


#----------------------------------------------------------------
# Final Config
#----------------------------------------------------------------

mkinitcpio -p linux
grub-install --directory=/usr/lib/grub/i386-pc --target=i386-pc --boot-directory=/boot --recheck --debug /dev/sda
sed -i 's/^GRUB_TIMEOUT=5/GRUB_TIMEOUT=0/' /etc/pacman.conf
grub-mkconfig -o /boot/grub/grub.cfg

echo "[Actions for xbmc user]" >> /var/lib/polkit-1/localauthority/50-local.d/xbmc.pkla
echo "Identity=unix-user:xbmc" >> /var/lib/polkit-1/localauthority/50-local.d/xbmc.pkla
echo "Action=org.freedesktop.devicekit.power.*;org.freedesktop.consolekit.system.*" >> /var/lib/polkit-1/localauthority/50-local.d/xbmc.pkla
echo "ResultActive=yes" >> /var/lib/polkit-1/localauthority/50-local.d/xbmc.pkla
echo "ResultAny=yes" >> /var/lib/polkit-1/localauthority/50-local.d/xbmc.pkla
echo "ResultInactive=no" >> /var/lib/polkit-1/localauthority/50-local.d/xbmc.pkla


#----------------------------------------------------------------
# Exit Chroot System
#----------------------------------------------------------------

clear
echo -e "$white Installation :$green terminé !$nc tapez $white exit $nc puis $white umount /mnt $nc et pour finir $white reboot $nc pour redémarrer :D"
exit
}


if [[ $# = 0 ]]; then
    __live
fi
if [[ $# = 1 && "$1" = 'setup' ]]; then
    __setup
fi
