#!/bin/bash #Zebra #Linux Onboarding Oneshot script for izebra networks. #Installs fish, starship, and sets up some shell tweaks that are nice to have. #Check script is running as root if [ "$EUID" -ne 0 ] then echo "Please run as Root" exit 1 fi #define variables fishconfig="https://git.izebra.net/izebra_projects/rmm-scripts/raw/branch/main/config-files/config.fish" starshipconfig="https://git.izebra.net/izebra_projects/rmm-scripts/raw/branch/main/config-files/starship.toml" #Add fish shell repo and install echo Installing fish... sudo apt-add-repository --yes ppa:fish-shell/release-3 sudo apt update sudo apt install fish -y #install other tools required sudo apt install unzip #install Meslo Nerd Font echo Downloading and installing meslo font... mkdir /tmp/meslo wget -O /tmp/meslo/MesloLGS\ NF\ Regular.ttf https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Regular.ttf wget -O /tmp/meslo/MesloLGS\ NF\ Bold\ Italic.ttf https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold%20Italic.ttf wget -O /tmp/meslo/MesloLGS\ NF\ Bold.ttf https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold.ttf wget -O /tmp/meslo/MesloLGS\ NF\ Italic.ttf https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Italic.ttf sudo cp /tmp/meslo/Meslo* /usr/share/fonts/ sudo fc-cache #Copy fish config file to root and all users under /home/ echo Downloading Fish Config File. Storing in $HOME/.config/fish/config.fish wget -O "$HOME/.config/fish/config.fish" $fishconfig # Iterate over each user's home directory, including /root for homedir in /root /home/*; do if [ -d "$homedir" ]; then # Ensure .config directory exists echo Creating dir structure for $homedir mkdir -p "$homedir/.config" mkdir -p "$homedir/.config/fish" # Copy starship.toml to the user's .config directory echo copying fish config to $homedir/.config/fish/config.fish cp -f "$HOME/.config/fish/config.fish" "$homedir/.config/fish/config.fish" # Set ownership to the user of the home directory echo Taking ownership of file under UID $homedir chown -R $(basename "$homedir"):"$(id -gn $(basename "$homedir"))" "$homedir/.config/" # Optional: Set permissions to 0644 (readable by owner and group, readable by others) echo setting file perms chmod 0644 "$homedir/.config/fish/config.fish" fi done #install pyenv curl https://pyenv.run | bash #Download starship and copy config file to root and all users under /home/ echo Downloading starship installer to $HOME/starship.sh wget -O $HOME/starship.sh https://starship.rs/install.sh chmod +x $HOME/starship.sh sh $HOME/starship.sh --force rm $HOME/starship.sh wget -O "$HOME/.config/starship.toml" $starshipconfig # Iterate over each user's home directory, including /root for homedir in /root /home/*; do if [ -d "$homedir" ]; then # Ensure .config directory exists echo Creating directories for $homedir mkdir -p "$homedir/.config" # Copy starship.toml to the user's .config directory echo Copying config file to $homedir/.config/starship.toml cp -f "$HOME/.config/starship.toml" "$homedir/.config/starship.toml" # Set ownership to the user of the home directory echo Setting ownership for $homedir chown -R $(basename "$homedir"):"$(id -gn $(basename "$homedir"))" "$homedir/.config" # Optional: Set permissions to 0644 (readable by owner and group, readable by others) chmod 0644 "$homedir/.config/starship.toml" fi done #Change default shell to fish echo Changing default shell to fish # Minimum UID for regular user accounts (adjust as necessary) MIN_UID=1000 # Loop through all users in /etc/passwd while IFS=: read -r username _ uid _ _ homedir _; do # Skip system accounts and users without a home directory if [[ $uid -ge $MIN_UID && -d $homedir ]]; then echo "Changing shell for user: $username" sudo chsh -s /usr/bin/fish "$username" if [ $? -ne 0 ]; then echo "Failed to change shell for user: $username" fi else echo "Skipping system account or user without home directory: $username" fi done < /etc/passwd chsh -s /usr/bin/fish