133 lines
3.1 KiB
Bash
Executable File
133 lines
3.1 KiB
Bash
Executable File
#!/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
|
|
|
|
# configs
|
|
mkdir -p $HOME/.config
|
|
|
|
# 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
|
|
|
|
# niri config
|
|
link_folder $econfigdir/config/niri $HOME/.config/niri
|
|
|
|
# waybar config
|
|
link_folder $econfigdir/config/waybar $HOME/.config/waybar
|
|
|
|
# mako config
|
|
link_folder $econfigdir/config/mako $HOME/.config/mako
|
|
|
|
# fuzzel config
|
|
link_folder $econfigdir/config/fuzzel $HOME/.config/fuzzel
|
|
|
|
# alacritty
|
|
link_folder $econfigdir/config/alacritty $HOME/.config/alacritty
|
|
|
|
# pywal
|
|
link_folder $econfigdir/config/wal $HOME/.config/wal
|
|
|
|
# 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
|
|
mkdir -p $HOME/.local/bin
|
|
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
|
|
|
|
# lazyvim
|
|
link_folder $econfigdir/config/nvim-lazy $HOME/.config/nvim
|
|
|
|
# gdbinit
|
|
link_file $econfigdir/home/gdbinit $HOME/.gdbinit
|
|
|
|
# dunst
|
|
link_folder $econfigdir/config/dunst $HOME/.config/dunst
|
|
|
|
# atuin
|
|
link_folder $econfigdir/config/atuin $HOME/.config/atuin
|
|
|
|
# mplayer
|
|
link_folder $econfigdir/home/mplayer $HOME/.mplayer
|
|
|
|
# systemd user
|
|
mkdir -p $HOME/.local/share/systemd/user
|
|
link_folder $econfigdir/local_share/systemd/user $HOME/.local/share/systemd/user
|
|
systemctl --user daemon-reload
|