Development Setup for Linux
Please read carefully and execute all commands in order.
GitHub Account
- Create an account: https://github.com/join
- Add your name + profile picture: https://github.com/settings/profile
- Enable 2FA
Important Note
👉 All commands in this guide are run in your terminal
Open your terminal (Ctrl + Alt + T on most systems)
👉 This guide assumes you are using a Debian-based distribution (Ubuntu, Linux Mint, etc.)
Update system packages
sudo apt update && sudo apt upgrade -y
Install essential tools
sudo apt install -y build-essential curl file git
Oh My Zsh
Install zsh:
sudo apt install zsh -y
Then install Oh My Zsh:
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
Press Y if prompted.
Visual Studio Code
Install VS Code:
sudo snap install code --classic
👉 If snap is not available, install from: https://code.visualstudio.com
Open VS Code
code .
VS Code Extensions
code --install-extension dbaeumer.vscode-eslint
code --install-extension esbenp.prettier-vscode
code --install-extension ms-python.python
code --install-extension ms-python.vscode-pylance
code --install-extension ms-toolsai.jupyter
code --install-extension alexcvzz.vscode-sqlite
Disable AI Features (for now)
Open VS Code:
Ctrl + Shift + P- Search:
aifeatures - Enable Disable and hide built-in AI features
GitHub CLI (gh) Setup (SSH)
Copy and paste these command into the terminal:
sudo apt install gh -y
1. Login with gh
Login. DO NOT edit the email field:
gh auth login -s 'user:email' --git-protocol ssh -w
2. You’ll be asked a few questions:
“What account do you want to log into?”
- Choose:
GitHub.com
“What is your preferred protocol?”
- Use the arrow keys to choose:
SSH
Why?
- No passwords when pushing
- More stable long-term workflow
“Generate a new SSH key?”
- Press
Enter(Yes)
👉 If you already have a key:
- Select your existing key instead
“Enter a passphrase”
- Optional, but recommended if you're security conscious
- This protects your key if your machine is compromised
- Press
enterwith the field blank to proceed without a passphrase
“Title for your SSH key”
- Default is fine (e.g.
GitHub CLI), pressenter
3. Browser authentication
You’ll see:
! First copy your one-time code: XXXX-XXXX
- Copy the code
- Press
Enter - Browser opens → paste code → approve access
👉 This creates a secure auth token stored locally (GitHub CLI)
4. Verify everything worked
gh auth status
You should see:
✓ Logged in to github.com as <your-username>
Python (pyenv)
Install dependencies:
sudo apt install -y make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev llvm libncurses5-dev \
libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev
Install pyenv
curl https://pyenv.run | bash
Add to shell:
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
exec zsh
Install Python
pyenv install 3.12
pyenv global 3.12
Check
python --version
Python Tools
pip install --upgrade pip
pip install virtualenv pipx
pipx ensurepath
Node.js (nvm)
Install nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
exec zsh
Install Node
nvm install 20
nvm use 20
Check
node -v
npm -v
SQLite
sudo apt install sqlite3 -y
sqlite3 --version
PostgreSQL
sudo apt install postgresql postgresql-contrib -y
Start service:
sudo service postgresql start
Test:
psql -U postgres
Exit:
\q
Final Check
python --version
node -v
npm -v
psql --version
sqlite3 --version
git --version
You’re Done!
Your machine is now ready for: