(bash) add setup.sh for zima
This commit is contained in:
parent
c6ea262073
commit
f559df3874
1 changed files with 150 additions and 0 deletions
150
bash/setup.zima.sh
Normal file
150
bash/setup.zima.sh
Normal file
|
|
@ -0,0 +1,150 @@
|
|||
#!/bin/bash
|
||||
|
||||
# ---------------------------------------------------------
|
||||
# THIS SCRIPT ASSUMES IT IS RUNNING WITH ROOT PRIVILEDGES.|
|
||||
# ---------------------------------------------------------
|
||||
|
||||
# this script installs all the binaries and creates the symbolic links needed for
|
||||
# a minimal setup in the zimaboard running Ubuntu 24.04
|
||||
|
||||
command_exists() {
|
||||
command -v "$1" >/dev/null 2>&1
|
||||
}
|
||||
|
||||
sudo apt update -y
|
||||
|
||||
# install essentials
|
||||
sudo apt install wget curl git
|
||||
|
||||
# add github ssh key
|
||||
echo "Enter GitHub SSH Key (press Ctrl+D to end)":
|
||||
IFS=read -r -d '' gh_key
|
||||
|
||||
echo "Saving key in ~/.ssh/ghkey"
|
||||
mkdir -p ~/.ssh
|
||||
echo "$ghkey" > ~/.ssh/gh_key
|
||||
|
||||
echo "Update GitHub SSH Key permissions"
|
||||
chmod 0600 ~/.ssh/gh_key
|
||||
|
||||
echo "Add key to ssh-agent"
|
||||
eval $(ssh-agent)
|
||||
ssh-add ~/.ssh/gh_key
|
||||
|
||||
# setup git
|
||||
git config --global user.email "46619361+juancwu@users.noreply.github.com"
|
||||
git config --global user.name "jc"
|
||||
|
||||
DOTFILES_REPO_URL=git@github.com:juancwu/dotfiles.git
|
||||
DOTFILES_DIR=/opt/dotfiles
|
||||
DOTFILES_GROUP=dotfiles
|
||||
|
||||
# clone dotfiles
|
||||
mkdir -p $DOTFILES_DIR
|
||||
git clone $DOTFILES_REPO_URL $DOTFILES_DIR
|
||||
|
||||
# create new dotfiles group
|
||||
groupadd $DOTFILES_GROUP
|
||||
|
||||
# update dotfiles repo permissions and ownership
|
||||
chown -R "root:$DOTFILES_GROUP" "$DOTFILES_DIR"
|
||||
chmod 0770 "$DOTFILES_DIR"
|
||||
find "$DOTFILES_DIR" -type f -exec chmod 0660 {} \;
|
||||
find "$DOTFILES_DIR" -type d -exec chmod 0770 {} \;
|
||||
|
||||
# create ghq directory
|
||||
GHQ_DIR=/opt/ghq
|
||||
mkdir "$GHQ_DIR"
|
||||
|
||||
# create new ghq group, all repositories are going to be cloned here
|
||||
# easier to share and manage repositories that multiple users depend on
|
||||
GHQ_GROUP=ghq
|
||||
groupadd "$GHQ_GROUP"
|
||||
chown -R "root:$GHQ_GROUP" "$GHQ_DIR"
|
||||
chmod 0770 "$GHQ_DIR"
|
||||
find "$GHQ_DIR" -type f -exec chmod 0660 {} \;
|
||||
find "$GHQ_DIR" -type d -exec chmod 0770 {} \;
|
||||
|
||||
# install pnpm
|
||||
if command_exists "pnpm"; then
|
||||
echo "pnpm detected, skip installation."
|
||||
else
|
||||
curl -fsSL https://get.pnpm.io/install.sh | sh -
|
||||
fi
|
||||
|
||||
# install lazygit
|
||||
if command_exists "lazygit"; then
|
||||
echo "lazygit detected, skip installation."
|
||||
else
|
||||
LAZYGIT_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazygit/releases/latest" | grep -Po '"tag_name": "v\K[^"]*')
|
||||
curl -Lo lazygit.tar.gz "https://github.com/jesseduffield/lazygit/releases/latest/download/lazygit_${LAZYGIT_VERSION}_Linux_x86_64.tar.gz"
|
||||
tar xf lazygit.tar.gz lazygit
|
||||
install lazygit /usr/local/bin
|
||||
rm lazygit lazygit.tar.gz
|
||||
fi
|
||||
|
||||
# install rustup
|
||||
if command_exists "rustup"; then
|
||||
echo "rustup detected, skip installation."
|
||||
else
|
||||
# make sure to install in /opt to make it available systemwide
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
|
||||
fi
|
||||
|
||||
# install golang
|
||||
if command_exists "go"; then
|
||||
echo "go detected, skip installation."
|
||||
else
|
||||
GO_ARCH="linux-amd64"
|
||||
GO_VERSION="go1.23.0"
|
||||
GO_URL="https://go.dev/dl/$GO_VERSION.$GO_ARCH.tar.gz"
|
||||
wget $GO_URL
|
||||
sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf $GO_VERSION
|
||||
rm "$GO_VERSION.$GO_ARCH.tar.gz"
|
||||
fi
|
||||
|
||||
# install nvm
|
||||
if [ -z "$NVM_DIR" ]; then
|
||||
export NVM_DIR="/opt/.nvm"
|
||||
mkdir -p $NVM_DIR
|
||||
echo "Creating new nvm group to allow nvm management (i.e. install new node versions)"
|
||||
groupadd nvm
|
||||
(
|
||||
git clone https://github.com/nvm-sh/nvm.git "$NVM_DIR"
|
||||
cd "$NVM_DIR"
|
||||
git checkout `git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1)`
|
||||
) && \. "$NVM_DIR/nvm.sh"
|
||||
chown -R root:nvm "$NVM_DIR"
|
||||
find "$NVM_DIR" -type f -exec chmod 0660 {} \;
|
||||
find "$NVM_DIR" -type d -exec chmod 0770 {} \;
|
||||
# post installation configuration
|
||||
NVM_LINES='
|
||||
export NVM_DIR="/opt/.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
|
||||
'
|
||||
# Append to .bashrc if not already present
|
||||
if ! grep -q 'export NVM_DIR="/opt/.nvm"' "$HOME/.bashrc"; then
|
||||
echo "$NVM_LINES" >> "$HOME/.bashrc"
|
||||
echo "NVM lines added to .bashrc"
|
||||
else
|
||||
echo "NVM lines already present in .bashrc"
|
||||
fi
|
||||
else
|
||||
echo "nvm detected, skip installation."
|
||||
fi
|
||||
|
||||
# install asadesuka, for checking sunset/sunrise
|
||||
if command_exists "asadesuka"; then
|
||||
echo "asadesuka detected, skip installation."
|
||||
else
|
||||
ASA_ARCH="Linuxx86_64"
|
||||
ASA_VERSION="v1.2.1"
|
||||
ASA_URL="https://github.com/juancwu/asadesuka/releases/download/$ASA_VERSION/asadesuka$ASA_ARCH.tar.gz"
|
||||
mkdir asa_tmp
|
||||
wget $ASA_URL -O asa_tmp/asa.tar.gz
|
||||
tar -C asa_tmp -xzf asa_tmp/asa.tar.gz
|
||||
sudo mv asa_tmp/asadesuka /usr/bin
|
||||
rm -r asa_tmp
|
||||
echo "Remember to set the ASA_LAT and ASA_LNG variables in .bashrc"
|
||||
fi
|
||||
Loading…
Add table
Add a link
Reference in a new issue