diff --git a/setup/modules/shell-setup-new.sh b/setup/modules/shell-setup-new.sh new file mode 100644 index 0000000..0205b26 --- /dev/null +++ b/setup/modules/shell-setup-new.sh @@ -0,0 +1,136 @@ + +#!/bin/bash +set -e # Exit on error + +#="\e[0m"# Colors for better UX + +log() { echo -e "${GREEN}✔ $1${RESET}"; } +skip() { echo -e "${YELLOW}↷ $1${RESET}"; } + +# Update system +log "Updating system..." +sudo pacman -Syu --noconfirm + +# Install base packages (including nvim) +PACKAGES=(zsh neovim curl pyright bash atftp bash-language-server btop clang fastfetch fzf hyfetch lua-language-server micro nano pulsemixer yazi z qrencode distrobox dysk python python-pip) +for pkg in "${PACKAGES[@]}"; do + if ! pacman -Qi "$pkg" &>/dev/null; then + log "Installing $pkg..." + sudo pacman -S --noconfirm "$pkg" + else + skip "$pkg already installed." + fi +done + +# Install yay if not installed +if ! command -v yay &>/dev/null; then + log "Installing yay..." + sudo pacman -S --noconfirm git base-devel + git clone https://aur.archlinux.org/yay.git /tmp/yay + cd /tmp/yay && makepkg -si --noconfirm + cd ~ +else + skip "yay already installed." +fi + +# Install Rust & Cargo if not installed +if ! command -v cargo &>/dev/null; then + log "Installing Rust & Cargo..." + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y + source "$HOME/.cargo/env" +else + skip "Rust & Cargo already installed." +fi + +# Install nvm and Node.js if not installed +if ! command -v node &>/dev/null; then + log "Installing nvm and Node.js..." + if [ ! -d "$HOME/.nvm" ]; then + curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash + fi + source "$HOME/.nvm/nvm.sh" + nvm install 22 +else + skip "Node.js already installed." +fi + +# Verify npm +if ! command -v npm &>/dev/null; then + log "npm should be installed with Node.js. Please check your PATH." +else + skip "npm already available." +fi + +# Git config +git config --global core.editor nvim + +# Dotfiles setup +log "Setting up dotfiles..." +mkdir -p ~/.config ~/Pictures + +ln -sf ~/Dotfiles/.bashrc ~/.bashrc +ln -sf ~/Dotfiles/.zshrc ~/.zshrc +ln -sf ~/Dotfiles/starship.toml ~/.config/starship.toml + +rm -rf ~/.config/micro +cp -r ~/Dotfiles/micro ~/.config/ + +# Vim Plug installer +if [ ! -f ~/.local/share/nvim/site/autoload/plug.vim ]; then + curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs \ + https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim +fi + +rm -rf ~/.config/nvim +ln -sf ~/Dotfiles/nvim ~/.config/nvim +mkdir -p ~/.local/share/nvim/site/plugged/vim-airline-themes/autoload/airline/themes +cp -f ~/Dotfiles/nvim/cyberqueer.vim ~/.local/share/nvim/site/plugged/vim-airline-themes/autoload/airline/themes/ + +rm -rf ~/.config/yazi +ln -sf ~/Dotfiles/yazi ~/.config/yazi + +rm -rf ~/.config/spotify-tui +ln -sf ~/Dotfiles/spotify-tui ~/.config/spotify-tui + +cp -f ~/Dotfiles/resources/fflogo.svg ~/Pictures/fflogo.svg + +# Install Starship if not installed +if ! command -v starship &>/dev/null; then + log "Installing Starship..." + curl -sS https://starship.rs/install.sh | sh +else + skip "Starship already installed." +fi + +# Install oh-my-zsh if not installed +if [ ! -d "$HOME/.oh-my-zsh" ]; then + log "Installing oh-my-zsh..." + sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" +else + skip "oh-my-zsh already installed." +fi + +# Install oh-my-zsh plugins if not installed +ZSH_CUSTOM=${ZSH_CUSTOM:-~/.oh-my-zsh/custom} +if [ ! -d "$ZSH_CUSTOM/plugins/zsh-syntax-highlighting" ]; then + git clone https://github.com/zsh-users/zsh-syntax-highlighting.git "$ZSH_CUSTOM/plugins/zsh-syntax-highlighting" +else + skip "zsh-syntax-highlighting already installed." +fi +if [ ! -d "$ZSH_CUSTOM/plugins/zsh-autosuggestions" ]; then + git clone https://github.com/zsh-users/zsh-autosuggestions "$ZSH_CUSTOM/plugins/zsh-autosuggestions" +else + skip "zsh-autosuggestions already installed." +fi + +# Set zsh as default shell if not already +if [ "$SHELL" != "/usr/bin/zsh" ]; then + log "Setting zsh as default shell..." + chsh -s /usr/bin/zsh +else + skip "zsh is already the default shell." +fi + +log "✅ Setup complete!" +GREEN="\e[32m" +YELLOW="\e[33m"