#!/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 # 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