#!/bin/bash # cannot be used by multiple user, pacman.conf will be linked to the last invocating user scriptdir=$(dirname $(realpath $BASH_SOURCE)) echo "script dir $scriptdir" econfigdir=$(realpath $scriptdir/..) echo "Setting up configs linking to $econfigdir" echo "" function Sudo { local firstArg=$1 if [ $(type -t $firstArg) = function ] then shift && command sudo bash -c "$(declare -f $firstArg);$firstArg $*" elif [ $(type -t $firstArg) = alias ] then alias sudo='\sudo ' eval "sudo $@" else command sudo "$@" fi } link_file() { echo "linking file $2" if [ $(readlink -f $2) -ef $1 ]; then echo " is already linked like that" else ln -sbfv $1 $2 fi echo "" } link_folder() { echo "linking folder $2" if [ $(is_link $2) -eq 0 ]; then # it is still a directory, create backup echo " is a dir (pointing to $(readlink -f $2)), creating backup at $2_original" mv -fvT --backup=numbered $2 $2_original fi if [ $(readlink -f $2) -ef $1 ]; then echo " is already linked like that" else ln -sbfvn $1 $2 fi echo "" } is_link() { if [ $(readlink -f $1) = $1 ]; then echo 0 else echo 1 fi } # bashrc link_file $econfigdir/home/bashrc $HOME/.bashrc link_folder $econfigdir/home/bashrc.d $HOME/.bashrc.d # bash_aliases link_file $econfigdir/home/bash_aliases $HOME/.bash_aliases # profile link_file $econfigdir/home/profile $HOME/.profile link_folder $econfigdir/home/profile.d $HOME/.profile.d # git config link_folder $econfigdir/config/git $HOME/.config/git # pacman Sudo link_file $econfigdir/etc/pacman.conf /etc/pacman.conf # i3 config link_folder $econfigdir/config/i3 $HOME/.config/i3 mv $HOME/.i3 $HOME/.i3_original > /dev/null 2>&1 # alacritty link_folder $econfigdir/config/alacritty $HOME/.config/alacritty # tmux link_file $econfigdir/home/tmux.conf $HOME/.tmux.conf link_folder $econfigdir/config/tmux $HOME/.config/tmux # ranger link_folder $econfigdir/config/ranger $HOME/.config/ranger # starship link_folder $econfigdir/config/starship $HOME/.config/starship # bin link_file $econfigdir/bin/wtk_connect-vpn $HOME/.local/bin/wtk_connect-vpn link_file $econfigdir/bin/dmount $HOME/.local/bin/dmount link_file $econfigdir/bin/dumount $HOME/.local/bin/dumount # nvim link_folder $econfigdir/config/nvim $HOME/.config/nvim # lvim link_folder $econfigdir/config/lvim $HOME/.config/lvim # gdbinit link_file $econfigdir/home/gdbinit $HOME/.gdbinit # dunst link_folder $econfigdir/config/dunst $HOME/.config/dunst # mplayer link_folder $econfigdir/home/mplayer $HOME/.mplayer