#!/bin/bash # Last updated: 7/4/2026 # This was designed for Linux Mint 22.2; most of it should work for other distros. the desktop-environment.sh code will probably need to be different for anything that's not Cinnamon. # Some things here require manual install because they aren't in apt repositories, don't have another stable installation source, and I don't want to rely on a static download location. # These things will all be put into a TODO.md file in the current directory along with brief notes/instructions. touch todo.md sudo mkdir -p /usr/local/bin sudo chmod 755 /usr/local/bin sudo apt-get update INSTALL_USER=$(whoami) ####################### ## DEV/PROGRAMMING ## ## ESSENTIAL TOOLS ## ####################### echo "## dev/programming & essential tools/programs" | tee todo.md -a echo "* install drivers & such" | tee todo.md -a # Install some apt packages sudo apt-get upgrade -y sudo apt-get install -y curl git jq build-essential unzip tree # for development sudo apt-get install -y ripgrep # I honestly don't remember why I installed these # Install Python & uv (package/version manager) curl -LsSf https://astral.sh/uv/install.sh | sh source $HOME/.local/bin/env # install latest version of python with default `python` and `python3` executables uv python install --default # Node.js 24 (with nvm - https://github.com/nvm-sh/nvm) # also required for pyright language server (neovim) curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.5/install.sh | bash \. "$HOME/.nvm/nvm.sh" # in lieu of restarting the shell nvm install 24 # install a nerd font (provides special symbols for zsh/starship) sudo mkdir -p /usr/share/fonts/truetype/DejaVuSansMono/ sudo unzip ./utils/DejaVuSansMono.zip /usr/share/fonts/truetype/DejaVuSansMono/ # zsh (better shell) sudo apt-get install -y zsh sudo chsh $INSTALL_USER -s /bin/zsh cp ./utils/dotzshrc "$HOME/.zshrc" # starship (shell prompt) curl -sS https://starship.rs/install.sh | sudo sh -s -- -y # echo 'eval "$(starship init zsh)"' | tee "$HOME/.zshrc" -a # should already be in zshrc mkdir -p "$HOME/.config" cp ./utils/starship.toml "$HOME/.config/starship.toml" # Neovim curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.tar.gz sudo rm -rf /opt/nvim-linux-x86_64 sudo tar -C /opt -xzf nvim-linux-x86_64.tar.gz rm nvim-linux-x86_64.tar.gz echo 'export PATH="$PATH:/opt/nvim-linux-x86_64/bin"' | tee "$HOME/.bashrc" -a git clone https://gitea.jovan04.com/evan/neovim-config "$HOME/.config/nvim" echo "* install pyright language server (and any other relevant ones)" | tee todo.md -a # install VS Code wget "https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-x64" -O "vs-code-linux-x64.deb" echo "code code/add-microsoft-repo boolean true" | sudo debconf-set-selections sudo apt-get install -y ./vs-code-linux-x64.deb rm ./vs-code-linux-x64.deb echo "* investigate and install other IDE(s)" | tee todo.md -a # Brave browser curl -fsS https://dl.brave.com/install.sh | sh # GitHub SSH keys echo "* generate new SSH key and add to GitHub?" | tee todo.md -a # things I'd rather not install but have to # Discord (chat) wget "https://discord.com/api/download?platform=linux&format=deb" -O "discord-linux.deb" sudo apt-get install -y ./discord-linux.deb rm ./discord-linux.deb mkdir -p "$HOME/.config/discord" echo '{ "DANGEROUS_ENABLE_DEVTOOLS_ONLY_ENABLE_IF_YOU_KNOW_WHAT_YOURE_DOING": true }' | tee "$HOME/.config/discord/settings.json" echo "* find discord replacement" | tee todo.md -a # Zoom (video call) echo "* install Zoom (video call)" | tee todo.md -a ############################ ## WORKFLOW/SMALL TOOLS ## ############################ echo "## workflow helpers, small tools, and utilities" | tee todo.md -a # pbcopy/pbpaste (from macOS) sudo apt-get install -y xclip printf '#!/bin/bash \nxclip -selection clipboard' | sudo tee /usr/local/bin/pbcopy sudo chown 1000:1000 /usr/local/bin/pbcopy chmod 755 /usr/local/bin/pbcopy printf '#!/bin/bash \nxclip -selection clipboard -o' | sudo tee /usr/local/bin/pbpaste sudo chown 1000:1000 /usr/local/bin/pbpaste chmod 755 /usr/local/bin/pbpaste # WordNet & def utility sudo apt-get install -y wordnet printf '#!/bin/bash \nwn $1 -over' | sudo tee /usr/local/bin/def sudo chown 1000:1000 /usr/local/bin/def chmod 755 /usr/local/bin/def # Artha (WordNet dictionary) sudo apt-get install -y artha # qpdf (pdf manipulation) sudo apt-get install -y qpdf # rndrmarkdown markdown renderer sudo apt-get install -y pandoc sudo cp ./utils/rndrmarkdown /usr/local/bin/rndrmarkdown sudo chown 1000:1000 /usr/local/bin/rndrmarkdown sudo chmod 755 /usr/local/bin/rndrmarkdown echo 'alias rmd="rndrmarkdown"' | tee "$HOME/.bashrc" -a # readline (for piping 1 line into wc) printf '#!/bin/bash \necho "$(head -n $1 $2 | tail -n 1)"' | sudo tee /usr/local/bin/rline sudo chown 1000:1000 /usr/local/bin/rline chmod 755 /usr/local/bin/rline # Calc (command-line calculator) sudo apt-get install -y calc # OpenSSH server sudo apt-get install -y openssh-server # Wine (run windoze apps) sudo add-apt-repository -y ppa:ubuntu-wine/ppa sudo apt-get update sudo apt-get install -y wine # Gpick (color picker) sudo apt-get install -y gpick # ksnip (screenshot) sudo apt-get install -y ksnip # btop (system resource monitor) sudo apt-get install -y btop ########################## ## SPECIALTY PROGRAMS ## ########################## source ./user-programs.sh ########################### ## DESKTOP ENVIRONMENT ## ########################### # designed & tested on Cinnamon 6.4.8 source ./desktop-env.sh ###################### ## REMOVING STUFF ## ###################### source ./removing-stuff.sh echo "Installation and setup finished. You must log out and log back in for all changes to take effect." read -p "Press enter to log out." cinnamon-session-quit --logout --no-prompt