dotfiles/copy.sh

156 lines
4.5 KiB
Bash
Raw Normal View History

#!/bin/bash
2021-10-06 09:40:58 -04:00
echo "Initializing dotfiles..."
SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
FAKE_HOME="$SCRIPT_DIR/fake_home"
export f="$FAKE_HOME"
function require {
local success=true
for comm in "$@"; do
if ! command -v "$comm" &> /dev/null; then
echo "$comm must be installed!"
success=false
fi
done
if ! $success; then
echo "Missing copy.sh dependencies! Exiting!"
exit 1
fi
}
if ! command -v gron &> /dev/null; then
wget 'https://github.com/tomnomnom/gron/releases/download/v0.7.1/gron-linux-amd64-0.7.1.tgz' -O gron.tgz
tar -xvf gron.tgz
mv gron "$HOME/.bin"
rm gron.tgz
fi
2024-10-04 11:17:24 -04:00
require git wget curl find jq
2024-08-23 16:11:55 -04:00
mkdir -p "$HOME/.tmp" || exit 1
if command -v sudo &> /dev/null && ! command -v sofi &> /dev/null && ! test -f /usr/bin/sofi; then
2024-02-24 13:04:01 -05:00
echo -e '#!/bin/bash\n$HOME/.sofi.sh --launch' | sudo tee /usr/bin/sofi
2024-02-24 12:59:24 -05:00
sudo chmod +x /usr/bin/sofi
fi
git submodule init
git submodule update
dotdirs="$(find $FAKE_HOME -mindepth 1 -type d)"
2021-10-06 13:01:46 -04:00
echo "$dotdirs" | while read -r dotdir; do
new="$HOME${dotdir:${#FAKE_HOME}}"
if test -d "$new"; then
continue
fi
echo "mkdir -p $new"
mkdir -p "$new"
done
2021-10-06 13:32:36 -04:00
dotfiles="$(find $FAKE_HOME -mindepth 1 -type f)"
2021-10-06 13:50:04 -04:00
echo "$dotfiles" | while read -r dotfile; do
new="$HOME${dotfile:${#FAKE_HOME}}"
if [[ "$(realpath $dotfile)" == "$(realpath $new)" ]]; then
continue
fi
echo "$dotfile => $new"
ln -sf "$dotfile" "$new"
done
2021-10-06 13:50:04 -04:00
function add-export {
2024-01-25 20:54:24 -05:00
local final="$1\"$2\""
if grep "$final" "$HOME/.zsh_local" &> /dev/null; then
return
fi
2024-01-25 20:54:24 -05:00
if grep "$1" "$HOME/.zsh_local" &> /dev/null; then
echo "Replacing '$(grep "$1" "$HOME/.zsh_local")' with '$final'"
local escaped="$(echo "$1" | sed 's@/@\\/@g')"
sed -i "/$escaped/d" "$HOME/.zsh_local"
fi
echo "$final" >> "$HOME/.zsh_local"
}
add-export "export DOT_DIR=" "$SCRIPT_DIR"
add-export "export f=" "$FAKE_HOME"
if [[ "$1" == "--files-only" ]]; then
exit 0
fi
2023-08-26 00:44:39 -04:00
if ! command -v cargo &> /dev/null; then
echo "Rust is not installed. Installing..."
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
fi
. "$HOME/.cargo/env"
2023-08-26 00:44:39 -04:00
if command -v cargo &> /dev/null && ! command -v bat &> /dev/null; then
echo "Bat is not installed. Installing..."
cargo install bat
fi
if ! test -d "$HOME/.nvm"; then
echo "nvm is not installed. Installing..."
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
nvm install 14
nvm install 18
nvm install node
nvm use node
2021-10-06 13:32:36 -04:00
fi
if command -v sudo &> /dev/null && ! command -v dotnet &> /dev/null; then
echo "dotnet is not installed. Installing..."
wget https://dot.net/v1/dotnet-install.sh -O $HOME/.tmp/dotnet-install.sh
chmod +x $HOME/.tmp/dotnet-install.sh
$HOME/.tmp/dotnet-install.sh --version latest
rm $HOME/.tmp/dotnet-install.sh
fi
2023-08-26 00:44:39 -04:00
if ! command -v starship &> /dev/null; then
echo "starship is not installed. Installing..."
2023-12-13 14:00:47 -05:00
curl -sS https://starship.rs/install.sh | sh
fi
2023-08-26 00:44:39 -04:00
if ! test -d $HOME/.config/JetBrains/; then
echo "JetBrains toolbox is not installed. Installing..."
2023-08-26 00:41:41 -04:00
ARCHIVE_URL="$(curl -s 'https://data.services.jetbrains.com/products/releases?code=TBA&latest=true&type=release' | grep -Po '"linux":.*?[^\\]",' | awk -F ':' '{print $3,":"$4}'| sed 's/[", ]//g')"
wget -q --show-progress -cO "$HOME/.tmp/jetbrains-toolbox-latest.tar.gz" "$ARCHIVE_URL"
cd $HOME/.tmp/
2023-08-26 00:41:41 -04:00
tar -xvf jetbrains-toolbox-latest.tar.gz --strip-components=1
chmod +x jetbrains-toolbox
./jetbrains-toolbox
fi
2024-01-08 18:49:57 -05:00
mkdir -p "$HOME/.local/share/fonts"
if ! test -f "$HOME/.local/share/fonts/FiraCodeNerdFontMono-Medium.ttf"; then
echo "FiraCode is not installed. Installing..."
wget -O $HOME/.tmp/firacode.zip "https://github.com/ryanoasis/nerd-fonts/releases/download/v3.1.1/FiraCode.zip"
unzip -d "$HOME/.local/share/fonts" $HOME/.tmp/firacode.zip
rm $HOME/.tmp/firacode.zip
2024-01-08 18:49:57 -05:00
fc-cache -f -v
fi
if [[ "$(hostname)" != "sage-bigboy" ]]; then
curdir="$(pwd)"
cd $SCRIPT_DIR || exit 1
if test -d git-mirror-machine; then
cd git-mirror-machine
git pull
else
git clone 'https://git.sagev.space/sage/git-mirror-machine.git'
cd git-mirror-machine
fi
cd "$curdir" || exit 1
fi
2023-08-26 00:44:39 -04:00
if ! command -v fzf &> /dev/null; then
echo "You may wish to install fzf for sofi and other search"
2021-10-06 13:32:36 -04:00
fi